关于数字图像处理中不同的低通滤波器的区别以及cut-off frequency 对于图像的影响

本文探讨了数字图像处理中低通滤波器的作用,解释了图像在时域和频域的含义,并介绍了理想低通、Butterworth和高斯低通滤波器的差异。通过实例展示了截止频率对图像清晰度和ringing现象的影响,强调了不同滤波器在实际应用中的选择。
摘要由CSDN通过智能技术生成

最近做课设的时候遇到了低通滤波器的问题。翻阅了下书籍,得到了一些收获,想来分享下。如有不对的地方,请大神斧正。

首先要清楚的概念是,图像(假设是灰度图,便于描述,或者是单个channel的图)在时域和频域中的分别是什么含义。在时域中,很显然,对应的是每个像素,每个像素上的点的灰度值。 如果该图像用matlab显示的话,(x,y)代表图中的每个像素,每个像素对应Z的值就是该图像在这个像素点的灰度。那么在频域中,也就是如果我对这个矩阵进行傅里叶变换,我们得到的该图像在频域中的表达。 图像在频域中,是该图像的颜色变化的剧烈程度。低频部分表示那些颜色变化不是很剧烈的部分,而高频部分则是那些颜色变化剧烈的部分。举个例子,如果我们有一副海洋和沙滩的图,沙滩上可能有些人以及其他的东西。 那么,我们可以发现,图像中,低频部分所关联的就是颜色变化平滑的,或者说不太变化的,如大片的沙滩以及海洋。而高频部分则关联的是颜色变化剧烈的部分,如海洋和沙滩交接的部分,或者其他颜色变化剧烈的东西,一般高频部分所关联的是两个颜色的相交接的部分,而这一般都发生在两个不同物体的轮廓上,所以,如果我们只取特定高频的部分,那我们就能得到物体的轮廓了(本文主要讲解低通滤波器,所以涉及的基本都是低频部分,高频部分会在其他博文中阐述)。

好了,现在我们对于图像的傅里叶变化有了一个大概的认识。那么我们来说说为什么在图像处理时,要使用低通滤波器呢。出于某些目的,我们希望我们的图像不那么清晰,即去除噪点或者不要有那么多的细节(比如,美图秀秀中磨皮。。。 我们不希望皮肤上的毛孔都出现在图像上,但现在的手机像素都很高,所以如果不做处理,那么脸上就会有很多细节都展现在图片上,如痘印啊,粗大的毛孔等)。那么这个时候,我们就需要使用低通滤波器了,即把那些高频的细节都过滤掉,留下的就只有平滑的皮肤了。

接下来,在来看看低通滤波器的种类。低通滤波器的种类有很多,比较常接触的大概是以下几类:

(1)理想的低通滤波器

  • 11
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,以下是一个用Matlab编写的数字图像处理界面,可以使用指数低通滤波器图像进行滤波: ```matlab function lowpass_filter_gui % 创建GUI窗口 hFig = figure('Name','Exponential Low Pass Filter','NumberTitle','off',... 'Position',[200 200 600 400],'Toolbar','none','MenuBar','none'); % 创建绘图区域和控制面板 hAx = axes('Units','pixels','Position',[50 50 400 300]); hPanel = uipanel('Title','Filter Settings','Units','pixels','Position',[450 50 130 300]); % 创建滑动条和标签 hSlider = uicontrol(hPanel,'Style','slider','Units','pixels','Position',[10 240 100 20],... 'Min',0,'Max',1,'Value',0.5,'SliderStep',[0.01 0.1],'Callback',@slider_callback); uicontrol(hPanel,'Style','text','Units','pixels','Position',[10 220 100 20],'String','Cutoff Frequency'); % 创建复选框和标签 hCheckbox = uicontrol(hPanel,'Style','checkbox','String','Show Original','Value',1,... 'Position',[10 180 100 20],'Callback',@checkbox_callback); uicontrol(hPanel,'Style','text','Units','pixels','Position',[10 160 100 20],'String','Original Image'); % 创建按钮 uicontrol(hPanel,'Style','pushbutton','Units','pixels','Position',[10 100 100 30],... 'String','Open Image','Callback',@open_image_callback); uicontrol(hPanel,'Style','pushbutton','Units','pixels','Position',[10 50 100 30],... 'String','Save Image','Callback',@save_image_callback); % 初始化滤波器 fc = 0.1; % 截止频率 alpha = exp(-2*pi*fc); % 指数衰减系数 show_original = true; % 是否显示原始图像 % 滑动条回调函数 function slider_callback(hObject,eventdata) fc = get(hObject,'Value'); % 更新截止频率 alpha = exp(-2*pi*fc); % 更新指数衰减系数 filter_image(); % 更新滤波后的图像 end % 复选框回调函数 function checkbox_callback(hObject,eventdata) show_original = get(hObject,'Value'); % 更新显示原始图像的状态 filter_image(); % 更新滤波后的图像 end % 打开图像文件 function open_image_callback(hObject,eventdata) [filename, pathname] = uigetfile({'*.jpg;*.png;*.bmp', 'Image files (*.jpg,*.png,*.bmp)'}); if filename ~= 0 im = imread(fullfile(pathname,filename)); % 读取图像文件 imshow(im,'Parent',hAx); % 显示图像 filter_image(); % 更新滤波后的图像 end end % 保存图像文件 function save_image_callback(hObject,eventdata) [filename, pathname] = uiputfile({'*.jpg', 'JPEG image (*.jpg)'; '*.png', 'PNG image (*.png)'}); if filename ~= 0 imwrite(get(hAx,'Children').CData,fullfile(pathname,filename)); % 保存图像文件 end end % 对图像进行滤波 function filter_image() if show_original % 如果需要显示原始图像,则直接显示 set(hAx,'Visible','on'); else % 否则进行滤波后显示 set(hAx,'Visible','off'); im = get(hAx,'Children').CData; % 获取当前图像 im = double(im)/255; % 将图像转换为double类型,并归一化到[0,1] im_filtered = exp_filter(im,alpha); % 对图像进行指数低通滤波 imshow(im_filtered,'Parent',hAx); % 显示滤波后的图像 end end % 指数低通滤波器函数 function im_filtered = exp_filter(im,alpha) [m,n] = size(im); % 获取图像大小 % 创建卷积核 H = zeros(m,n); for i = 1:m for j = 1:n H(i,j) = alpha^sqrt((i-m/2)^2 + (j-n/2)^2); % 计算卷积核心到当前像素的距离 end end H = repmat(H,[1 1 3]); % 将卷积核复制到三个通道 H = ifftshift(H); % 对卷积核进行心化 % 对图像进行滤波 im_fft = fft2(im); im_filtered_fft = im_fft.*H; im_filtered = real(ifft2(im_filtered_fft)); im_filtered = im_filtered/max(im_filtered(:)); % 对滤波后的图像进行归一化 end end ``` 此代码创建了一个数字图像处理GUI界面,其包含一个绘图区域和一个控制面板。控制面板包括一个滑动条、一个复选框和两个按钮,用于控制指数低通滤波器的截止频率、显示原始图像和打开/保存图像文件。程序通过调用回调函数来更新截止频率、显示原始图像的状态和进行图像处理操作。当打开图像文件时,程序将读取图像文件并显示在绘图区域。当复选框被选时,程序将直接显示原始图像;否则,程序将对图像进行指数低通滤波,并显示滤波后的图像。指数低通滤波器函数将对图像进行处理,并返回滤波后的图像
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值