【图像去模糊】非盲去模糊实景图像处理,使用点扩散函数(PSF)快速去除实景图像中的模糊(Matlab代码实现)

  💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

 ⛳️赠与读者

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

非盲去模糊实景图像处理

1. 描述
本文旨在使用点扩散函数(PSF)快速去除实景图像中的模糊(例如,运动模糊和失焦模糊)。

 1.1 运动去模糊
对于运动去模糊,采用Lucy-Richardson算法来估计点扩散函数(PSF)。需要设置三个主要参数:长度(len,即模糊长度)、角度(theta,即模糊角度)和迭代次数(IterNum)。

 1.2 失焦去模糊
对于失焦去模糊,采用维纳滤波器算法。需要设置三个主要参数:半径(radius,即点扩散函数的半径)、平滑因子(smooth,用于控制K)和去振铃效果(dering,“On”表示抑制振铃效应,其他值表示不抑制)。

非盲去模糊是一种基于已知模糊信息(点扩散函数,PSF)的图像去模糊技术。以下是实现这一过程的一般步骤:

 1. 准备模糊图像和PSF
首先,需要获取模糊图像以及用于描述模糊过程的点扩散函数(PSF)。PSF是一个描述光如何从点源传播的函数。

 2. 频域转换
将模糊图像和PSF转换到频域(通常使用傅里叶变换),因为在频域中卷积可以转换为简单的乘法操作。这个步骤可以通过以下公式完成:
\[ G(u,v) = \mathcal{F}\{g(x,y)\} \]
\[ H(u,v) = \mathcal{F}\{h(x,y)\} \]
其中,\( \mathcal{F} \)表示傅里叶变换,\( g(x,y) \)是模糊图像,\( h(x,y) \)是PSF。

 3. 逆滤波
在频域中,通过逆滤波恢复原始图像:
\[ F(u,v) = \frac{G(u,v)}{H(u,v)} \]
其中,\( F(u,v) \)是去模糊图像的频域表示。

4. 逆傅里叶变换
将去模糊后的图像从频域转换回空间域:
\[ f(x,y) = \mathcal{F}^{-1}\{F(u,v)\} \]

 5. 处理噪声和伪影
由于逆滤波过程中可能会放大噪声和引入伪影,通常需要一些后处理步骤来增强图像质量。常用的方法包括维纳滤波、正则化技术等。

注意事项
1. **PSF的获取**:在实际应用中,精确获取PSF可能比较困难。可以通过实验标定、估计或者从理论模型中获得PSF。
2. **噪声处理**:逆滤波过程中会放大噪声,通常需要配合去噪技术使用。
3. **边界效应**:FFT假设信号是周期性的,这会引入边界效应。可以使用窗函数或其他技术来缓解这一问题。

📚2 运行结果

部分代码:

% for image1
% G = imread('Blurred_image1.jpg');
% radius = 27.3;  %radius of PSF
% smooth = 45;    %smooth factor, K = (1.09 ^ smooth) / 10000;
% dering = 'On';  %suppressing ring effect

% % for image2
G = imread('Blurred_image2.jpg');
radius = 15.4;  %radius of PSF
smooth = 50;    %smooth factor, K = (1.09 ^ smooth) / 10000;
dering = 'On';  %suppressing ring effect

F = OOF_deblur(G, radius, smooth, dering);

%save deblurred image
figure,imshow(cat(2,G,F)),title('Out-of-focus Deblur');
imwrite(F,['results\\Deblur_Ra' num2str(radius) 'Sm' num2str(smooth) '.png']);

function F = OOF_deblur(G, radius, smooth, dering)

    % perform in every channel
    if size(G, 3) == 3
        F = G;
        for c = 1 : 3
            F(:, :, c) = OOF_deblur(G(:, :, c), radius, smooth, dering);
        end
    else
        % generate PSF
        psf = zeros(size(G, 1), size(G, 2));
        [rows, cols] = size(psf);
        psf = insertShape(psf, 'FilledCircle', [(cols + 1)/ 2, (rows + 1)/ 2, radius], 'Color', 'white', 'Opacity', 1) * 255;      
        psf = psf(:, :, 1);
        psf = psf ./ sum(sum(psf));
        psf = fftshift(psf);
        
        psf_fft = fft2(psf);
        G_fft = fft2(G);
        
        % process the image to prevent ring effect
        if strcmp(dering, 'On')
 

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]Li Jingjing,Liu Yunfei.图像去模糊系统频域优化设计[J].电子技术应用, 2019, 045(007):107-111,116.

[12]王宇.图像去运动模糊算法研究与实现[D].电子科技大学[2024-06-16].

[3]李振翮,武友新.具有显著异常值的夜间模糊图像非盲去模糊[J].南昌大学学报:工科版, 2020, 42(3):7.

🌈4 Matlab代码实现

资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

                                                           在这里插入图片描述

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值