数字图像处理-图像增强(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)最后可以对滤波后的图像进行进一步的后处理,如灰度拉伸、对比度调整等。

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

相关推荐
国科安芯几秒前
低轨卫星姿轨控系统中抗辐射MCU的选型依据与工程实践
单片机·嵌入式硬件·算法·架构·系统安全·低轨卫星·抗辐射
奈斯先生Vector3 分钟前
本地图片识别怎么接入多模态 AI?用 Python API 理解 GPT-4o Vision 的真实工作流
开发语言·人工智能·windows·python·网络协议·http·aigc
国科安芯3 分钟前
卫星电源管理系统中高可靠MCU的功耗特性与电源监控功能分析
人工智能·单片机·嵌入式硬件·mcu·安全·电源管理系统·抗辐射
空堂与归4 分钟前
处理序列数据问题:用循环神经网络RNN建模时序依赖
人工智能
AI的探索之旅4 分钟前
97 个 OpenCV 实例(十五):几何校正,透视变换 + ECC 对齐
人工智能·opencv·计算机视觉
moonsims5 分钟前
再议AiBrainBox-V的前左右三目布局-满足多目SLAM算法;对比单下视VIO(低空、地面纹理丰富、飞行速度适中无人机 )&多目VIO
前端·人工智能·量子计算
一休哥※6 分钟前
# MiniMax-H3 ComfyUI 部署与使用教程(AI 操作手册)
人工智能
高亦真6 分钟前
今天是学习嵌入式的第33天
linux·学习·算法
CoderYanger7 分钟前
A.每日一题:3345. 最小可整除数位乘积 I
java·数据结构·程序人生·算法·leetcode·面试·学习方法
阿拉斯攀登8 分钟前
MQTT+时序数据库:海量农业传感数据存储、趋势报表实现
人工智能