2011-01-30 24 views
5

私は、リモートセンシング画像処理と画像シーケンスループについて私のプロジェクトに取り組んできました。結果として得られる各画像(JPEGまたはPNG形式)は、約8000 * 4000ピクセルです。私たちのユーザーは通常、一度に関心領域に基づいて画像シーケンス(50以上の画像)をループしたいと考えています。そこで、ユーザの視覚化クライアントサイズに応じて、各画像から必要な視域を抽出しなければならない。たとえば、ユーザーの現在のクライアントビューが640 * 480の場合、現在のx(列)とy(行)座標に基づいて、元の各イメージから640 * 480データブロックのサイズを見つけて、クライアントビュー。ユーザーがマウスでドラッグして別の表示領域に移動すると、できるだけ早く各プログラムから領域データを再ロードする必要があります。大きなJPEG/PNG画像シーケンスループ

long ReadRectangle(long x0、long y0、long x1、long y1、char * RectData)などの組み込みのデータブロック読み取りルーチンはありません。 long ReadInaRectangle(long x0、long y0、短い幅、短い高さ、char * RectData);

組み込みのJPEGデコンプレッサには、この種の機能がありません。私は、JPEG2000形式には画像の特定領域を伸張するための規定があることを知っています。私はJEPGについて完全にはわかりません。

誰かがCreateFileMapping、MapViewOfFile、およびCreateDIBSectionを使用して、ビューにマップするファイルマッピングのバイト数をコミットすることをお勧めします。 * .raw、* .img、* .bmpなどの単純なフラットバイナリイメージフォーマットとは異なり、JPEGのBlobには画像データだけでなく、複雑なJPGヘッダも含まれます。したがって、JPEGファイルからデータビューのブロックをマップするのは簡単ではありません。

mnayの一般的な画像ビジュアライゼーション(Google Earthなど)やGISアプリケーション(WebGISなど)と同様に、画像タイリングや画像ピラミッド技術を使用してサブ画像を生成することをお勧めします。

どうすればこの問題を解決できますか?

ありがとうございました。

ゴールデン・リー

答えて

0

それはgd libraryと簡単です。 LibGDは、プログラマが動的に画像を作成するためのオープンソースコードライブラリです。

+0

このリンクは質問に答えるかもしれませんが、回答の重要な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 – Stewbob

+0

@Stewbob:答えはリンクの後ろではありません。答えは "gdライブラリでは簡単です"で、gbライブラリへのリンクが含まれています。 IMHO、これはOKです。 –

3

リージョンの座標が8の倍数であれば問題ありません。ijgのJPEGライブラリは、一部のJPEG画像を読み込む際に役立ちます。あなたがしたいと思います

  1. は、画像全体のすべてのDCT係数を取得します。ここにはexample of how to do thisがあります。はい、これは画像全体のエントロピーデコードを伴いますが、これはJPEGデコードのより安価なステップです(IDCTは最も高価ですが、避けています)。
  2. 必要のないブロック(各ブロックは8x8で構成されています)の係数を取り除きます。これは手作業で行う必要がありますが、レイアウトは非常に単純なので(ブロックはスキャンライン順になっています)、それほど難しくありません。
  3. 各フレームにブロック逆DCTを適用します。あなたはおそらくIJGにあなたのためにそれをさせることができます。できない場合は、独自のIDCTと色変換を[0、255]に戻す必要があります。なぜなら、強度はJPEGの世界では[-127,128]であるからです。
  4. すべてうまくいくと、デコードされたJPEG画像が得られます。 chroma subsamplingのために、ルマとクロマチャンネルは異なるディメンションになる可能性があります。スケーリングによってこれを自分で補う必要があります。

最初の2つのステップは、かなり多くのリンクでカバーされています。 4番目は非常に簡単です(IJGインターフェイスを使用してクロマサブサンプリングのタイプを得ることができます。スケールアップ - 基本的にアップサンプリング - OpenCVや独自のコードを使用して簡単に達成できます)。 3番目のはまだ試していないものですが、可能なように聞こえます。

+1

+1:ただし、異なる色成分のリスケールと色変換を追加することができます。 –

+0

それを指摘してくれてありがとう。私は答えを更新しました。ところで、IJGはIDCTステップの一環として色変換を行いますので、IDCT用に別のライブラリを使用している場合は、自分で行う必要があります。 – misha

関連する問題