分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
在没有噪声的情况下,频域退化模型可由下式给出:
G(u,v)=H(u,v)F(u,v) 充当分母,在很多情况下传递函数的值为 0 或接近 0,此时得到的结果往往是极度不准确的。一种解决方法是, 仅对半径在一定范围内的傅里叶系数进行运算,由于通常低频系数值较大,高频系数接近于0,这种方法能大大减少遇到 0 的概率。
仿真测试
(1)原始图像退化
clear all; close all;clcI = imread('pout.tif');f = im2double(I);subplot(1, 3, 1), imshow(f), title('原始图像')F = fftshift(fft2(f));[M, N] = size(F);[u, v] = meshgrid(1:N, 1:M);k = 0.0025;H = exp(-k*((v-M/2).^2+(u-N/2).^2).^(5/6));G = F.*H;g = ifft2(ifftshift(G));g = uint8(abs(g)*255);subplot(1, 3, 2), imshow(g), title('退化图像')I = deconv(g, H, 128); % 可尝试不同的半径,128、108、78、48subplot(1, 3, 3), imshow(I), title('复原图像')
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
(2)去卷积函数的实现:
function I_new = deconv(I, H, thresh)if size(I, 3) == 3, I = rgb2gray(I);endI = im2double(I);G = fftshift(fft2(I));[M, N] = size(G);F = G;[x, y] = meshgrid(1:N, 1:M);if thresh > M/2, F = G./(H+eps);else idx = (x-N/2).^2 + (y-M/2).^2 < thresh^2; F(idx) = G(idx)./(H(idx)+eps);endI_new = ifft2(ifftshift(F));I_new = uint8(abs(I_new)*255);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18