同一图像的熵值差异

时间:2015-12-17 07:04:00

标签: image matlab image-processing

我发现使用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);

但现在e1e2是不同的。为什么会这样?

1 个答案:

答案 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);