(1)解释频率滤波每个步骤的目的 (2)使用具有不同参数的不同低通滤波器进行实验比较; (3)使用具有不同参数的不同高通滤波器进行实验比较; (4)使用给定图像实现陷波滤波器

作业四:图像增强

实验要求:

(1)解释频率滤波每个步骤的目的
(2)使用具有不同参数的不同低通滤波器进行实验比较;
(3)使用具有不同参数的不同高通滤波器进行实验比较;
(4)使用给定图像实现陷波滤波器
2.实验结果与分析:(代码见附录)
(1)频率滤波实现的步骤及其目的:
Step1给定一幅大小为MN的输入图像f(x,y),取P = 2M,Q = 2N填充图像得到fp(x,y);填充的目的是因为后续要进行卷积操作,P、Q的取值必须不小于原图长宽,避免折叠误差带来的干扰
Step2用 乘以fp(x,y)移到变换中心;原点移到中心点的目的是因为图像是中心对称的,这样减少计算量
Step3计算step2中的DFT得到F(u,v);中心的频率最低,四周的频率较高。
Step4生成一个实的、对称的滤波函数H(u,v),其大小为P
Q,中心在(P/2+1,Q/2+1)处。用阵列相乘形成乘积G(u,v)=H(u,v)F(u,v);“实的”目的在于为忽略由于计算不准确导致的寄生复分量
Step5计算 ;得到变换后图像
Step6取 的前M行前N列得到g(x,y);目的在于得到与原图像相同大小的图像

(2)低通滤波器:由于噪声主要集中在高频部分,为去除噪声改善图像质量,滤波器采用低通滤波器H(u,v)来抑制高频成分,通过低频成分,然后再进行逆傅立叶变换获得滤波图像,就可达到平滑图像的目的 ,以D0为半径的圆内所有频率分量无损通过,圆外所有频率分量完全衰减。

理想低通

实验中截止频率D0分别为10,30,60,160,460。当能量高度集中在截止频率D0为10的圆内,大部分边缘信息包含在被滤去的能量中,所以图像特别模糊,当随着滤波器截止频率D0增加,模糊程度会减小,图像变得越来越清晰。

布特沃斯低通

有效的弥补了理想低通滤波器的不足,改变了通过频率与截止频率间明显截断的尖锐不连续性,采取平滑过渡。查阅资料得知当n=2时无振铃现象,效果最好,所以本实验采用二阶,从实验结果可以看出,当D0取10时,可以明显的看出图像的轮廓,理想低通则看不出轮廓。同样,当D0越大,模糊程度会减小,图像变得越来越清晰。

高斯低通

高斯滤波器的过度特性非常平坦,因此是不会产生振铃现象的。本实验采取和理想低通、巴特沃斯低通相同的参数可见,在相同的D0下,高斯低通比前两种都要轮廓清晰。

高斯低通滤波可以用来对卫星和航空图像减弱扫描线影响,模糊细节,保留目标轮廓

(3)高通滤波器:使高频通过而使低频衰减的滤波器
理想高通

实验中截止频率D0分别为10,30,60,160,460。当边缘信息集中在截止频率D0为10的圆外,大部分灰度信息包含在被滤去的能量中,所以图像比较暗,当随着滤波器截止频率D0增加,越来越多的灰度信息被略去,所以图像只剩下细节,灰度信息包含的特别少,几乎都被置0,图像变黑。

布特沃斯高通

高斯高通

自动指纹识别——高通滤波+阈值法

本实验首先通过高通滤波把边缘细节保留,滤掉灰度值,再通过阈值法增加图像对比度

高斯高通滤波 – 增强图像

本实验首先通过高通滤波把边缘细节保留,滤掉灰度值,其次通过权重k1,k2使差别增强,最后通过直方图均衡化使灰度范围变大,对比度变大,清晰度变大,从而有效增强图像。

(4)陷波滤波器:它阻止(或通过)事先定义的关于频率矩形中心的一个邻域的频率。H_k和H_(-k)是高通滤波器,一个中心位于(u_k,v_k )的陷波在位置(u_(-k),v_(-k) ) 必有一个对应的陷波。陷波滤波器就是自定义的带阻(带通)滤波器。

带阻:

