【问题标题】:Determine the right parameters for deblurring motion blurred images in MATLAB确定在 MATLAB 中对运动模糊图像进行去模糊处理的正确参数
【发布时间】:2021-04-28 08:02:50
【问题描述】:

我目前正在编写程序,我需要自动对图片执行动作去模糊处理。目前,我为LENTHETA 创建了一个for 循环,从LEN 猜测0:50THETA1:180。以这种方式产生了大量的运动未模糊图片 - 有些是正确的,有些是错误的。现在这是我的问题:我如何实际确定哪一组参数产生最接近原始照片的参数?

我正在考虑使用像素比较。对此有什么想法吗?

这是我生成的图片示例:

http://dl.dropboxusercontent.com/u/81112742/Capture.JPG

【问题讨论】:

    标签: matlab image-processing motion


    【解决方案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
    

    此循环将遍历每对 LENTHETALEN_finalTHETA_final 将是那些为您提供最佳图像重建(不模糊)的参数。

    【讨论】:

    • 如果我没有原图,那这个方法不行吗?我的实际项目是具有不同 theta 的图像,然后将给出 Len 然后需要自动取消模糊它
    • @chrischiang 如果没有参考图像,我想不出任何方法可以让您选择最优化的设置来使图像模糊。有一些指标可以在没有参考图像的情况下衡量质量,但这些指标仍处于主要实验阶段,并且非常主观。我不能在这里给你一个好的答案。
    猜你喜欢
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 2018-07-18
    • 1970-01-01
    相关资源
    最近更新 更多