2016-12-10 21 views
0

視差画像をディスクに保存する必要があります。視差画像のデータ型は単精度であり、視差範囲は[0 128]である。 imwrite(disparityMap,file_name)を使用している間は、保存されたイメージはバイナリに見えます。Matlab視差画像を単精度からuint8に変換する

答えて

1

浮動小数点精度でimwriteを使用すると、データが[0 1]の範囲にあるとみなされます。したがって、1を超える値は1とみなされます。そのため、白黒画像が表示されます。 matlab docから

Aは、グレースケールまたは二重又は単一のデータタイプのRGBカラー画像である場合、関数imwriteは、ダイナミックレンジを想定している[0,1]と自動的に書き込む前に255によってデータをスケーリングそれを8ビット値としてファイルに出力します。

次に、2つの解決策があります。私は128がデータの最大値であり、黒から白に変わるカラーマップが必要だと考えています。変換を自分で行うとのuint8として直接画像を書き、

% Normalize your data between 0 and 1 
disparityMap = disparityMap/128; 

% write the image 
imwrite(disparityMap,file_name) 

第二の溶液:

% Normalize your data between 0 and 255 and convert to uint8 
disparityMapU8 = uint8(disparityMap*255/128); 

% write the image as uint8 
imwrite(disparityMapU8,file_name) 
そのMATLABは、右の変換を行うので、私

最初のソリューションは、あなたのデータを正規化します

関連する問題