0

現在、MATLAB を使用して画像処理アルゴリズムに取り組んでいます。このアルゴリズムでは、ディレクトリから画像を読み込んでグレースケールに変換する必要があります。他の処理の後、画像内のすべてのピクセルの値は 0 または 255 になります。次に、次を使用して画像を保存します。

// temp is of type double
imwrite(temp,'FAST_tree_test_image_1_gray_matlab.jpg');

その後、次を使用して画像をリロードします。

// image is not defined before hand; its automatically set to type UINT8
image = imread('FAST_tree_test_image_1_gray_matlab.jpg');

変数エディターで画像の値を表示すると、値が異なります.. 255 の値のほとんどすべてが 252 になり、画像を保存する前に 0 だった多くのピクセルが 2 になりました..

これはなぜですか?それはフォーマットに関するものですか?どうすればこれを解決できますか? Visual Studio で OpenCv を使用してこのイメージをロードする必要がある場合、値はどのように変化しますか?

4

1 に答える 1

1

非可逆圧縮を使用する JPEG 形式で保存しているため、これは正常です。そのため、非常に似た画像が得られますが、ノイズが追加されています (そのため、色数は元の 2 色よりも少し多くなっています)。

画像を PNG 形式で保存することをお勧めします (可逆圧縮を使用し、適切な圧縮率を得ることができます)。

于 2013-01-10T04:14:31.263 に答える