Image 如何存储和读取灰度图像-MATLAB

Image 如何存储和读取灰度图像-MATLAB,image,matlab,scale,grayscale,Image,Matlab,Scale,Grayscale,我目前正在使用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 =

我目前正在使用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');
之后,我使用以下命令重新加载图像:

// 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加载此图像,值将如何更改?

这是正常的,因为您正在以JPEG格式保存,该格式使用有损压缩,因此您会得到一个非常相似的图像,但添加了一些噪波(这就是为什么颜色计数比2种原始颜色略多)

我建议您以PNG格式保存图像(它使用无损压缩,可以获得良好的压缩比)