ソフトウェアまたはハードウェアで画像を処理できるようにするには、アプリケーション内の生のピクセル データにアクセスできる必要があります。色と輝度のデータをバイトのマトリックスに格納したい場合、これはビットマップまたはラスター グラフィックスと呼ばれます。
Photoshop や GIMP などの有名な画像エディタのほとんどは、ラスター ベースです。さまざまな画像形式を開くことができますが、それらはすべてエディター内部でラスター グラフィックに変換されます。
これは VHDL で行うこともできますが、圧縮された画像をデコードする既製のソリューションがないため、かなりのコーディング作業が必要になります。より良い解決策は、テスト入力画像を BMP のようなビットマップ形式に手動で変換するか、テストベンチを起動するスクリプトに組み込むことです。
BMP ファイル形式は、ウィキペディアで詳しく説明されています。この形式にはさまざまなバリエーションがありますが、いくつかの特定の設定に同意することで、より簡単になります。入力画像を作成するには、Windows にプリインストールされている Microsoft Paint で開きます。次に、[ファイル] → [名前を付けて保存] をクリックします 、ファイルの種類:24 ビット ビットマップ (*bmp; *.dib) を選択します .ファイルに .bmp サフィックスで終わる名前を付けて、[保存] をクリックします。
ファイルがこのように作成されていることを確認することで、ヘッダーは常に 54 バイト長の BITMAPINFOHEADER バリアントであり、Wikipedia ページで言及されているピクセル形式 RGB24 であると想定できます。さらに、ヘッダー内のいくつかの選択されたフィールドのみを気にします。以下の表は、これから読み取るヘッダー フィールドを示しています。
緑色でマークされた値は、他のヘッダー フィールドで期待される値を知っているため、実際に確認する必要がある唯一の値です。事前定義された固定サイズの画像のみを毎回使用することに同意した場合は、ヘッダー全体をスキップして、BMP ファイル内のバイト オフセット番号 54 から読み取りを開始できます。ここにピクセル データが見つかります。
それにもかかわらず、リストされている他の値が期待どおりであることを確認します。すでにヘッダーを読んでいるので、難しくありません。また、将来いつでも、あなたまたはあなたの同僚の 1 人が間違ったエンコーディングのイメージをテストベンチに提供した場合に、ユーザー エラーに対する保護を提供します。
このブログ投稿は、VHDL テストベンチでファイルから画像を読み取る方法についてですが、完全を期すために DUT の例を含めました。画像を読み取るときに、DUT を介してピクセル データをストリーミングします。最後に、結果を別の出力 BMP ファイルに書き込みます。このファイルは、お気に入りの画像ビューアーで調べることができます。
上記のコードは、DUT のエンティティを示しています。グレースケール モジュールは、1 ピクセルの 24 ビット RGB データを入力として受け取り、それを出力に表示されるグレースケール表現に変換します。出力ピクセルはまだ RGB 色空間内のグレーの色合いを表していることに注意してください。BMP を別の形式であるグレースケール BMP に変換していません。
モジュールは純粋に組み合わせであり、クロックまたはリセット入力はありません。何かが入力に割り当てられると、結果はすぐに出力に表示されます。簡単にするために、グレースケールへの変換では、ITU-R BT.2100 RGB から輝度へのコーディング システムに従って、輝度 (明るさ) 値の固定小数点近似を使用します。
下に表示されているボーイング 747 の写真は、サンプルの入力画像になります。つまり、このブログ投稿に埋め込まれているのは実際の BMP 画像ではありません。これは、テストベンチで読み取る BMP 画像の JPEG 表現です。上記のフォームにメール アドレスを入力して、元の BMP 画像をリクエストすると、すぐに受信トレイに届きます。