数字图像处理报告:实验3 同态滤波、频域滤波、傅里叶变换性质、DCT变换性质

实验3 同态滤波、频域滤波、傅里叶变换性质、DCT变换性质
一、实验主题:
学习同态滤波、频域滤波、傅里叶变换性质、DCT变换性质,掌握其原理,并学会编程,实现这些方法与性质。
二、实验目的:
1、掌握同态滤波方与频域滤波方法,学习傅里叶变换性质与DCT变换性 质。
2、学习使用程序设计环境。
3、编程实现同态滤波、频域滤波,以及实现傅里叶变换与DCT变换。
三、实验要求:
1、切实掌握图像处理相关方法与原理
2、熟悉相关编程过程,并可以进行实际的应用
四、实验平台:
1、编程平台:MATLAB R2020b
2、编程语言:matlab
五、实验代码:
1、同态滤波:

% 同态滤波
function HomomorphicFilter()
I=imread('2.jpg');
if(size(I,3)~=1)
    I=double(rgb2gray(I));
end
[M,N]=size(I);  
rL=0.5;  
rH=4.7;%可根据需要效果调整参数  
c=2;  
d0=10;  
I1=log(I+1);%取对数  
FI=fft2(I1);%傅里叶变换  
n1=floor(M/2);  
n2=floor(N/2);
D=zeros(M,N);
H=zeros(M,N);
for i=1:M 
    for j=1:N  
        D(i,j)=((i-n1).^2+(j-n2).^2);  
        H(i,j)=(rH-rL).*(exp(c*(-D(i,j)./(d0^2))))+rL;%高斯同态滤波  
    end  
end
% imshow(H/max(H(:)));
I2=ifft2(H.*FI);%傅里叶逆变换  
I3=real(exp(I2)); 
% figure,imshow(I/max(I(:))),title('同态滤波增强前');
% figure,imshow(I3/max(I3(:))),title('同态滤波增强后');
figure;
subplot(121);imshow(I/max(I(:))),title('同态滤波增强前');
subplot(122);imshow(I3/max(I3(:))),title('同态滤波增强后');
end

2、频域滤波:
2-1、理想低通滤波

function Img = LFPFilter(img,D0)
imgd=double(img);
F=fft2(imgd);
Fc=fftshift(F);
[row,col]=size(img);
ci=floor(row/2)+1;
cj=floor(col/2)+1;
D2=D0*D0;
for i=1:row
    for j=1:col
        r2=(i-ci)*(i-ci)+(j-cj)*(j-cj);
        if r2>D2
            Fc(i,j)=0;
        end
    end
end
F=fftshift(Fc);
Img=ifft2(F);
Img=uint8( Img*(255/max(Img(:))));
end

2-2、巴特沃兹低通滤波

% 巴特沃兹低通滤波
function Img = ButtLFPFilter(img,D0,n)
imgd=double(img);
F=fft2(imgd);
Fc=fftshift(F);
[row,col]=size(img);
ci=floor(row/2)+1;
cj=floor(col/2)+1;
D2=D0*D0;
for i=1:row
    for j=1:col
        r2=(i-ci)*(i-ci)+(j-cj)*(j-cj);
        Fc(i,j)=Fc(i,j)/(1+(r2/D2)^n);
    end
end
F=fftshift(Fc);
Img=ifft2(F);
Img=uint8( Img*(255/max(Img(:))) );
end

3、傅里叶变换:

% 傅里叶变换性质
function fftProperty()
img=zeros(512,512);
img(250:260,220:290)=1;
%img1=Zoom(img,0.5,2);      %缩放特性
img1=imrotate(img,45);        %频谱旋转特性
% figure
% imshow(img,[]);
% figure
% imshow(img1,[]);
F=fftshift(fft2(img));
a=log(abs(F)+1);
F1=fftshift(fft2(img1));
a1=log(abs(F1)+1);
% figure
% imshow(a,[]);
% figure
% imshow(a1,[]);
figure
subplot(221);imshow(img),title("原始图像");
subplot(222);imshow(img1),title("旋转45度后");
subplot(223);imshow(a),title("原始图像经过傅里叶变换后");
subplot(224);imshow(a1),title("旋转图像经过傅里叶变换后");

