2013年9月27日金曜日

C#:Bitmap画像の扱う際にはピクセル形式に注意する

Bitmap画像といっても内部的に色情報を扱う方法は様々です。この事を無視してプログラミングをすると、思わぬエラーに遭遇する時があります。ラボでもOpenCVを利用したテンプレートマッチングをしている時に、意味不明のエラーが出てうまく動かない事象がおきました。これは、異なるピクセル形式の画像をマッチングしようとしたからです。画像を内部的に変換するときに、ピクセル形式が変更されることがあるので注意が必要です。例えば、下記のような違いがあります。
  • Format24bppRgb ・・・1ピクセル当たり、赤、青、緑の各色8ビット、合計24ビット
  • Format32bppPArgb ・・・1ピクセル当たり赤、青、緑の各色8ビットと、8ビットのアルファ・チャネル
  • Format32bppRgb ・・・1ピクセル当たり、赤、青、緑の各色8ビット、合計24ビット。残りの8ビットは使わない。
Bitmapクラスのインスタンスを生成する時にはコンストラクタでピクセル形式を指定することができます。C#のPixelFormat列挙型には、たくさんの種類のピクセル形式が定義されています。確認してみましょう。


0 件のコメント:

コメントを投稿