0
視差画像をディスクに保存する必要があります。視差画像のデータ型は単精度であり、視差範囲は[0 128]である。 imwrite(disparityMap,file_name)
を使用している間は、保存されたイメージはバイナリに見えます。Matlab視差画像を単精度からuint8に変換する
視差画像をディスクに保存する必要があります。視差画像のデータ型は単精度であり、視差範囲は[0 128]である。 imwrite(disparityMap,file_name)
を使用している間は、保存されたイメージはバイナリに見えます。Matlab視差画像を単精度からuint8に変換する
浮動小数点精度で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は、右の変換を行うので、私
最初のソリューションは、あなたのデータを正規化します