4、DCT变换:

% DCT
function dctProperty()
%图像的dct变换和逆变换
img=imread('lena.bmp');
F=dct2(img);
a=log(abs(F)+1);
% figure
% imshow(a,[]);
 
img1=idct2(F);
% figure
% imshow(img1,[]);
 
%采用逆变换计算某基函数
f=zeros(512,512);
f(12,15)=2;
img2=idct2(f);
% figure
% imshow(img2,[]);
figure
subplot(221);imshow(img),title("原始图像");
subplot(222);imshow(a,[]),title("DCT变换后");
subplot(223);imshow(img1,[]),title("DCT变换图像逆变换后");
subplot(224);imshow(img2,[]),title("某基函数逆变换后");
end

六、实验结果:

                                         图1 同态滤波

在这里插入图片描述

                                  图2-1 频域滤波-理想低通滤波

在这里插入图片描述

                                 图2-2 频域滤波-巴特沃兹低通滤波

在这里插入图片描述

                                       图3 傅里叶变换性质

在这里插入图片描述

                                        图4 DCT变换性质

七、实验心得:
(1)同态滤波:
利用广义叠加原理对同态系统进行滤波。
同态滤波是把频率过滤和灰度变换结合起来的一种图像处理方法,它依靠图像的照度/ 反射率模型作为频域处理的基础,利用压缩亮度范围和增强对比度来改善图像的质量。使用这种方法可以使图像处理符合人眼对于亮度响应的非线性特性,避免了直接对图像进行傅立叶变换处理的失真。
同态滤波的基本原理是:将像元灰度值看作是照度和反射率两个组份的产物。由于照度相对变化很小,可以看作是图像的低频成份,而反射率则是高频成份。通过分别处理照度和反射率对像元灰度值的影响,达到揭示阴影区细节特征的目的。
同态滤波处理的基本流程如下:
S(x,y)---->Log---->DFT---->频域滤波---->IDFT---->Exp---->T(x,y)
其中S(x,y)表示原始图像;T(x,y)表示处理后的图像;Log 代表对数运算;DFT 代表傅立叶变换(实际操作中运用快速傅立叶变换FFT);IDFT 代表傅立叶逆变换(实际操作中运用快速傅立叶逆变换IFFT);Exp 代表指数运算。
(2)频域滤波:
1、频域滤波与空域滤波的关系
傅立叶变换可以将图像从空域变换到频域,而傅立叶反变换则可以将图像的频谱逆变换为空域图像。这样一来,我们可以利用空域图像与频域之间的对应关系,尝试将空域卷积滤波变换为频域滤波,而后再将频域滤波处理后的图像再反变换回空间域,从而达到图像增强的目的。这样做的一个最主要的吸引力在于频域滤波的直观性特点。
根据著名的卷积定理,两个二维连续函数在空间域中的卷积可由其相应的两个傅立叶变换乘积的反变换而得到;反之,在频域中的卷积可由在空间域中乘积的傅立叶变换而得到,即:
f ( x , y ) ∗ h ( x , y )    ⟺    F ( u , v ) H ( u , v ) f(x,y)*h(x,y) \iff F(u,v)H(u,v)f(x,y)∗h(x,y)⟺F(u,v)H(u,v)
f ( x , y ) h ( x , y )    ⟺    F ( u , v ) ∗ H ( u , v ) f(x,y)h(x,y) \iff F(u,v)*H(u,v)f(x,y)h(x,y)⟺F(u,v)∗H(u,v)
其中,F(u,v) 和 H(u,v) 分别表示 f(x,y) 和 h(x,y) 的傅立叶变换,而符号表示傅立叶变换对。
式(1) 构成了整个频域滤波的基础。
2、频域滤波的基本步骤
根据式(1) 进行频域滤波通常应遵循以下步骤:
计算原始图像 f(x,y) 的 DFT,得到频谱 F(u,v);
将频谱 F(u,v) 的零频点移动到频谱图的中心位置;
计算滤波器函数 H(u,v) 与 F(u,v) 的乘积 G(u,v);
将频谱 G(u,v) 的零频点移回到频谱图的左上角位置;
计算第 (4) 步计算结果的傅立叶反变换 g(x,y);
取 g(x,y) 的实部作为最终滤波后的结果图像。
由上面叙述可知,滤波能否取得理想的关键取决于频域滤波函数 H(u,v)。常常称之为滤波器,或滤波器传递函数,因为它在滤波中抑制或滤除了频谱中某些频率的分量,而保留其他的一些频率不受影响。在这里只关心其值为实数的滤波器,这样滤波过程中 H 的每一个实数元素分别乘以 F 中对于位置的复数元素,从而使 F 中元素的实部和虚部等比例的变化,不会改变 F 的相位谱,这种滤波器也因此称为 “零相位” 滤波器。这样,最终反变换回空间域得到的滤波结果图像 g(x,y) 理论上也应当为实函数。然而由于计算舍入误差等原因,可额能会有非常小的虚部,通常将虚部直接忽略。
(3)傅里叶变换:
1、什么是傅里叶变换?
也称作傅立叶变换,表示能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。在不同的研究领域,傅立叶变换具有多种不同的变体形式,如连续傅立叶变换和离散傅立叶变换。傅里叶变换是一种分析信号的方法,它可分析信号的成分,也可用这些成分合成信号。许多波形可作为信号的成分,比如正弦波、方波、锯齿波等,傅里叶变换用正弦波作为信号的成分。
傅里叶变换的实质是将一个信号分离为无穷多多正弦/复指数信号的加成,也就是说,把信号变成正弦信号相加的形式——既然是无穷多个信号相加,那对于非周期信号来说,每个信号的加权应该都是零——但有密度上的差别,你可以对比概率论中的概率密度来思考一下——落到每一个点的概率都是无限小,但这些无限小是有差别的所以,傅里叶变换之后,横坐标即为分离出的正弦信号的频率,纵坐标对应的是加权密度
2、傅里叶变换有什么用呢?
举例说明:傅里叶变换可以将一个时域信号转换成在不同频率下对应的振幅及相位,其频谱就是时域信号在频域下的表现,而反傅里叶变换可以将频谱再转换回时域的信号。最简单最直接的应用就是时频域转换,比如在移动通信的LTE系统中,要把接收的信号从时域变成频域,就需要使用FFT(快速傅里叶变换)。又例如对一个采集到的声音做傅立叶变化就能分出好几个频率的信号。比如南非世界杯时,南非人吹的呜呜主拉的声音太吵了,那么对现场的音频做傅立叶变化(当然是对声音的数据做),会得到一个展开式,然后找出呜呜主拉的特征频率,去掉展开式中的那个频率的sin函数,再还原数据,就得到了没有呜呜主拉的嗡嗡声的现场声音。而对图片的数据做傅立叶,然后增大高频信号的系数就可以提高图像的对比度。同样,相机自动对焦就是通过找图像的高频分量最大的时候,就是对好了。
(4)DCT变换:
DCT变换,又称离散余弦变换,经常被信号处理和图像处理使用,用于对信号和图像(包括静止图像和运动图像)进行有损数据压缩。这是由于离散余弦变换具有很强的"能量集中"特性:大多数的自然信号(包括声音和图像)的能量都集中在离散余弦变换后的低频部分,而且当信号具有接近马尔科夫过程(Markov processes)的统计特性时,离散余弦变换的去相关性接近于K-L变换(Karhunen-Loève 变换–它具有最优的去相关性)的性能。例如,在静止图像编码标准JPEG中,在运动图像编码标准MJPEG和MPEG的各个标准中都使用了离散余弦变换。在这些标准制中都使用了二维的第二种类型离散余弦变换,并将结果进行量化之后进行熵编码。这时对应第二种类型离散余弦变换中的n通常是8,并用该公式对每个8x8块的每行进行变换,然后每列进行变换。得到的是一个8x8的变换系数矩阵。其中(0,0)位置的元素就是直流分量,矩阵中的其他元素根据其位置表示不同频率的交流分量。

  • 2
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kamen Black君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值