• 信号处理方法及应用仿真实验，两个不同频率信号叠加，新信号进行低通滤波还原出一个低频分量。
• 使用matlab实现的同态滤波，高通巴特沃斯滤波，低通巴特沃斯滤波
• 这个压缩包里放的文件是巴特沃斯滤波的C语言文件，很有参考价值
• TMS320C5509A FFT IFFT 巴特沃斯滤波的实现 TMS320C5509A FFT IFFT 巴特沃斯滤波的实现
• 在维基百科下载的mhtml文件，可以用手机电脑浏览器打开。含有函数表达式，写博客太麻烦，发上来大家互相学习，非商业用途。如有侵删！
• 基于matlab虹膜图像高斯滤波、低通滤波、巴特沃斯滤波 二、源代码 function varargout = frequencydem(varargin) % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', ...
一、简介
基于matlab虹膜图像高斯滤波、低通滤波、巴特沃斯滤波
二、源代码
function varargout = frequencydem(varargin)

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
'gui_Singleton',  gui_Singleton, ...
'gui_OpeningFcn', @frequencydem_OpeningFcn, ...
'gui_OutputFcn',  @frequencydem_OutputFcn, ...
'gui_LayoutFcn',  [] , ...
'gui_Callback',   []);

if nargin & isstr(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

%----------------------------------------------------------
% --- Executes just before frequencydem is made visible.
function frequencydem_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
movegui(hObject,'onscreen')% To display application onscreen
movegui(hObject,'center')  % To display application in the center of screen
image_file = get(handles.nameEdit,'String');
set(handles.Or_image,'HandleVisibility','OFF')
set(handles.filtered_image,'HandleVisibility','OFF');
set(handles.difference_image,'HandleVisibility','OFF');
set(handles.filt3D,'HandleVisibility','OFF');
set(handles.filt2D,'HandleVisibility','OFF');
set(handles.Or_image,'HandleVisibility','ON')
axes(handles.Or_image);
imagesc(im_original);
colormap(gray(256));
axis equal;
axis tight;
axis off;
set(handles.Or_image,'HandleVisibility','OFF')
set(handles.Or_image,'XTickLabel',' ','YTickLabel',' ')

%----------------------------------------------------------
% --- Outputs from this function are returned to the command line.
function varargout = frequencydem_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;

%----------------------------------------------------------
% --- Executes during object creation, after setting all properties.
function image_selection_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end

%----------------------------------------------------------
% Executes on button press in apply_button.
function apply_button_Callback(hObject, eventdata, handles)

image_file = get(handles.nameEdit,'String');  % to read the image filename selected
% set(handles.Or_image,'HandleVisibility','ON')  % to make plot 1 visible for original image plot
% image(im_original);
% colormap(gray(256));
% axis image;
% axis off;
% set(handles.filtered_image,'HandleVisibility','OFF') % to make plot 2 unvisible to the original image plot

set(handles.Or_image,'XTickLabel',' ','YTickLabel',' ') % to get rid of tick labels
method_number = get(handles.method_selection,'Value'); % selected method
t = get(handles.cutoffEdit,'String');
F_cut = str2num (t);
if F_cut <= 0
msgbox ('Please input meaningful cut off frequency');
return
end;
% For gaussian blur and USM-Filter method
switch method_number
case { 1 } %Ideal Filter
[im_filtered, H] = ideal_low(im_original, F_cut);
case { 2 }
[im_filtered, H] = ideal_high(im_original, F_cut);
case { 3 }
[im_filtered, H] = gaussian_low(im_original,F_cut);
case { 4 }
[im_filtered, H]= gaussian_high(im_original, F_cut);
case { 5 }
t = get(handles.butflyEdit,'String');
n = str2num (t);
if t <= 0
msgbox('Invalid order number!');
return;
end;
[im_filtered, H] = butterworth_low(im_original, F_cut,n);
case { 6 }
t = get(handles.butflyEdit,'String');
n = str2num (t);
if t <= 0
msgbox('Invalid order number!');
return;
end;
[im_filtered, H] = butterworth_high(im_original, F_cut,n);
end;

set(handles.Or_image,'HandleVisibility','ON')
axes(handles.Or_image);
imagesc(im_original);
colormap(gray(256));
axis equal;
axis tight;
axis off;
set(handles.Or_image,'HandleVisibility','OFF')
set(handles.filtered_image,'HandleVisibility','ON') ; % to make plot 2 visible to the filtered image plot
axes(handles.filtered_image);
imagesc(im_filtered) % to plot filtered image
colormap(gray(256));
axis equal;
axis tight;
axis off;
set(handles.filtered_image,'HandleVisibility','OFF')
set(handles.difference_image,'HandleVisibility','ON');
axes(handles.difference_image);
dif_image = im_filtered- im_original;
imagesc(dif_image);
colormap(gray(256));
axis equal;
axis tight;
axis off;
set(handles.difference_image,'HandleVisibility','OFF')
set(handles.filt2D,'HandleVisibility','ON');
axes(handles.filt2D);
imagesc(H);
colormap(gray(256));
axis equal;
axis tight;
axis off;
set(handles.filt2D,'HandleVisibility','OFF');
set(handles.filt3D,'HandleVisibility','ON');
axes(handles.filt3D);
[co,ro]=size(H);

surfl(H);

set(handles.filt3D,'HandleVisibility','OFF');

%----------------------------------------------------------
% --- Executes on button press in close_button.
function close_button_Callback(hObject, eventdata, handles)
close all; % to close GUI

%----------------------------------------------------------
% --- Executes during object creation, after setting all properties.
function method_selection_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end

% --- Executes during object creation, after setting all properties.
function nameEdit_CreateFcn(hObject, eventdata, handles)
% hObject    handle to nameEdit
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end

%Read all kinds of image files
lg=length(image_file);
if strcmpi(image_file(lg-2:lg),'mat') | strcmpi(image_file(lg-2:lg),'dat')
else

end;
im_original = double(im_original);
t=size(im_original,3);
if t==3
imt=floor((im(:,:,1)+im(:,:,2)+im(:,:,3))/3);
clear im_original;
im_original=imt;
clear imt;
end;
t=size(im_original,3);
if t~=1
display('Error in opening the image file!');
end;

% butterworth high pass filter
function [out, H] = butterworth_high (im,fc,n)
[co,ro] = size(im);
cx = round(co/2); % find the center of the image
cy = round (ro/2);
imf=fftshift(fft2(im));
H=zeros(co,ro);
for i = 1 : co
for j =1 : ro
d = (i-cx).^2 + (j-cy).^ 2;
if d ~= 0
H(i,j) = 1/(1+((fc*fc/d).^(2*n)));
end;

end;
end;
outf = imf .* H;
out = abs(ifft2(outf));

% butterworth low pass filter
function [out, H] = butterworth_low (im,fc,n)
[co,ro] = size(im);
cx = round(co/2); % find the center of the image
cy = round (ro/2);
imf=fftshift(fft2(im));
H=zeros(co,ro);
for i = 1 : co
for j =1 : ro
d = (i-cx).^2 + (j-cy).^ 2;
H(i,j) = 1/(1+((d/fc/fc).^(2*n)));
end;
end;
outf = imf .* H;
out = abs(ifft2(outf));

%Gaussian high pass filter
function  [out, H] = gaussian_high(im, fc)
imf = fftshift(fft2(im));
[co,ro]=size(im);
H = gaussian_filter(co,ro, fc);
H = 1-H;
out = zeros(co,ro);
outf= imf.*H;
out=abs(ifft2(outf));

%Gaussian lowpass filter
function  [out, H] = gaussian_low(im, fc)
imf = fftshift(fft2(im));
[co,ro]=size(im);
out = zeros(co,ro);
H = gaussian_filter(co,ro, fc);
outf= imf.*H;
out=abs(ifft2(outf));

% gaussian filter
function  H = gaussian_filter(co,ro, fc)
cx = round(co/2); % find the center of the image
cy = round (ro/2);
H = zeros(co,ro);
for i = 1 : co
for j = 1 : ro
d = (i-cx).^2 + (j-cy).^2;
H(i,j) = exp(-d/2/fc/fc);
end;
end;

三、运行结果

四、备注
完整代码或者代写添加QQ912100926
往期回顾>>>>>>
【图像压缩】图像处理教程系列之图像压缩【Matlab 074期】
【图像分割】图像处理教程系列之图像分割（一）【Matlab 075期】
【图像分割】图像处理教程系列之图像分割（二）【Matlab 076期】
【模式识别】银行卡号之识别【Matlab 077期】
【模式识别】指纹识别【Matlab 078期】
【图像处理】基于GUI界面之DWT+DCT+PBFO改进图像水印隐藏提取【Matlab 079期】
【图像融合】CBF算法之图像融合【Matlab 080期】
【图像去噪】自适应形态学之图像去噪【Matlab 081期】
【图像增强】DEHAZENET和HWD之水下去散射图像增强【Matlab 082期】
【图像增强】PSO寻优ACE之图像增强【Matlab 083期】
【图像重建】ASTRA算法之图像重建【Matlab 084期】
【图像分割】四叉树之图像分割【Matlab 085期】
【图像分割】心脏中心线之提取【Matlab 086期】
【图像识别】SVM植物叶子之疾病检测和分类【Matlab 087期】
【图像识别】基于GUI界面之模板匹配手写数字识别系统【Matlab 088期】
【图像识别】基于GUI界面之不变矩的数字验证码识别【Matlab 089期】
【图像识别】条形码识别系统【Matlab 090期】
【图像识别】基于GUI界面RGB和BP神经网络之人民币识别系统【Matlab 091期】
【图像识别】CNN卷积神经网络之验证码识别【Matlab 092期】
【图像分类】极限学习分类器之对遥感图像分类【Matlab 093期】
【图像变换】DIBR-3D之图像变换【Matalb 094期】
【图像分割】模糊聚类算法之FCM图像分割【Matlab 095期】
【模式识别】银行监控系统之人脸识别【Matlab 096期】
【模式识别】基于GUI界面之疲劳检测系统【Matlab 097期】
【图像识别】国外车牌识别【Matlab 098期】
【图像分割】最大类间方差法(otsu)之图像分割【Matlab 099期】
【图像分割】直觉模糊C均值聚类之图像分割IFCM【Matlab 100期】
【图像分割】基于matlab形态学重建和过滤改进FCM算法（FRFCM）之图像分割【Matlab 101期】
【图像增强】局部对比度增强CLAHE算法之直方图增强【Matlab 102期】
【图像融合】Frequency Partition之图像融合【Matlab 103期】
【图像评价】SVM之图像无参考质量评价【Matlab 104期】
【图像边缘检测】最小二乘法用于椭圆边缘检测【Matlab 105期】
【图像加密】基于GUI界面之混沌系统图像加密解密【Matlab 106期】
【图像配准】SIFT算法之图像配准【Matlab 107期】
【图像分割】随机游走算法用于图像分割【Matlab 108期】
【图像分割】形态学重建和过滤改进FCM算法（FRFCM）用于图像分割【Matlab 109期】
【图像分割】图像分割IFCM之直觉模糊C均值聚类【Matlab 110期】
【图像增强】区域相似变换函数与蜻蜓算法之灰度图像增强【Matlab 111期】
【图像直线拟合】最小二乘法之图像直线拟合【Matlab 112期】
【图像去雾】暗通道之图像去雾【Matlab 113期】
【图像识别】基于matlab GUI界面之路面裂缝识别【Matlab 114期】
【图像识别】身份证号码之识别【Matlab 115期】
【图像聚类】FCM和改进之FCM脑部CT图像聚类【Matlab 116期】
【图像评价】CCF算法之图像质量评价【Matlab 117期】
【图像分割】蚁群优化模糊聚类之图像分割【Matlab 118期】
【模式识别】基于GUI界面之水果检测系统【Matlab 119期】
【模式识别】基于GUI界面之水果分类系统【Matlab 120期】
【模式识别】基于GUI界面之水果分级系统【Matlab 121期】
【模式识别】人脸识别之检测脸、眼、鼻子和嘴【Matlab 122期】
【图像处理】基于 GUI界面之图像加解密【Matlab 124期】
【模式识别】基于GUI界面BP网络之手写体大写字母识别【Matlab 125期】
【图像分割】基于GUI界面之医学影像分割【Matlab 126期】
【图频处理】基于GUI界面之环图像处理与音乐播放系统【Matlab 127期】
【图像隐藏】基于Laguerre 变换之图像隐藏【Matlab 128期】
【图像处理】基于dwt函数之实现二维小波变换【Matlab 129期】
【图像处理】分形插值算法之调换图片【Matlab 130期】
【图像边缘检测】基于GUI界面之图像边缘检测系统【Matlab 131期】
【图像分割】基于GUI界面之彩色图像分割【Matlab 132期】
【图像去噪】基于GUI界面之图像滤波去噪【Matlab 133期】
【图像几何运算】基于GUI界面之图像几何运算系统【Matlab 134期】
【图像处理】基于GUI界面之图像处理系统【Matlab 135期】
【图像识别】基于matlab之细胞识别和边缘检测【Matlab 136期】
【模式识别】反馈神经Hopfield的数字识别【Matlab 172期】
【模式识别】指纹图像细节特征提取 【Matlab 173期】
【图像分割】RGB HSV YCbCr Lab颜色空间人脸检测之图像分割【Matlab 174期】
【图像压缩】小波变换之图像压缩【Matlab 175期】
【模式识别】基于GUI界面的火灾检测【Matlab 230期】
【模式识别】基于Hough变换的答题卡识别【Matlab 231期】
【模式识别】二值膨胀差分和椒盐滤波之教室内人数识别系统【Matlab 232期】
【小波变换】基于GUI界面DWT与SVD算法的数字水印 【Matlab 233期】
【模式识别】基于GUI界面的指针式表盘识别【Matlab 234期】
【模式识别】基于Hough变换图片车道线检测 【Matlab 235期】
【图像分割】粒子群优化T熵图像分割【Matlab 236期】
【图像分割】粒子群优化指数熵图像分割【Matlab 237期】
【图像分割】粒子群优化指数熵图像分割【Matlab 238期】
【模式识别】基于GUI贝叶斯最小错误率手写数字识别【Matlab 239期】
【模式识别】PCA手写数字识别【Matlab 240期】
【模式识别】特征匹配的英文印刷字符识别【Matlab 241期】
【模式识别】知识库的手写体数字识别【Matlab 242期】
【模式识别】银行卡数字识别【Matlab 243期】
【边缘检测】插值法亚像素边缘检测【Matlab 248期】
【图像识别】表情检测【Matlab 288期】
【图像检测】LSD直线检测【Matlab 289期】
【图像融合】红外与可见光的融合与配准算法【Matlab 290期】
【图像识别】帧差法跌倒检测【Matlab 291期】
【图像识别】组合BCOSFIRE过滤器进行墙体裂缝识别【Matlab 292期】
【模式识别】中值滤波和二值化的跌倒检测【Matlab 293期】
【图像隐写】DCT的图像隐写【Matlab 294期】
【图像隐写】LSB的图像隐写提取【Matlab 295期】
【图像隐写】高斯模型的JPEG图像隐写【Matlab 296期】
【图像隐写】图像自适应隐写算法wow【Matlab 297期】
【模式识别】基于GUI SVM和PCA的人脸识别【Matlab 298期】
【视频识别】轨迹方法行为识别【Matlab 299期】
【模式识别】基于GUI HSV和RGB模型水果分类【Matlab 300期】
【图像处理】基于GUI数字图像处理平台【Matlab 301期】
【图像分割】视网膜图像分割【Matlab 302期】
【模式识别】k-means聚类的手势识别【Matlab 303期】
【图像处理】Hough变换的人眼虹膜定位【Matlab 304期】
【图像处理】Kalman滤波的目标跟踪【Matlab 305期】
【图像分割】GAC水平集方法实现图像分割【Matlab 306期】
【图像分割】分水岭算法的图像分割【Matlab 307期】
【图像去噪】基于小波变换的图像去噪【Matlab 308期】
【图像融合】基于小波变换的图像融合【Matlab 309期】
【图像识别】图像识别物体计数【Matlab 310期】
【图像增强】模糊集的图像增强【Matlab 311期】
【图像处理】图像RGB三色的合成、分离【Matlab 312期】
【图像处理】鼠标画图【Matlab 313期】
【图像识别】基于二值化条形码识别【Matlab 314期】
【图像压缩】行程编码实现的图像压缩【Matlab 315期】
【图像几何】投影法测距【Matlab 316期】
【边缘检测】插值法亚像素边缘检测【Matlab 317期】
【图像分割】关键像素点的FLICM图像分割【Matlab 318期】
【图像识别】gabor滤波布匹瑕疵检测【Matlab 319期】
【图像识别】基于GUI车牌库识别【Matlab 320期】
【图像识别】国内车牌识别【Matlab 321期】
【图像分割】snake模型的图像分割【Matlab 322期】
【图像去噪】全变分算法图像去噪【Matlab 323期】
【图像去噪】非局部均值（NLM）滤波图像去噪【Matlab 324期】
【图像去噪】中值滤波图像去噪【Matlab 325期】
【边缘检测】元胞自动机图像边缘检测【Matlab 432期】
【图像识别】基于LBP+LPQ算法融合人脸表情识别【Matlab 433期】
【图像识别】OCR识别系统【Matlab 434期】
【边缘检测】拉普拉斯边缘检测与图像增强【Matlab 435期】
【图像处理】全变差图像处理【Matlab 436期】
【图像处理】直方图的医学图像处理【Matlab 437期】
【图像分割】GMM-HMRF图像分割【Matlab 438期】
【图像识别】ksvd字典学习之人脸表情识别【Matlab 439期】
【图像去噪】基于curvelet变换图像去噪【Matlab 440期】
【图像去噪】基于小波变换（中值、硬阙值、软阙值）的图像去噪【Matlab 441期】
【图像配准】sift图像配准【Matlab 442期】
【图像识别】扑克牌灰度二值化识别【Matlab 443期】
【图像转换】二维图转三维图【Matlab 444期】
【图像识别】基于阈值的裂痕、划痕检测【Matlab 445期】
【图像识别】基于Hough变换形状检测【Matlab 446期】
【图像识别】车辆出入库计时系统【Matlab 447期】
【图像识别】基于颜色直方图的危险品识别【Matlab 448期】
【图像识别】基于RBF手写数字识别【Matlab 449期】
【图像识别】花朵分类【Matlab 450期】
【图像增强】拉氏滤波的图像质量提升【Matlab 451期】
【边缘检测】基于CNN的灰度图像边缘提取【Matlab 452期】


展开全文
• 基于matlab虹膜图像高斯滤波、低通滤波、巴特沃斯滤波 二、源代码 function varargout = frequencydem(varargin) % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', ...
一、简介
基于matlab虹膜图像高斯滤波、低通滤波、巴特沃斯滤波
二、源代码
function varargout = frequencydem(varargin)

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
'gui_Singleton',  gui_Singleton, ...
'gui_OpeningFcn', @frequencydem_OpeningFcn, ...
'gui_OutputFcn',  @frequencydem_OutputFcn, ...
'gui_LayoutFcn',  [] , ...
'gui_Callback',   []);