带通:
陷波滤波应用实例 – 减少莫尔(波纹)模式
从原图可以看出其噪声是波纹噪声,画出傅里叶谱后可以看到需要滤掉的应该是这8个点,但这8个点的大小明显不同,所以D0采取了两个不同的值20与10,中心(u_k,v_k )
在坐标轴上左正右负、上正下负,以(u_k,v_k )为中心的陷波与以(u_(-k),v_(-k) ) 为中心的陷波中心对称,所以找到横轴上方的四个点即可。这样就确定了被扣掉的8个区域。

陷波滤波应用实例 – 消除周期性干扰
从原图可以看出其噪声是周期噪声,由于噪声是关于纵轴对称的,画出傅里叶谱后可以看到需要滤掉的应该是中间上下的这两条竖线,同理,只需找到上面那条竖线即可。我把这条竖线看成是由很多截止半径D0=5的小圆点组成,令vk=0,uk用循环初值设为50,步长5(之所以初值为50是因为避开中心点的区域,初值也可设置的再小些),经过以上操作这些点就连成了一条线,就实现了去除周期性的干扰。

3.附录
image1 = imread(‘E:\数字图像处理\第四次作业\Fig0448(a)(characters_test_pattern).tif’);
image2 = Bfilter(image1, 10, 2);
image3 = Bfilter(image1, 30, 2);
image4 = Bfilter(image1, 60, 2);
image5 = Bfilter(image1, 160, 2);
image6 = Bfilter(image1, 460, 2);
subplot(2,3,1), imshow(image1), title(‘原图像布特沃斯’);
subplot(2,3,2), imshow(image2), title(‘D0 = 10, n = 2’);
subplot(2,3,3), imshow(image3), title(‘D0 = 30, n = 2’);
subplot(2,3,4), imshow(image4), title(‘D0 = 60, n = 2’);
subplot(2,3,5), imshow(image5), title(‘D0 = 160, n = 2’);
subplot(2,3,6), imshow(image6), title(‘D0 = 460, n = 2’);
function [image_out] = Bfilter(image_in, D0, N)
[m, n] = size(image_in);
P = 2 * m;Q = 2 * n;
fp = zeros(P, Q);%填充
for i = 1 : m
for j = 1 : n
fp(i, j) = double(image_in(i, j)) * (-1)^(i+j);%变中心m+1,n+1
end
end
F1 = fft2(fp);% 傅里叶变换
Bw = zeros(P, Q);
a = D0^(2 * N);
for u = 1 : P
for v = 1 : Q
temp = (u-(m+1.0))^2 + (v-(n+1.0))^2;
Bw(u, v) = 1 / (1 + (temp^N) / a);
end
end
G = F1 .* Bw;
gp = ifft2(G);% 反傅里叶变换
image_out = zeros(m, n, ‘uint8’);
gp = real(gp);
for i = 1 : m
for j = 1 : n
image_out(i, j) = gp(i, j) * (-1)^(i+j);
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
image1 = imread(‘E:\数字图像处理\第四次作业\Fig0448(a)(characters_test_pattern).tif’);
image2 = Bfilter(image1, 10);
image3 = Bfilter(image1, 30);
image4 = Bfilter(image1, 60);
image5 = Bfilter(image1, 160);
image6 = Bfilter(image1, 460);
subplot(2,3,1), imshow(image1), title(‘原图像理想’);
subplot(2,3,2), imshow(image2), title(‘D0 = 10’);
subplot(2,3,3), imshow(image3), title(‘D0 = 30’);
subplot(2,3,4), imshow(image4), title(‘D0 = 60’);
subplot(2,3,5), imshow(image5), title(‘D0 = 160’);
subplot(2,3,6), imshow(image6), title(‘D0 = 460’);
function [image_out] = Bfilter(image_in, D0)
[m, n] = size(image_in);
P = 2 * m;Q = 2 * n;
fp = zeros(P, Q);%填充
for i = 1 : m
for j = 1 : n
fp(i, j) = double(image_in(i, j)) * (-1)^(i+j);%变中心m+1,n+1
end
end
F1 = fft2(fp);% 傅里叶变换
for u = 1 : P
for v = 1 : Q
temp = ((u-(m+1.0))^2 + (v-(n+1.0))2)(1/2);
if temp<=D0
Bw(u,v)=1;
else
Bw(u,v)=0;
end
end
end
G = F1 .* Bw;
gp = ifft2(G);% 反傅里叶变换
image_out = zeros(m, n, ‘uint8’);
gp = real(gp);
for i = 1 : m
for j = 1 : n
image_out(i, j) = gp(i, j) * (-1)^(i+j);
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
image1 = imread(‘E:\数字图像处理\第四次作业\Fig0448(a)(characters_test_pattern).tif’);
image2 = Bfilter(image1, 10);
image3 = Bfilter(image1, 30);
image4 = Bfilter(image1, 60);
image5 = Bfilter(image1, 160);
image6 = Bfilter(image1, 460);
subplot(2,3,1), imshow(image1), title(‘原图像高斯’);
subplot(2,3,2), imshow(image2), title(‘D0 = 10’);
subplot(2,3,3), imshow(image3), title(‘D0 = 30’);
subplot(2,3,4), imshow(image4), title(‘D0 = 60’);
subplot(2,3,5), imshow(image5), title(‘D0 = 160’);
subplot(2,3,6), imshow(image6), title(‘D0 = 460’);
function [image_out] = Bfilter(image_in, D0)
[m, n] = size(image_in);
P = 2 * m;Q = 2 * n;
fp = zeros(P, Q);%填充
for i = 1 : m
for j = 1 : n
fp(i, j) = double(image_in(i, j)) * (-1)^(i+j);%变中心m+1,n+1
end
end
F1 = fft2(fp);% 傅里叶变换
for u = 1 : P
for v = 1 : Q
temp = ((u-(m+1.0))^2 + (v-(n+1.0))2)(1/2);
Bw(u, v) =exp(-temp2/(2*D02));
end
end
G = F1 .* Bw;
gp = ifft2(G);% 反傅里叶变换
image_out = zeros(m, n, ‘uint8’);
gp = real(gp);
for i = 1 : m
for j = 1 : n
image_out(i, j) = gp(i, j) * (-1)^(i+j);
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
image1 = imread(‘E:\数字图像处理\第四次作业\Fig0448(a)(characters_test_pattern).tif’);
image2 = Bfilter(image1, 10);
image3 = Bfilter(image1, 30);
image4 = Bfilter(image1, 60);
image5 = Bfilter(image1, 160);
image6 = Bfilter(image1, 460);
subplot(2,3,1), imshow(image1), title(‘原图像理想’);
subplot(2,3,2), imshow(image2), title(‘D0 = 10’);
subplot(2,3,3), imshow(image3), title(‘D0 = 30’);
subplot(2,3,4), imshow(image4), title(‘D0 = 60’);
subplot(2,3,5), imshow(image5), title(‘D0 = 160’);
subplot(2,3,6), imshow(image6), title(‘D0 = 460’);
function [image_out] = Bfilter(image_in, D0)
[m, n] = size(image_in);
P = 2 * m;Q = 2 * n;
fp = zeros(P, Q);%填充
for i = 1 : m
for j = 1 : n
fp(i, j) = double(image_in(i, j)) * (-1)^(i+j);%变中心m+1,n+1
end
end
F1 = fft2(fp);% 傅里叶变换
for u = 1 : P
for v = 1 : Q
temp = ((u-(m+1.0))^2 + (v-(n+1.0))2)(1/2);
if temp>D0
Bw(u,v)=1;
else
Bw(u,v)=0;
end
end
end
G = F1 .* Bw;
gp = ifft2(G);% 反傅里叶变换
image_out = zeros(m, n, ‘uint8’);
gp = real(gp);
for i = 1 : m
for j = 1 : n
image_out(i, j) = gp(i, j) * (-1)^(i+j);
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
image1 = imread(‘E:\数字图像处理\第四次作业\Fig0448(a)(characters_test_pattern).tif’);
image2 = Bfilter(image1, 10, 2);
image3 = Bfilter(image1, 30, 2);
image4 = Bfilter(image1, 60, 2);
image5 = Bfilter(image1, 160, 2);
image6 = Bfilter(image1, 460, 2);
subplot(2,3,1), imshow(image1), title(‘原图像布特沃斯’);
subplot(2,3,2), imshow(image2), title(‘D0 = 10, n = 2’);
subplot(2,3,3), imshow(image3), title(‘D0 = 30, n = 2’);
subplot(2,3,4), imshow(image4), title(‘D0 = 60, n = 2’);
subplot(2,3,5), imshow(image5), title(‘D0 = 160, n = 2’);
subplot(2,3,6), imshow(image6), title(‘D0 = 460, n = 2’);
function [image_out] = Bfilter(image_in, D0, N)
[m, n] = size(image_in);
P = 2 * m;Q = 2 * n;
fp = zeros(P, Q);%填充
for i = 1 : m
for j = 1 : n
fp(i, j) = double(image_in(i, j)) * (-1)^(i+j);%变中心m+1,n+1
end
end
F1 = fft2(fp);% 傅里叶变换
Bw = zeros(P, Q);
a = D0^(2 * N);
for u = 1 : P
for v = 1 : Q
temp = (u-(m+1.0))^2 + (v-(n+1.0))^2;
Bw(u, v) = 1 / (1 + a /(temp^N));
end
end
G = F1 .* Bw;
gp = ifft2(G);% 反傅里叶变换
image_out = zeros(m, n, ‘uint8’);
gp = real(gp);
for i = 1 : m
for j = 1 : n
image_out(i, j) = gp(i, j) * (-1)^(i+j);
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
image1 = imread(‘E:\数字图像处理\第四次作业\Fig0448(a)(characters_test_pattern).tif’);
image2 = Bfilter(image1, 10);
image3 = Bfilter(image1, 30);
image4 = Bfilter(image1, 60);
image5 = Bfilter(image1, 160);
image6 = Bfilter(image1, 460);
subplot(2,3,1), imshow(image1), title(‘原图像高斯’);
subplot(2,3,2), imshow(image2), title(‘D0 = 10’);
subplot(2,3,3), imshow(image3), title(‘D0 = 30’);
subplot(2,3,4), imshow(image4), title(‘D0 = 60’);
subplot(2,3,5), imshow(image5), title(‘D0 = 160’);
subplot(2,3,6), imshow(image6), title(‘D0 = 460’);
function [image_out] = Bfilter(image_in, D0)
[m, n] = size(image_in);
P = 2 * m;Q = 2 * n;
fp = zeros(P, Q);%填充
for i = 1 : m
for j = 1 : n
fp(i, j) = double(image_in(i, j)) * (-1)^(i+j);%变中心m+1,n+1
end
end
F1 = fft2(fp);% 傅里叶变换
for u = 1 : P
for v = 1 : Q
temp = ((u-(m+1.0))^2 + (v-(n+1.0))2)(1/2);
Bw(u, v) =1-exp(-temp2/(2*D02));
end
end
G = F1 .* Bw;
gp = ifft2(G);% 反傅里叶变换
image_out = zeros(m, n, ‘uint8’);
gp = real(gp);
for i = 1 : m
for j = 1 : n
image_out(i, j) = gp(i, j) * (-1)^(i+j);
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
image_in = imread(‘E:\数字图像处理\第四次作业\Fig0457(a)(thumb_print).tif’);
subplot(1,3,1), imshow(image_in), title(‘原图像’);
[m, n] = size(image_in);
P = 2 * m;Q = 2 * n;
fp = zeros(P, Q);%填充
for i = 1 : m
for j = 1 : n
fp(i, j) = double(image_in(i, j)) * (-1)^(i+j);%变中心m+1,n+1
end
end
F1 = fft2(fp);% 傅里叶变换
D0=50
for u = 1 : P
for v = 1 : Q
temp =( (u-(m+1.0))^2 + (v-(n+1.0))2)(1/2);
Bw(u, v) = 1 / (1 +( D0/temp)^8);
end
end
G = F1 .* Bw;
gp = ifft2(G);% 反傅里叶变换
gp = real(gp);
for i = 1 : m
for j = 1 : n
image2(i, j) = gp(i, j) * (-1)^(i+j);
end
end
image2=uint8(image2)
subplot(1,3,2), imshow(image2), title(‘高通滤波’);
for i = 1 : m
for j = 1 : n
if image2(i,j)>0
image3(i,j)=255;
else
image3(i,j)=0;
end
end
end
subplot(1,3,3), imshow(image3), title('高通滤波+阈值法 ');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
image1 = imread(‘E:\数字图像处理\第四次作业\Fig0451(a)(satellite_original).tif’);
image2 = Bfilter(image1, 50);
image3 = Bfilter(image1, 20);
subplot(1,3,1), imshow(image1), title(‘原图像高斯’);
subplot(1,3,2), imshow(image2), title(‘D0 = 50’);
subplot(1,3,3), imshow(image3), title(‘D0 = 20’);
function [image_out] = Bfilter(image_in, D0)
[m, n] = size(image_in);
P = 2 * m;Q = 2 * n;
fp = zeros(P, Q);%填充
for i = 1 : m
for j = 1 : n
fp(i, j) = double(image_in(i, j)) * (-1)^(i+j);%变中心m+1,n+1
end
end
F1 = fft2(fp);% 傅里叶变换
for u = 1 : P
for v = 1 : Q
temp = ((u-(m+1.0))^2 + (v-(n+1.0))2)(1/2);
Bw(u, v) =exp(-temp2/(2*D02));
end
end
G = F1 .* Bw;
gp = ifft2(G);% 反傅里叶变换
image_out = zeros(m, n, ‘uint8’);
gp = real(gp);
for i = 1 : m
for j = 1 : n
image_out(i, j) = gp(i, j) * (-1)^(i+j);
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc
clear;
image_in = imread(‘E:\数字图像处理\第四次作业\Fig0459(a)(orig_chest_xray).tif’);
subplot(1,3,1), imshow(image_in), title(‘原图像’);
[m, n] = size(image_in);
P = 2 * m;Q = 2 * n;
fp = zeros(P, Q);%填充
for i = 1 : m
for j = 1 : n
fp(i, j) = double(image_in(i, j)) * (-1)^(i+j);%变中心m+1,n+1
end
end
F1 = fft2(fp);% 傅里叶变换
D0=40;
for u = 1 : P
for v = 1 : Q
temp = ((u-(m+1.0))^2 + (v-(n+1.0))2)(1/2);
Bw(u, v) =1-exp(-temp2/(2*D02));
end
end
G =(0.5+0.75Bw).F1 ;
gp = ifft2(G);% 反傅里叶变换
gp = real(gp);
for i = 1 : m
for j = 1 : n
image2(i, j) = gp(i, j) * (-1)^(i+j);
end
end
image2=uint8(image2);
subplot(1,3,2), imshow(image2), title(‘高斯高通’);
a=image2;
[r, c] = size(a);
b = zeros(1, 255);
for i = 1 : r
for j = 1 : c
b(1, a(i, j) + 1) = b(1, a(i, j) + 1) + 1;%每个像素值在图中出现的次数
end
end
f = double(zeros(1, 255)); b = double(b);
for i = 1 : 255
f(1, i) = b(1, i)/(r * c);%每个像素值出现的概率
end
for i = 2 : 255
f(1, i) = f(1, i - 1) + f(1, i);%累计概率
end
for i = 1 : 255
d(1, i) =floor( f(1, i) * 255+0.5 );%实际灰度
if d(1,i)==0
d(1,i)=1;
elseif d(1,i)==256
d(1,i)=255;
end
end
d=uint8(d);
for i = 1 : r
for j = 1 : c
if a(i,j)==0
a(i,j)=1;
elseif a(i,j)==256
a(i,j)=255;
end
a(i,j) = d(1,a(i,j));%映射
end
end
subplot(1,3,3);imshow(a);title(‘直方图均衡化’);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
close all;
clear;
clc;
f = imread(‘E:\数字图像处理\第四次作业\Fig0465(a)(cassini).tif’);
f = mat2gray(f,[0 255]);%归一化
[M,N] = size(f);
P = 2
M;Q = 2
N;
fc = zeros(M,N);
for x = 1:M
for y = 1:N
fc(x,y) = f(x,y) * (-1)^(x+y);
end
end
F = fft2(fc,P,Q);%为了方便定位点
H_NF = ones(P,Q);
for x = (-P/2):(P/2)-1
for y = (-Q/2):(Q/2)-1
D = 5; %坐标左正右负,上正下负
for i=50:5:674
v_k =0; u_k = i;
D_k = ((x+u_k)^2 + (y+v_k)2)(0.5);
H_NF(x+(P/2)+1,y+(Q/2)+1) = H_NF(x+(P/2)+1,y+(Q/2)+1) * 1/(1+(D/D_k)^4);
D_k = ((x-u_k)^2 + (y-v_k)2)(0.5);
H_NF(x+(P/2)+1,y+(Q/2)+1) = H_NF(x+(P/2)+1,y+(Q/2)+1) * 1/(1+(D/D_k)^4);
end
end
end
G_1 = H_NF .* F;
g_1 = real(ifft2(G_1));
g_1 = g_1(1:M,1:N);
for x = 1:1:M
for y = 1:1:N
g_1(x,y) = g_1(x,y) * (-1)^(x+y);
end
end
figure;
subplot(2,2,1);imshow(f);title(‘原图’);
subplot(2,2,2);imshow(log(1 + abs(F)),[ ]);title(‘傅里叶谱’);
subplot(2,2,3);imshow(log(1 + abs(G_1)),[ ]);title(‘扣完傅里叶谱’);
subplot(2,2,4);imshow(g_1);title(‘效果图’);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%close all;
clear;
clc;
f = imread(‘E:\数字图像处理\第四次作业\Fig0464(a)(car_75DPI_Moire).tif’);
f = mat2gray(f,[0 255]);%归一化
[M,N] = size(f);
P = 2M;Q = 2N;
fc = zeros(M,N);
for x = 1:M
for y = 1:N
fc(x,y) = f(x,y) * (-1)^(x+y);
end
end
F = fft2(fc,P,Q);%为了方便定位点
H_NF = ones(P,Q);
for x = (-P/2):(P/2)-1
for y = (-Q/2):(Q/2)-1
D = 20; %坐标左正右负,上正下负
v_k = 59; u_k = 77;
D_k = ((x+u_k)^2 + (y+v_k)2)(0.5);
H_NF(x+(P/2)+1,y+(Q/2)+1) = H_NF(x+(P/2)+1,y+(Q/2)+1) * 1/(1+(D/D_k)^4);%布特沃斯n为2时最好
D_k = ((x-u_k)^2 + (y-v_k)2)(0.5);
H_NF(x+(P/2)+1,y+(Q/2)+1) = H_NF(x+(P/2)+1,y+(Q/2)+1) * 1/(1+(D/D_k)^4);

    v_k = -54; u_k = 84;
    D_k = ((x+u_k)^2 + (y+v_k)^2)^(0.5);
    H_NF(x+(P/2)+1,y+(Q/2)+1) = H_NF(x+(P/2)+1,y+(Q/2)+1) * 1/(1+(D/D_k)^4);
    D_k = ((x-u_k)^2 + (y-v_k)^2)^(0.5);
    H_NF(x+(P/2)+1,y+(Q/2)+1) = H_NF(x+(P/2)+1,y+(Q/2)+1) * 1/(1+(D/D_k)^4);  
    D=10;
    v_k = 59; u_k = 159;
    D_k = ((x+u_k)^2 + (y+v_k)^2)^(0.5);
    H_NF(x+(P/2)+1,y+(Q/2)+1) = H_NF(x+(P/2)+1,y+(Q/2)+1) * 1/(1+(D/D_k)^4);
    D_k = ((x-u_k)^2 + (y-v_k)^2)^(0.5);
    H_NF(x+(P/2)+1,y+(Q/2)+1) = H_NF(x+(P/2)+1,y+(Q/2)+1) * 1/(1+(D/D_k)^4);           
    
    v_k = -54; u_k = 167;
    D_k = ((x+u_k)^2 + (y+v_k)^2)^(0.5);
    H_NF(x+(P/2)+1,y+(Q/2)+1) = H_NF(x+(P/2)+1,y+(Q/2)+1) * 1/(1+(D/D_k)^4);
    D_k = ((x-u_k)^2 + (y-v_k)^2)^(0.5);
    H_NF(x+(P/2)+1,y+(Q/2)+1) = H_NF(x+(P/2)+1,y+(Q/2)+1) * 1/(1+(D/D_k)^4);
 end

end

G_1 = H_NF .* F;
g_1 = real(ifft2(G_1));
g_1 = g_1(1:M,1:N);
for x = 1:1:M
for y = 1:1:N
g_1(x,y) = g_1(x,y) * (-1)^(x+y);
end
end
figure;
subplot(2,2,1);imshow(f);title(‘原图’);
subplot(2,2,2);imshow(log(1 + abs(F)),[ ]);title(‘傅里叶谱’);
subplot(2,2,3);imshow(log(1 + abs(G_1)),[ ]);title(‘扣完傅里叶谱’);
subplot(2,2,4);imshow(g_1);title(‘效果图’);

发布了6 篇原创文章 · 获赞 0 · 访问量 31

猜你喜欢

转载自blog.csdn.net/qudijiao6061/article/details/105274939
今日推荐