画像処理ソリューション
これを見れば画像処理の入門から基礎~応用まで全てがわかるのを目指して!
   
翻訳(Translate)

プロフィール

Akira

ニックネーム:Akira
東京都の町田事業所に勤務
画像処理ソフトの開発を行っています。リンクフリーです!
詳細プロフィールは こちら
お問い合わせは、こちら↓

【補助HP】
画像処理ソリューションWeb版 【Newブログ】
イメージングソリューション

スポンサーリンク


カテゴリ

最近のコメント

カレンダー

09 | 2017/10 | 11
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

趣味のブログ

iPhone萬歳!
iPhoneの情報いろいろ。
ブログ学習帳
ブログ、SEO、アフィリエイト情報など(まだまだこれから)
俺流クラフト日記
ハンドメイド作品の記録(現在、放置中)

スポンサーリンク 最近の記事
(09/18)  計測測定展に光切断のデモを出展しました
(08/17)  ディジタル画像技術事典200に記事が載りました
(06/09)  光切断を画像センシング展で公開
(05/14)  中国(上海)へ行って来ました
(04/12)  韓国へ行って来ました
(03/10)  私の求める新人像
(01/18)  エレクトロテストジャパンにカラー光切断法のデモを出展しました。
(12/23)  ユニークアクセス200万達成!
(12/10)  【カラー光切断法】YouTube動画まとめ
(11/04)  国際画像機器展2014にカラー光切断法を出展します。
(10/05)  第25回コンピュータビジョン勉強会@関東に参加してきました。
(09/08)  フーリエ変換の記事を追加しました。
(08/09)  【画像処理】ランキング低下中
(07/06)  記事の更新が停滞中...
(06/08)  画像センシング展2014でカラー光切断法のデモを行います。
(05/17)  カラー光切断法の動画を公開しました。
(04/30)  ソニーα NEX-5Rで星空撮影
(04/10)  カラー光切断法の取込結果を追加しました
(03/08)  Korea Vision Show 2014へ行ってきました
(02/05)  フーリエ変換シリーズを始めます。
(01/06)  2014年、あけましておめでとうございます。
(12/04)  カラー光切断法を公開(国際画像機器展2013にて)
(11/13)  国際画像機器展2013に出展します
(10/14)  「画像処理のためのC#」はじめます。
(09/16)  【C#,VB.NET】高速描画コントロールをバージョンアップしました。
(09/04)  拡大鏡に輝度値表示、ルーラー機能を追加した個人ツールを公開
(08/05)  7月の拍手Top5
(07/06)  2013年6月人気記事Top5
(05/12)  SONY α NEX-5Rレビュー
(04/24)  SONY α NEX-5RY購入

多ビット(10Bit、12Bit)画像データの表示、フォーマット

目次ページへ

多ビット(10Bit、12Bitなど)の画像データは10Bitや12Bitの型が存在しないため、モノクロの場合はushort型の16bit中、下位10Bit、12Bitを使って画像データを格納します。
カラー10Bitの場合(RGB101010)は32Bit中の下位30Bitを使って画像データを格納します。

この××Bit中のどのビットをR,G,Bの色に割り振るかは、ビットフィールドというもの
使います。
ビットフィールドを使うにはBITMAPINFOHEADERbiCompressionBI_BITFIELDSに設定します。

どのビットをR,G,Bの色に割り振るかはRGBQUAD型の32Bitを使って有効ビットを指定します。
bmiColors[0]R(赤)bmiColors[1]G(緑)bmiColors[2]B(青)の色のビットを設定するのに用います。

実際の描画にはWin32APIのSetDIBitsToDevice関数かStretchDIBits関数を使います。
この表示のサンプルプログラムはVB6.0ですが、
VB6.0でビットマップファイルを開くのページに置いておきました。
(純粋な.NET環境では多ビット画像を表示できそうにないので、.NETからAPI関数を呼び出せば
 一応は表示できます)


モノクロ画像の場合(10~16Bitのとき)

(例)モノクロ10Bitの場合、biBitCount = 16 とし、16Bit中10Bitを使います。
   表示に有効なビットを以下のように指定します。 

画像データ  00000011 11111111
bmiColors[0]00000000000000000000001111111111
bmiColors[1]00000000000000000000001111111111
bmiColors[2]00000000000000000000001111111111

