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

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

相关推荐
美酒没故事°1 天前
Open WebUI安装指南。搭建自己的自托管 AI 平台
人工智能·windows·ai
云烟成雨TD1 天前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
小O的算法实验室1 天前
2026年ASOC,基于深度强化学习的无人机三维复杂环境分层自适应导航规划方法,深度解析+性能实测
算法·无人机·论文复现·智能算法·智能算法改进
简简单单做算法1 天前
基于GA遗传优化的Transformer-LSTM网络模型的时间序列预测算法matlab性能仿真
深度学习·matlab·lstm·transformer·时间序列预测·ga遗传优化·电池剩余寿命预测
AI攻城狮1 天前
用 Obsidian CLI + LLM 构建本地 RAG:让你的笔记真正「活」起来
人工智能·云原生·aigc
鸿乃江边鸟1 天前
Nanobot 从onboard启动命令来看个人助理Agent的实现
人工智能·ai
lpfasd1231 天前
基于Cloudflare生态的应用部署与开发全解
人工智能·agent·cloudflare
俞凡1 天前
DevOps 2.0:智能体如何接管故障修复和基础设施维护
人工智能
comedate1 天前
[OpenClaw] GLM 5 关于电影 - 人工智能 - 的思考
人工智能·电影评价
财迅通Ai1 天前
6000万吨产能承压 卫星化学迎来战略窗口期
大数据·人工智能·物联网·卫星化学