if nargin & isstr(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

%----------------------------------------------------------
% --- Executes just before frequencydem is made visible.
function frequencydem_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
movegui(hObject,'onscreen')% To display application onscreen
movegui(hObject,'center')  % To display application in the center of screen
image_file = get(handles.nameEdit,'String');
set(handles.Or_image,'HandleVisibility','OFF')
set(handles.filtered_image,'HandleVisibility','OFF');
set(handles.difference_image,'HandleVisibility','OFF');
set(handles.filt3D,'HandleVisibility','OFF');
set(handles.filt2D,'HandleVisibility','OFF');
set(handles.Or_image,'HandleVisibility','ON')
axes(handles.Or_image);
imagesc(im_original);
colormap(gray(256));
axis equal;
axis tight;
axis off;
set(handles.Or_image,'HandleVisibility','OFF')
set(handles.Or_image,'XTickLabel',' ','YTickLabel',' ')

%----------------------------------------------------------
% --- Outputs from this function are returned to the command line.
function varargout = frequencydem_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;

%----------------------------------------------------------
% --- Executes during object creation, after setting all properties.
function image_selection_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end

%----------------------------------------------------------
% Executes on button press in apply_button.
function apply_button_Callback(hObject, eventdata, handles)

image_file = get(handles.nameEdit,'String');  % to read the image filename selected
% set(handles.Or_image,'HandleVisibility','ON')  % to make plot 1 visible for original image plot
% image(im_original);
% colormap(gray(256));
% axis image;
% axis off;
% set(handles.filtered_image,'HandleVisibility','OFF') % to make plot 2 unvisible to the original image plot

set(handles.Or_image,'XTickLabel',' ','YTickLabel',' ') % to get rid of tick labels
method_number = get(handles.method_selection,'Value'); % selected method
t = get(handles.cutoffEdit,'String');
F_cut = str2num (t);
if F_cut <= 0
msgbox ('Please input meaningful cut off frequency');
return
end;
% For gaussian blur and USM-Filter method
switch method_number
case { 1 } %Ideal Filter
[im_filtered, H] = ideal_low(im_original, F_cut);
case { 2 }
[im_filtered, H] = ideal_high(im_original, F_cut);
case { 3 }
[im_filtered, H] = gaussian_low(im_original,F_cut);
case { 4 }
[im_filtered, H]= gaussian_high(im_original, F_cut);
case { 5 }
t = get(handles.butflyEdit,'String');
n = str2num (t);
if t <= 0
msgbox('Invalid order number!');
return;
end;
[im_filtered, H] = butterworth_low(im_original, F_cut,n);
case { 6 }
t = get(handles.butflyEdit,'String');
n = str2num (t);
if t <= 0
msgbox('Invalid order number!');
return;
end;
[im_filtered, H] = butterworth_high(im_original, F_cut,n);
end;

set(handles.Or_image,'HandleVisibility','ON')
axes(handles.Or_image);
imagesc(im_original);
colormap(gray(256));
axis equal;
axis tight;
axis off;
set(handles.Or_image,'HandleVisibility','OFF')
set(handles.filtered_image,'HandleVisibility','ON') ; % to make plot 2 visible to the filtered image plot
axes(handles.filtered_image);
imagesc(im_filtered) % to plot filtered image
colormap(gray(256));
axis equal;
axis tight;
axis off;
set(handles.filtered_image,'HandleVisibility','OFF')
set(handles.difference_image,'HandleVisibility','ON');
axes(handles.difference_image);
dif_image = im_filtered- im_original;
imagesc(dif_image);
colormap(gray(256));
axis equal;
axis tight;
axis off;
set(handles.difference_image,'HandleVisibility','OFF')
set(handles.filt2D,'HandleVisibility','ON');
axes(handles.filt2D);
imagesc(H);
colormap(gray(256));
axis equal;
axis tight;
axis off;
set(handles.filt2D,'HandleVisibility','OFF');
set(handles.filt3D,'HandleVisibility','ON');
axes(handles.filt3D);
[co,ro]=size(H);

surfl(H);

set(handles.filt3D,'HandleVisibility','OFF');

%----------------------------------------------------------
% --- Executes on button press in close_button.
function close_button_Callback(hObject, eventdata, handles)
close all; % to close GUI

%----------------------------------------------------------
% --- Executes during object creation, after setting all properties.
function method_selection_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end

% --- Executes during object creation, after setting all properties.
function nameEdit_CreateFcn(hObject, eventdata, handles)
% hObject    handle to nameEdit
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end

%Read all kinds of image files
lg=length(image_file);
if strcmpi(image_file(lg-2:lg),'mat') | strcmpi(image_file(lg-2:lg),'dat')
else

end;
im_original = double(im_original);
t=size(im_original,3);
if t==3
imt=floor((im(:,:,1)+im(:,:,2)+im(:,:,3))/3);
clear im_original;
im_original=imt;
clear imt;
end;
t=size(im_original,3);
if t~=1
display('Error in opening the image file!');
end;

% butterworth high pass filter
function [out, H] = butterworth_high (im,fc,n)
[co,ro] = size(im);
cx = round(co/2); % find the center of the image
cy = round (ro/2);
imf=fftshift(fft2(im));
H=zeros(co,ro);
for i = 1 : co
for j =1 : ro
d = (i-cx).^2 + (j-cy).^ 2;
if d ~= 0
H(i,j) = 1/(1+((fc*fc/d).^(2*n)));
end;

end;
end;
outf = imf .* H;
out = abs(ifft2(outf));

% butterworth low pass filter
function [out, H] = butterworth_low (im,fc,n)
[co,ro] = size(im);
cx = round(co/2); % find the center of the image
cy = round (ro/2);
imf=fftshift(fft2(im));
H=zeros(co,ro);
for i = 1 : co
for j =1 : ro
d = (i-cx).^2 + (j-cy).^ 2;
H(i,j) = 1/(1+((d/fc/fc).^(2*n)));
end;
end;
outf = imf .* H;
out = abs(ifft2(outf));

%Gaussian high pass filter
function  [out, H] = gaussian_high(im, fc)
imf = fftshift(fft2(im));
[co,ro]=size(im);
H = gaussian_filter(co,ro, fc);
H = 1-H;
out = zeros(co,ro);
outf= imf.*H;
out=abs(ifft2(outf));

%Gaussian lowpass filter
function  [out, H] = gaussian_low(im, fc)
imf = fftshift(fft2(im));
[co,ro]=size(im);
out = zeros(co,ro);
H = gaussian_filter(co,ro, fc);
outf= imf.*H;
out=abs(ifft2(outf));

% gaussian filter
function  H = gaussian_filter(co,ro, fc)
cx = round(co/2); % find the center of the image
cy = round (ro/2);
H = zeros(co,ro);
for i = 1 : co
for j = 1 : ro
d = (i-cx).^2 + (j-cy).^2;
H(i,j) = exp(-d/2/fc/fc);
end;
end;

三、运行结果

四、备注
版本：2014a


展开全文
• % butterworth1D : 巴特沃斯滤波后的输出 butterworth1D=fftshift(fft(input1D)); center=floor(length(input1D)/2); for iter=1:length(input1D) D=sqrt((iter-center)^2); H=1/(1+(D/D_0)^(2*n)); % 低通...
为了处理手机加速度计传感器数据。
function butterworth1D = ButterworthFilter( input1D, D_0, n )
%BUTTERWORTHFILTER 此处显示有关此函数的摘要
%   此处显示详细说明
%                    1
%   H(x) =  ---------------------
%             1+[D / D_0]^(2n)
%   input1D : 输入一维信号
%   D_0     : 20
%   n       : 3
%   butterworth1D : 巴特沃斯滤波后的输出

butterworth1D=fftshift(fft(input1D));
center=floor(length(input1D)/2);
for iter=1:length(input1D)
D=sqrt((iter-center)^2);

H=1/(1+(D/D_0)^(2*n));  % 低通滤波器
% H=1/(1+(D_0/D)^(2*n));  % 高通滤波器

butterworth1D(iter)=H*butterworth1D(iter);
end
butterworth1D=real(ifft(ifftshift(butterworth1D)));

end

function homomorphic1D = HomomorphicFilter( input1D, D_0, R, RH, C )
%HOMOMORPHICFILTER 此处显示有关此函数的摘要
%   此处显示详细说明
%
%   H(x) = (RH - R) * (1 - exp(-C * (D.^2 / D_0.^2))) + R
%   input1D : 输入一维信号
%   D_0     : 10
%   R       : 1
%   RH      : 2
%   C       : 4

homomorphic1D=fftshift(fft(input1D));
center=floor(length(input1D)/2);
for iter=1:length(input1D)
D=sqrt((iter-center)^2);
H=(RH-R)*(1-exp(-C*(D.^2/D_0.^2)))+R;
homomorphic1D(iter)=H*homomorphic1D(iter);
end
homomorphic1D=real(ifft(ifftshift(homomorphic1D)));
end

使用ButterworthFilter
clc
clear
sample = 1;
windowWidth = 500;
iterCount=length(t)-windowWidth+1;
offset=6;
t_sub_windowWidth=t(windowWidth:sample:length(t));
x_sub_windowWidth=x(windowWidth-offset:sample:length(t)-offset);
plot(t_sub_windowWidth, x_sub_windowWidth, 'Color', [1 0 0])
hold on

x_butterworth=zeros(iterCount, 1);
for i=1:iterCount
sub_x=x(i:1:i+windowWidth-1);
sub_x_butterworthFilter=ButterworthFilter(sub_x, 30, 1);
x_butterworth(i,1)=sub_x_butterworthFilter(windowWidth-offset);
end

plot(t_sub_windowWidth, x_butterworth, 'Color', [0 0 0])
% x_butterworth_homomorphic=HomomorphicFilter(x_butterworth, 10, 1, 2, 2);
% plot(t_sub_windowWidth,x_butterworth_homomorphic, 'Color', [0 0 1])

% All_X_Butterworth = ButterworthFilter(x_sub_windowWidth, 100, 1);
% plot(t_sub_windowWidth, x_sub_windowWidth, 'Color', [0 1 1]);
% plot(t_sub_windowWidth, All_X_Butterworth, 'Color', [0 0 1]);


效果图
红色为原始数据  黑色为滤波后数据
手持手机移动

实验室采集


展开全文
• ## matlab 巴特沃斯滤波

万次阅读 2017-10-20 20:05:23
低通滤波 fs=30; %采样频率 N=300; %N/fs 秒数据 n=0:N-1; t=n/fs; %时间 if 0 fl = 0.4; %低频 fh = 5; %高频 s=cos(2*pi*fl*t)+cos(2*pi*fh*t); %s是

低通滤波
fs=30;              %采样频率
N=300;              %N/fs 秒数据
n=0:N-1;
t=n/fs;             %时间

if 0
fl = 0.4;           %低频
fh = 5;             %高频
s=cos(2*pi*fl*t)+cos(2*pi*fh*t);    %s是0.4Hz和5Hz信号叠加，低通截止频率是1Hz
subplot(121);plot(t,s);
title('输入信号');xlabel('t/s');ylabel('幅度');
sfft=fft(s);
subplot(122);
plot((1:length(sfft)/2)*fs/length(sfft),2*abs(sfft(1:length(sfft)/2))/length(sfft));
title('信号频谱');xlabel('频率/Hz');ylabel('幅度');
%设计低通滤波器，截止频率为1
if 0
Wp=1/fs;Ws=2/fs;                %截止频率为1Hz,阻带截止频率为2Hz
%估算得到Butterworth低通滤波器的最小阶数N和3dB截止频率Wn
[n,Wn]=buttord(Wp,Ws,1,50);     %阻带衰减大于50db,通带纹波小于1db
else
n=4;
Wn=1/(fs/2);
end
%设计Butterworth低通滤波器
[a,b]=butter(n,Wn);
[h,f]=freqz(a,b,'whole',fs);        %求数字低通滤波器的频率响应
f=(0:length(f)-1*fs/length(f));     %进行对应的频率转换
figure;
plot(f(1:length(f)/2),abs(h(1:length(f)/2)));       %绘制幅频响应图
title('巴特沃斯低通滤波器');xlabel('频率/Hz');ylabel('幅度');
grid;
sF=filter(a,b,s);                   %叠加函数s经过低通滤波器以后的新函数
figure;
subplot(121);
plot(t,sF);                         %绘制叠加函数s经过低通后时域图形
title('输出信号');xlabel('t/s');ylabel('幅度');
SF=fft(sF);
subplot(122);
plot((1:length(SF)/2)*fs/length(SF),2*abs(SF(1:length(SF)/2))/length(SF));
title('低通滤波后频谱');xlabel('频率/Hz');ylabel('幅度');
end
带通滤波
fl = 2;             %低频
fh = 10;             %高频
s=cos(2*pi*fl*t)+cos(2*pi*fh*t);    %s是2Hz和3Hz信号叠加，带通截止频率是1Hz~4Hz

s=H;
N=3636;              %N/fs 秒数据
n=0:N-1;
t=n/fs;             %时间

subplot(121);plot(t,s);
title('输入信号');xlabel('t/s');ylabel('幅度');
sfft=fft(s);
subplot(122);
plot((1:length(sfft)/2)*fs/length(sfft),2*abs(sfft(1:length(sfft)/2))/length(sfft));
title('信号频谱');xlabel('频率/Hz');ylabel('幅度');
%设计带通滤波器，截止频率为0.4~5
n=4;
Wn=[0.4/(fs/2) 5/(fs/2)]

%设计Butterworth低通滤波器
[a,b]=butter(n,Wn);
[h,f]=freqz(a,b,'whole',fs);        %求数字低通滤波器的频率响应
f=(0:length(f)-1*fs/length(f));     %进行对应的频率转换
figure;
plot(f(1:length(f)/2),abs(h(1:length(f)/2)));       %绘制幅频响应图
title('巴特沃斯带通滤波器');xlabel('频率/Hz');ylabel('幅度');
grid;
sF=filter(a,b,s);                   %叠加函数s经过低通滤波器以后的新函数
figure;
subplot(121);
plot(t,sF);                         %绘制叠加函数s经过低通后时域图形
title('输出信号');xlabel('t/s');ylabel('幅度');
SF=fft(sF);
subplot(122);
plot((1:length(SF)/2)*fs/length(SF),2*abs(SF(1:length(SF)/2))/length(SF));
title('带通滤波后频谱');xlabel('频率/Hz');ylabel('幅度');
展开全文
• 一个非常实用的巴特沃斯滤波器，能体现数字滤波器的特点
• 利用巴特沃斯滤波器对加噪图像进行滤波处理。 处理的一些思路： 实在是不得不感慨MATLAB的强大。实验很简单。基本就是依靠的仿真软件。 对图像进行加噪处理直接调用了现成的函数。 对图像的滤波处理。将图片的数据...
• compile 'uk.me.berndporr:iirj:1.1' /** * Butterworth band pass * @param data * @param lowcut * @param highcut * @param fs * @param order * @return * Author:Bean ...public double[] butter_ba...
• 1、巴特沃斯滤波器 1.1 基本概念 在图像处理中，巴特沃斯滤波器传递函数如下： 巴特沃斯低通滤波器公式： 巴特沃斯高通滤波器公式： 在公式中，D(u,v)代表频域当中，点(u,v)到中心点的距离，我们知道二维图像的...
• //巴特沃斯低通滤波器 void CDetectDlg::BLPF(CvMat* matD,CvMat* matH,float D0, int n) { if (D0 ) { return ; } int w = matD->rows; int h = matD->cols; for (int u = 0; u ; ++u) { for (int...
• 2、查找LPF2的意思，发现是二阶巴特沃斯滤波函数，但此项目的滤波迭代方式很怪异； 3、传统迭代很直观，此项目迭代方式很少见，很难理解，直接网上查找无果； 4、查找此代码来源，发现是从PX4项目摘抄过来的，于是...
• 高通滤波与低通滤波正好相反，是频域图像的高频部分通过而抑制低频部分。在图像中图像的边缘对应高频分量，因此高通滤波的效果是图像锐化。同样最简单的高通滤波器是理想高通滤波器。通过设置一个频率阈值，将高于该...
• 二阶巴特沃斯，卡尔曼滤波器代码。跟踪微分器代码
• 首先附上MATLAB代码： % 读入RGB图像并将其转换成灰度图像 I=imread('pic12.jpg'); I=rgb2gray(I);...imshow(E2),title('滤波后的结果');   转载于:https://www.cnblogs.com/natalie/p/4469496.html
• 最近从MATLAB转到python进行科学计算，来比较下MATLAB和SciPy计算巴特沃斯通带滤波的效果。 MATLAB clear; close all; clc; sampRat = 100.0; %采样频率 T = 10; t = 0:1/sampRat:(T*sampRat-1)/sampRat; x = ...
• 巴特沃斯高通滤波 n阶巴特沃斯高通滤波的传递函数如下： H(u,v)=1−11+(D(u,v)/D0)2n(7-1) H(u,v) = 1 - \frac{1}{1 + (D(u,v) / D_0)^{2n}} \tag{7-1} H(u,v)=1−1+(D(u,v)/D0​)2n1​(7-1) 其中，D(u,v)=(u−P2)2+...
• 采用matlab实现巴特沃斯低通滤波，对信号Mix_Signal_1 和 Mix_Signal_2 分别作巴特沃斯低通滤波
• 巴特沃斯低通滤波算法及说明，对初学者较好
• 计划用主频为40Hz的雷克子波，傅里叶变换后，利用巴特沃斯高通滤波器滤除5,7,15Hz及以下的频率，以下为我写的程序及滤波后所得结果，有两个问题需要请教：1.滤波后所得频谱图(图二)的横坐标没有从零开始，2.感觉效果...
• 借用python巴特沃斯低通滤波公式得到滤波参数，用C语言概念写出滤波公式
• 频率滤波的基本步骤是： （1）计算需要增强图像的傅里叶变换。 ...巴特沃斯低通滤波器的传递函数为H(u,v)=1/1+[D(u,v)/D0]^2n 相关MATLAB程序如下: I=imread('pic8.jpg'); I=rgb2gray(I);...
• 六阶巴特沃斯低通滤波算法，截止频率35Hz
• 设计巴特沃斯低通滤波对图像进行低通滤波处理，显示结果

...