数字图像处理-图像增强(2)

1 实验一

1.1 实验题目

使用高频强调滤波进行图像增强。

1.2 程序源代码

Matlab 复制代码
clc;
clear;
f=imread('timu3.jpg'); %读入图像
subplot(1,2,1);
imshow(f)
title('原始图像')
%高斯高通滤波
I=double(f);
g=fft2(I);
g=fftshift(g);
[M,N]=size(g);%读取图像的长度和宽度
%D0=40,并令 k1=0.5,k2=0.75
D0=40;
m=fix(M/2);n=fix(N/2);
for i=1:M
for j=1:N
D=sqrt((i-m)^2+(j-n)^2);%计算两点之间的距离
H=exp(-(D.^2)./(2*(D0^2))); %高斯低通滤波器
result(i,j)=(1-H)*g(i,j);
end
end
result=ifftshift(result);%傅里叶反变换
J1=ifft2(result);
J2=uint8(real(J1));
%高频强调滤波
F=0.5+0.75*(1-H);%根据给定的 k1\k2 两个系数对传递函数进行修改
G=F*g;
result2=ifftshift(G);%傅里叶反变换
J3=ifft2(result2);
J4=uint8(real(J3));
subplot(1,2,2)
imshow(J4)
title('高频强调滤波后的图像')

2 实验二

2.1 实验题目

使用陷波滤波器对下图进行图像增强,给出傅里叶频谱,并分析陷波滤波器尺寸的影响。给出关键步骤的输入输出数据大小)

2.2 程序源代码

Matlab 复制代码
close all
clear all;
clc;
f = imread('timu4.jpg');%读取图像
f = mat2gray(f,[0 255]);
%图像填充
[M,N] = size(f);%读取图像宽度和高度
P = 2*M;
Q = 2*N;
fc = zeros(M,N);
%频域中心化
for x = 1:1:M
for y = 1:1:N
fc(x,y) = f(x,y) * (-1)^(x+y);
end
end
F = fft2(fc,P,Q);%二维傅里叶变换
%陷波滤波算法
H_NF = ones(P,Q);%为了方便后面的累乘,所以用 ones,如果是累加就用 zeros
for x = (-P/2):1:(P/2)-1
for y = (-Q/2):1:(Q/2)-1
D = 30;
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);
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 = 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 = 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);
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:1:M,1: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
close all;
figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel('原图像');
subplot(1,2,2);
imshow(log(1 + abs(F)),[ ]);%图像幅度谱,加 log 便于显示
xlabel('原图像的傅里叶频谱');
figure();
subplot(1,2,2);
imshow(log(1 + abs(G_1)),[ ]);%图像幅度谱,加 log 便于显示
xlabel('滤波后图像的傅里叶频谱');
subplot(1,2,1);
imshow(g_1,[0 1]);
xlabel('陷波滤波后图像');

2.3 参数影响

陷波滤波器的尺寸会对图像的清晰度和图像的质量造成影响,尺寸越大,对图像 滤波处理的效果越好,图像质量越好。

3 实验三

3.1 实验题目

简述数字图像处理中的频率域滤波步骤,并给出适用的图像范围。

3.2 题目解答

频率域滤波是数字图像处理中一种常用的图像增强和去噪方法,它通过对图像进行傅里叶变换,将图像从空间域转换到频率域,然后对频率域图像进行滤波操作,最 后再进行逆傅里叶变换将图像转换回空间域。频率域滤波的步骤如下:

(1)将原始图像进行灰度化处理,得到灰度图像。

(2)对灰度图像进行零均值化,即减去图像的平均灰度值。

(3)对零均值化后的图像进行二维傅里叶变换(DFT),得到频率域图像。

(4)在频率域中选择合适的滤波函数,如低通滤波器、高通滤波器或带通滤波器等。

(5)将选择的滤波函数应用于频率域图像,得到滤波后的频率域图像。

(6)对滤波后的频率域图像进行逆傅里叶变换(IDFT),得到空间域中的滤波后图像。

(7)对滤波后的图像进行反零均值化,即加上原始图像的平均灰度值。

(8)最后可以对滤波后的图像进行进一步的后处理,如灰度拉伸、对比度调整等。

频率域滤波适用于各种类型的图像,包括但不限于自然图像、医学图像、卫星图像等。它可以用于图像增强、去噪、边缘检测、纹理分析等应用领域。

相关推荐
Dxy12393102161 小时前
如何给AI提问:让机器高效理解你的需求
人工智能
少林码僧2 小时前
2.31 机器学习神器项目实战:如何在真实项目中应用XGBoost等算法
人工智能·python·算法·机器学习·ai·数据挖掘
钱彬 (Qian Bin)2 小时前
项目实践15—全球证件智能识别系统(切换为Qwen3-VL-8B-Instruct图文多模态大模型)
人工智能·算法·机器学习·多模态·全球证件识别
rit84324992 小时前
MATLAB对组合巴克码抗干扰仿真的实现方案
开发语言·matlab
没学上了2 小时前
CNNMNIST
人工智能·深度学习
宝贝儿好2 小时前
【强化学习】第六章:无模型控制:在轨MC控制、在轨时序差分学习(Sarsa)、离轨学习(Q-learning)
人工智能·python·深度学习·学习·机器学习·机器人
Niuguangshuo2 小时前
EM算法详解:解密“鸡生蛋“的机器学习困局
算法·机器学习·概率论
a3158238062 小时前
Android 大图显示策略优化显示(一)
android·算法·图片加载·大图片
智驱力人工智能3 小时前
守护流动的规则 基于视觉分析的穿越导流线区检测技术工程实践 交通路口导流区穿越实时预警技术 智慧交通部署指南
人工智能·opencv·安全·目标检测·计算机视觉·cnn·边缘计算
AI产品备案3 小时前
生成式人工智能大模型备案制度与发展要求
人工智能·深度学习·大模型备案·算法备案·大模型登记