我发现使用Y平面进行直方图处理后RGB图像的熵值如下:
i % the original image
y1=rgb2ycbcr(i);
y=y1(:,:,1);cb=y1(:,:,2);cr=y1(:,:,3);
he1=histeq(y);
r1=cat(3,he1,cb,cr);
r1=ycbcr2rgb(r1);
g1=rgb2gray(r1);
e1=entropy(g1);
现在我遵循了以下程序:
imwrite(r1,'temp1.jpg');
i2=imread('temp1.jpg');
g2=rgb2gray(i2);
e2=entropy(g2);
但现在e1
和e2
是不同的。为什么会这样?
答案 0 :(得分:1)
您正在使用JPEG压缩标准将图像r1
写入磁盘。 JPEG是有损,这意味着写入磁盘的内容不与最初存储在内存中的内容相同。尽管图像在感知上看起来相同,但如果比较相应像素之间的颜色值,则大多数图像会略有不同。这些细微差别是JPEG标准提供高压缩率并因此缩小文件大小的原因。
如果要确保写入文件的内容与您所读取的内容相同,请使用无损压缩标准,例如使用PNG。因此,请更改目标文件名,以便您使用PNG,而不是JPEG:
imwrite(r1,'temp1.png'); %// Change
i2=imread('temp1.png'); %// Change
g2=rgb2gray(i2);
e2=entropy(g2);