コンテンツにスキップ

アプリケーションノート: JPEG圧縮#

このアプリケーションノートでは、Basler JPEG圧縮Operatorの使用方法について説明しています(アプリケーションノート SAN013)。

Operatorの機能に関する情報を取得できます。VisualAppletsデザインを使用して、JPEG圧縮アプリケーションが示されます。JPEGデータファイルを生成するSDKプロジェクトが提示されます。

VisualAppletsでのJPEG圧縮には2つのOperatorが必要です。これらは ImageBuffer_JPEG_Gray および JPEG_Encoder_Grayです。イメージバッファは、フレームグラバーのMemory内に画像データをバッファリングするために使用され、ピ特定のピクセルの並べ替えに使用されます。JPEGエンコーダは、JPEG圧縮自体を実行します。

JPEG圧縮には8x8ピクセルのブロックが使用されるため、ピクセルの並べ替えが必要です。次の図は、この並べ替えを示しています。

ピクセルの並べ替えスキーム

並べ替えられた画像は次のようになります。Operatorは、元の画像の画像寸法を維持します。

ピクセルの並べ替え例

並べ替えの後、Operatorを使用してJPEG圧縮を実行できます JPEG_Encoder_Grayです。Operatorの出力は、JPEGヘッダーのないハフマンストリームです。圧縮率は、実行時に変更可能な選択された量子化テーブルによって異なります。ハフマン符号化には、標準の輝度テーブルが使用されます。

Operatorドキュメント

パラメータ、入力リンク、およびオペレータ機能の詳細については、オペレータリファレンスを参照してください。

JPEG圧縮デザインの例#

次のデザイン例は、JPEG圧縮を実行するVisualAppletsデザインを示しています。このデザインは、次の仕様を満たす必要があります。

  • Camera Linkベースエリアカメラから画像を取得します。
  • 画像データをバッファリングし、JPEG圧縮を実行します。
  • ソフトウェアで画像にJPEGヘッダーを追加し、選択した画像をファイルに書き込みます。
  • カメラの画像高さは一定ではありません。変動する画像の高さをJPEGヘッダーに追加する必要があります。

VisualAppletsデザイン#

仕様を満たすために、次のデザインが使用されます。

JPEG圧縮用のVisualAppletsデザイン

このシンプルなデザインで、すべての仕様を満たすのに十分です。画像はベースエリアカメラオペレーターを使用して取り込まれます。次に、画像は2つのパスに分割されます。最初のパスでは画像をバッファリングし、ImageBuffer_JPEG_Gray オペレーターを使用してピクセルの並べ替えを実行します。その後、JPEG_Encoder_Gray を使用してJPEG圧縮を行います。JPEGデータストリームは、DMAチャネルを介してホストPCの Memory に転送されます。2番目のパスでは、元の画像データがバッファリングされ、2つ目のDMAチャネルを使用してホストPCに転送されます。

VisualAppletsデザインのシミュレーション#

デザインは完全にシミュレーション可能です。データリンクにシミュレーションソースとプローブを配置することで、JPEG圧縮のそれぞれのステップをモニタリングできます。下の図は、シミュレーションモジュールを備えたデザインを示しています。示されているように、元の画像のピクセル(simModule0)が並べ替えられ(simModule1)、JPEGデータストリームが生成されます(simModule2)。

JPEG圧縮デザインのシミュレーション

JPEGデータを確認すると、ストリームの長さを判断できます(下の図を参照)。JPEGエンコーダーの Quality が変更された場合、データ長もそれに応じて変化します。

SimProbeでのJPEGデータ

microDisplayでのランタイムテスト#

JPEG Encoderを含むアプレットは、microDisplayで直接使用できます。この例では、アプレットにより、各DMAチャネルに対して1つの画像ウィンドウが生成されます。DMA番号1には取り込まれた元の画像が表示され、最初のDMAチャネルにはエンコードされた画像データとDMA長が表示されます。

microDisplayでのJPEGアプレット

JPEGファイル生成用SDKプロジェクト#

この例のデザインファイルとSDKのサンプルプロジェクトは、次のフォルダにあります。 examples\processing\advanced\JPEG\JPEG_gray VisualAppletsのインストールパス内。

SDKプロジェクトは基本的に、元の画像とJPEGデータを取得します。元の画像はそのままディスプレイに出力されます。JPEGヘッダーが生成され、JPEGデータに追加されます。これにより、JPEGファイルが完成します。ユーザーは、JPEGスナップショットをファイルに書き込むことができます。さらに、エンコードされたJPEGデータは、シンプルなCコードデコーダーを使用してデコードされます。 nanojpeg。デコードされた画像が表示されます。

ユーザーは、画像のサイズ変更、JPEGの Quality 変更、JPEGスナップショットファイルの書き込み、またはJPEGデータ16進ファイルダンプの書き込みを行うことができます。

ヘッダーの生成はあくまで一例であることに注意してください。Visual AppletsのJPEGオペレーターのユーザーは、それぞれのアプリケーションに合わせた独自のヘッダー生成プログラムを作成する必要があります。

JPEGデコーダー情報:

NanoJPEG -- KeyJ's Tiny Baseline JPEG Decoder

Version 1.0 (2009-04-29)

by Martin J. Fiedler <martin.fiedler@gmx.net>