我正在处理彩色和灰度图像,我发现灰度的均方误差但不知道如何找到彩色图像的均方误差。
我为灰色图片做了这个:
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)
答案 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
,则上述代码现在应该有效。