以上より、bmiColorsを10進数で表示すると以下のようになります。 

bmiColors[0].rgbReserved = 0; 
bmiColors[0].rgbRed          = 0; 
bmiColors[0].rgbGreen       = 3; 
bmiColors[0].rgbBlue          = 255; 
bmiColors[1].rgbReserved = 0; 
bmiColors[1].rgbRed          = 0; 
bmiColors[1].rgbGreen       = 3; 
bmiColors[1].rgbBlue          = 255; 
bmiColors[2].rgbReserved = 0; 
bmiColors[2].rgbRed          = 0; 
bmiColors[2].rgbGreen       = 3; 
bmiColors[2].rgbBlue          = 255;

■カラー画像の場合(R10G10B10Bitのとき)  

(例)カラー10Bitの場合、biBitCount = 32 とし、32Bit中、下位30Bitを使います。
     表示に有効なビットを以下のように指定します。

画像データ00111111 11111111 11111111 11111111
bmiColors[0]00111111 11110000 00000000 00000000
bmiColors[1]00000000 00001111 11111100 00000000
bmiColors[2]00000000 000000000000001111111111

以上より、bmiColorsを10進数で表示すると以下のようになります。 

bmiColors[0].rgbReserved = 63; 
bmiColors[0].rgbRed          = 240; 
bmiColors[0].rgbGreen       = 0; 
bmiColors[0].rgbBlue          = 0; 
bmiColors[1].rgbReserved = 0; 
bmiColors[1].rgbRed          = 15; 
bmiColors[1].rgbGreen       = 252; 
bmiColors[1].rgbBlue          = 0; 
bmiColors[2].rgbReserved = 0; 
bmiColors[2].rgbRed          = 0; 
bmiColors[2].rgbGreen       = 3; 
bmiColors[2].rgbBlue          = 255;
 

■サンプル画像 
   
   16BitGrayImage

画像データはこちら右ボタン→対象をファイルに保存)からダウンロードできます。

【画像データプロパティ】
幅:1024
高さ:256
ビット数:16
BitField:16ビット中、下位10ビットの上位8ビットを表示設定
輝度値:0~1023のグラデーション

上記のビットマップファイルをTSXBINというバイナリエディタでヘッダ部分を表示すると以下の通りです。(値は16進数表示)
多ビットビットマップファイルフォーマット


エクプスローラのプロパティや標準的なビューアソフトでは16ビットとして認識されない場合が多いのでご注意下さい。


※この記事では10Bitなどの多ビット画像データを8Bitデータにシフト処理などする事なく、画像データを表示する方法を説明しています。実際のモニタ上にはRGB各8Bitの解像度で表示されます。
モニタ上にRGB各10Bitで表示するには、別途、10Bit対応のモニタ、ビデオカード、表示プログラム(Direct-X/OpenGL)が必要のようです。詳細は以下のページを参照下さい。

◆10ビット/8ビット表示はドコが違う!?:「FlexScan SX2462W」のDisplayPort入力で“約10億色リアル表示”を体感する (1/3) - ITmedia +D PC USER
◆株式会社エーキューブ - ナナオ社製10bit対応モニタ「Flexscan」「ColorEdge」による動作確認
◆AMD(ATI)の資料
◆nVIDIAの資料

こりゃ、ビデオカードもモニタも私には高価すぎて、私には当分評価できそうにありません...


最近のCCDカメラでは8Bitのみならず、10Bit、12Bitの出力を持つカメラが増えてきています。多ビットの画像データは低コントラストの画像データを処理するには有功な場合が多いのですが、ほとんどの画像処理ライブラリでは多ビットの画像データに対応していない場合が多いため、画像処理部分のプログラムを全て自作する必要が出てきます。
また、8Bitが10Bitになるだけで、カメラから画像入力ボードへのデータ転送量は倍(16Bit/画素)となるため、フレームレートやスキャンレートの最速レートを出せなくなる場合があります。

そのため、総合的に捉えて多ビットの画像データをお取り扱い下さい。

 


Loading...
スポンサーリンク

この記事に対するコメント

この記事に対するコメントの投稿














管理者にだけ表示を許可する


この記事に対するトラックバック
トラックバックURL
→http://imagingsolution.blog107.fc2.com/tb.php/45-fe83c1e9
この記事にトラックバックする(FC2ブログユーザー)

現在の閲覧者数: / 合計