💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥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资源获取