我目前正在制作节目,我需要在照片上自动执行运动不模糊。目前,我为for
和LEN
制作THETA
循环,从LEN
0:50
和THETA
1:180
进行猜测。以这种方式产生大量运动不模糊的图像 - 一些是正确的,一些是错误的。现在这是我的问题:我如何确定哪一组参数产生最接近原始照片的参数?
我正在考虑使用像素比较。对此有何想法?
这是我生成的图片示例:
答案 0 :(得分:1)
如果您可以访问原始的干净图像,我会为您生成的所有图像计算Peak Signal to Noise Ratio (PSNR),然后选择最高PSNR 的图像。 Amro发布了关于如何为图片计算此内容的非常好的帖子,可在此处找到:https://stackoverflow.com/a/16265510/3250829
但是,对于自我控制,我会在这里发布代码。假设您的原始图像存储在变量I
中,并假设您的重建(未模糊)图像存储在变量K
中。因此,要计算PSNR,您需要先计算Mean Squared Error,然后使用它来计算PSNR。换句话说:
mse = mean(mean((im2double(I) - im2double(K)).^2, 1), 2);
psnr = 10 * log10(1 ./ mean(mse,3));
MSE和PSNR的等式是:
来源:Wikipedia
因此,要在代码中使用它,您的for
循环应如下所示:
psnr_max = -realmax;
for LEN = 0 : 50
for THETA = 1 : 180
%// Unblur the image
%//...
%//...
%// Compute PSNR
mse = mean(mean((im2double(I) - im2double(K)).^2, 1), 2);
psnr = 10 * log10(1 ./ mean(mse,3));
if (psnr > psnr_max) %// Get largest PSNR and get the
LEN_final = LEN; %// parameters that made this so
THETA_final = THETA;
psnr_max = psnr;
end
end
end
此循环将遍历每对LEN
和THETA
,而LEN_final
,THETA_final
将是那些为您提供最佳重建(非模糊)的参数图像。