matlab - 在 MATLAB 中执行 imwrite 后像素值发生变化

标签 matlab image-processing

imwrite 函数的行为很奇怪。我修改了图像的单个像素值。然而,在执行 imwrite 之后,像素值要么被更改为一个全新的值,要么保持不变。

function imwriteCheck(input_image,output_image)
a=imread(input_image);
fprintf('\nBefore modification a(1,1,1)=%d\n',a(1,1,1));
a(1,1,1)=50;
fprintf('\nAfter modification a(1,1,1)=%d\n',a(1,1,1));
imwrite(a,output_image);
b=imread(output_image);
fprintf('\nValue at b(1,1,1)=%d\n',b(1,1,1));
end

我用两张图片测试了这个函数,输出如下:

>> imwriteCheck('MOM.jpg','MOMout.jpg')

Before modification a(1,1,1)=206

After modification a(1,1,1)=50

Value at b(1,1,1)=170

>> imwriteCheck('durga.jpg','durgaout.jpg')

Before modification a(1,1,1)=63

After modification a(1,1,1)=50

Value at b(1,1,1)=63

我不明白为什么会这样。感谢您的帮助。

最佳答案

如果你写入一个 jpg 文件,像素值会因为它们的有损压缩技术而改变。您可以使用无损模式写入 jpg 文件,但您将无法在其他任何地方查看图像。 尝试写入 bmp 或 png 文件,您会看到像素值没有改变。

关于matlab - 在 MATLAB 中执行 imwrite 后像素值发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19474037/

相关文章:

java和matlab集成

matlab - Matlab中声音信号的强度

java - 每 T 秒从 Java 运行 MATLAB

image-processing - 查找到 LED 的距离

linux - jpegtran 优化而不更改文件名

algorithm - 过滤旋转加速度(适合卡尔曼滤波器使用?)

matlab - 如何在 mex 文件中调用 imresize(MATLAB)

java - Java 中的开源图像倾斜检测/校正库?

image-processing - 是否有任何开放技术来识别面部特征?

image-processing - 什么是DICOM中的多帧图像?