如何找到彩色图像的MSE?

时间:2015-05-10 16:03:42

标签: matlab image-processing signal-processing

我正在处理彩色和灰度图像,我发现灰度的均方误差但不知道如何找到彩色图像的均方误差。

我为灰色图片做了这个:

 acc = sum( (data_gray(:)- reconstructData(:)).^2 ); 
 mse = acc / numel(data_gray);

对于彩色图像,以下代码不起作用,并给我错误,如: 使用时出错 - 整数只能与同一类的整数或标量双精度组合使用。 finalCompress出错(第60行)  accRC = sum((RC(:) - recRC(:))。^ 2);

彩色图像代码MSE:

 accRC = sum( (RC(:) - recRC(:)).^2 ); 
 accGC = sum( (GC(:)- recGC(:)).^2 );
 accBC = sum( (BC(:)- recBC(:)).^2 );
 mse = accRC+accGC+accBC / numel(combineColorChannels);

combineColorChannels是由(recRC,recGC,recBC)

组成的彩色图像

1 个答案:

答案 0 :(得分:1)

错误很清楚。您正尝试在两个不同类型的图像之间实现算术运算。 MATLAB抱怨不同的类型。

因为我不知道哪些渠道是不同的类型,所以我们最好在运行您的代码之前将所有渠道投放到double

%// Change
RC = double(RC); 
GC = double(GC);
BC = double(BC);
recRC = double(recRC);
recGC = double(recGC);
recBC = double(recBC);

%// Your code
accRC = sum( (RC(:) - recRC(:)).^2 ); 
accGC = sum( (GC(:)- recGC(:)).^2 );
accBC = sum( (BC(:)- recBC(:)).^2 );
mse = accRC+accGC+accBC / numel(combineColorChannels);

如果您将所有相应的频道投放到double,则上述代码现在应该有效。