Matlab2020A中的IMWRITE()如何保存RGB?

42次观看(过去30天)
Sorinel Oprisan.
Sorinel Oprisan. 2020年4月24日
编辑: CEDRIC Wannz.2020年4月24日
我试图向三种颜色频道中的一个添加噪点,说绿色,使用iMwrite()保存新的噪音映像,用imread()再次打开它,并与原件进行比较。图像IA仅在绿色通道上具有噪声。为什么在使用iMwrite()和使用IMRead()读取嘈杂的图像后,图像IB中的噪音是所有颜色频道的噪声?
这是代码:
=======
清除全部;
关闭全部;
CLC;
我= imread('strawberries.jpg');
GreenChannel = I(::,2);
%为绿色通道添加噪音
ia = i;
IA(:,:,2)= imnoise(GreenChannel,'椒盐',0.01);
%保存噪音图像
IMWRITE(IA,'./strawberries_noise1.jpg');
%读取嘈杂的图像
ib = imread('./strawberries_noise1.jpg');
%比较imwrite之前的原始和嘈杂的图像()
i1a = double(i(:,:,1)) - Double(ia(:,:,1));
i2a = double(i(:,:,2)) - Double(ia(:,:,2));
i3a = double(i(:,3)) - Double(ia(:,:,3));
IMWRITE()后%比较原始和嘈杂的图像
I1B = DOUBLE(I(:,:,1)) - DOUBLE(IB(:,:,1));
i2b = double(i(:,:,2)) - double(ib(:,:,2));
i3b = double(i(:,3)) - double(ib(:,:,3));
数字;
子图(2,3,1); imshow(mat2gray(i1a));标题('没有噪音'
子图(2,3,2); imshow(mat2gray(i2a));标题('绿色的噪音'
子图(2,3,3); imshow(mat2gray(i3a));标题('蓝色没有噪音'
子图(2,3,4); imshow(mat2gray(i1b));
子图(2,3,5); imshow(mat2gray(i2b));
子图(2,3,6); imshow(mat2gray(i3b));

答案(1)

CEDRIC Wannz.
CEDRIC Wannz. 2020年4月24日
编辑:CEDRIC Wannz. 2020年4月24日
您将保存为JPEG文件,默认情况下是有损的。
如果您将.png另存为例(无损),则R和B组件不会有区别:
IMWRITE(IA,'./strawberries_noise1.png');
ib = imread('./strawberries_noise1.png');
您还可以保留JPEG格式,但将模式设置为 无损
IMWRITE(IA,'./strawberries_noise1.jpg''模式'“无损”);

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!