グレースケール画像のBMP形式(特にピクセルあたり16ビット))とは何ですか? wikipedia はbmpのカラー画像について説明しています。
更新:
将来の訪問者のための更新と情報のために、これは非圧縮で16ビットのグレースケールをサポートできるため、 [〜#〜] pgm [〜#〜] を使用します。別のオプションは [〜#〜] png [〜#〜] を使用することでしたが、説明したように(これは私が望むものではありません)データを圧縮します ここ 。また、ほとんどのモニターは256色をサポートしており、16ビットでは4096色をサポートしていないため、画像が歪んで見える場合があることにも注意してください。したがって、画像は飽和状態になります。
16ビット画像のグレースケールの場合、BMPがほとんど無力であることを知って驚いた。
問題の理解を助けてくれた人々に感謝します。
グレースケール画像の場合、8ビットBMPを使用します。 8ビットBMPは、パレットを使用して色をエンコードできます。ただし、使用しない場合は、色の値を簡単に解釈できます[0...255]
黒(0)から白(255)までの色として。
編集:16ビットのグレースケール画像にはBMP)は使用しません。技術的には、16ビットを使用できます。ピクセルあたりBMP 16ビットグレースケールデータをエンコードするための形式( http://en.wikipedia.org/wiki/BMP_file_format#Pixel_format )。ただし、実際にはこれはその深さはピクセルのアルファ、赤、緑、青のサンプルをエンコードするように設計されているため、悪い考え(読み:ハッキー)。
16ビット/ピクセルのグレースケールデータを保存するためのより良い形式はPNGです。
また、自問してみてください。本当に、本当にその超精度が必要ですか?ほとんどのアプリケーションでは、ピクセルあたり8ビットで十分です(=精度に関する特定の要件がない場合は、これが当てはまります)。
表示されているように、TIFFとPNGはネイティブに16ビットグレースケールをサポートしています。
http://en.wikipedia.org/wiki/Grayscale
保存したいこれらの画像は、単に表示するためだけでなく、特別な精度が必要なある種の後処理のためのものだと思いますか?そうでない場合は、最下位の8ビットを削除し、カラーマップを使用してより単純な8ビットビットマップを保存し、各値を値->(値、値、値)RGBマッピングを使用してRGBにマップすることをお勧めします。
そうです、BMPは色しか知りません。これを行う方法は、256エントリのパレットを作成することです。ここで、各エントリはR、G、Bに対して同じ値を持ちます:最初のエントリ(0,0,0)、2番目のエントリ(1,1,1)など。パレットを使用して、画像をピクセルあたり8ビットにします。
編集:16ビットグレースケールの新しい要件を考えると、2つの選択肢があると思います:8ビットに変換するか、BMP以外の別の形式を使用します。
グレースケール画像のBMP形式)とは何ですか
パレットを使用する以外に、BITMAPV4HEADER
を指定してBMPを記述し、設定することで、グレースケールBMP(8ビット/ピクセル)を作成できます。 bV4RedMask
、bV4GreenMask
、およびbV4BlueMask
を同じ値にします。ただし、このような形式の最小bcBitCount
値は16であるため、各ピクセルは2バイトを占める必要があります。 。ただし、アルファチャネル(透明度)には2番目のバイトを使用できます。
特に16ビット/ピクセルの場合
BMPバージョンは16ビットの色深度をサポートしているように見えます。ファイル形式では許可されているようですが(bcBitCount=16
およびbV4…Mask=0xFFFF
)、画像エディタとライブラリ余分なビットを破棄します。
一部のドキュメント 64-BPPを参照BMPファイル。ただし、マスクフィールドはすべて32ビットであるため、BITMAPV4HEADER
フィールドにどのように適合するかは不明です。サイズが大きい(したがって、64 BPPのチャネルマスクを指定することはできません)。
別のオプションはPNGを使用することでしたが、ここで説明するようにデータを圧縮します(これは私が望むものではありません)。
必要がなければ、PNGファイルを圧縮する必要はありません。圧縮レベル0を使用すると、ピクセルはそのままになります(さらに、zlibヘッダー/フッター)。
また、ほとんどのモニターは256色をサポートしており、16ビットでは4096色をサポートしていないため、画像が歪んで見える場合があることにも注意してください。
16ビット深度では、4096ではなく65536のチャネルごとの明度値が可能になります。歪みはガンマ曲線の問題のように聞こえ、ファイル形式の問題とは実際には関係ありません。