失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【图像修复】基于matlab GUI自适应空间滤波图像修复【含Matlab源码 840期】

【图像修复】基于matlab GUI自适应空间滤波图像修复【含Matlab源码 840期】

时间:2020-02-07 14:21:37

相关推荐

【图像修复】基于matlab GUI自适应空间滤波图像修复【含Matlab源码 840期】

一、获取代码方式

获取代码方式1:

通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

获取代码方式2:

完整代码已上传我的资源:【图像修复】基于matlab GUI自适应空间滤波图像修复【含Matlab源码 840期】

备注:

订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、自适应滤波器简介

自适应滤波器由参数可调的数字滤波器和自适应算法两部分组成。 自适应滤波与维纳滤波、卡尔曼滤波最大的区别在于,自适应滤波在输出与滤波系统之间存在有反馈通道,根据某一时刻滤波器的输出与期望信号的误差调整滤波器的系数,从而实现滤波器系数的动态调整,实现最优滤波。

1 信号模型

自适应滤波的目的仍然是从观测信号中提取真实准确的期望信号,因此涉及到的信号有:

1)期望信号 d(n)

2)输入信号 x(n)=d(n)+v(n)

3)输出信号 y(n)

2 算法原理

一个M阶滤波器,系数为w(m),则输出为:y(n)=Σw(m)x(n-m) m=0…M,写成矩阵形式:y(j)=WT(j)*X(j),n时刻的输出误差为: e(j)=d(j)-y(j)= d(j)- WT(j)X(j),

定义目标函数为 E[e(j)2],则有:J(j)=E[e(j)2]= E[(d(j)- WT(j)X(j))^2]。

当上述误差达到最小时,即实现最优滤波,这种目标函数确定的为最小方差自适应滤波。对于目标函数J(j),需要求得使其取到最小值对应的W,这里使用梯度下降法进行最优化:W(j+1)=W(j)+1/2μ(-▽J(j))

▽J(j)=-2E[X(j)( d(j)- WT(j)*X(j))]= -2E[X(j)e(j)]

W(j+1)=W(j)+μE[X(j)e(j)]

其中-2X(j)e(j)称为瞬时梯度,因为瞬时梯度是真实梯度的无偏估计,这里可以使用瞬时梯度代替真实梯度。W(j+1)=W(j)+μX(j)e(j)

由此,可以得到自适应滤波最佳系数的迭代公式。

三、部分源代码

function varargout = adpmedian_filter(varargin)% ADPMEDIAN_FILTER M-file for adpmedian_filter.fig%ADPMEDIAN_FILTER, by itself, creates a new ADPMEDIAN_FILTER or raises the existing%singleton*.%%H = ADPMEDIAN_FILTER returns the handle to a new ADPMEDIAN_FILTER or the handle to%the existing singleton*.%%ADPMEDIAN_FILTER('CALLBACK',hObject,eventData,handles,...) calls the local%function named CALLBACK in ADPMEDIAN_FILTER.M with the given input arguments.%%ADPMEDIAN_FILTER('Property','Value',...) creates a new ADPMEDIAN_FILTER or raises the%existing singleton*. Starting from the left, property value pairs are%applied to the GUI before adpmedian_filter_OpeningFunction gets called. An%unrecognized property name or invalid value makes property application%stop. All inputs are passed to adpmedian_filter_OpeningFcn via varargin.%%*See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one%instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help adpmedian_filter% Last Modified by GUIDE v2.5 06-Jul- 20:13:38% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @adpmedian_filter_OpeningFcn, ...'gui_OutputFcn', @adpmedian_filter_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin & isstr(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before adpmedian_filter is made visible.function adpmedian_filter_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to adpmedian_filter (see VARARGIN)img = imread('lena.bmp');axes(handles.axes1);imshow(img);g = imnoise(img,'gaussian',0.01,0.005);axes(handles.axes2);imshow(g);f = adpmedian(g,7);axes(handles.axes3);imshow(f);set(handles.m_edit,'string',0.01);set(handles.v_edit,'string',0.005);set(handles.smax_edit,'string',7);% Choose default command line output for adpmedian_filterhandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes adpmedian_filter wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.function varargout = adpmedian_filter_OutputFcn(hObject, eventdata, handles)% varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout{1} = handles.output;% --- Executes during object creation, after setting all properties.function image_pop_menu_CreateFcn(hObject, eventdata, handles)% hObject handle to image_pop_menu (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: popupmenu controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));end% --- Executes on selection change in image_pop_menu.function image_pop_menu_Callback(hObject, eventdata, handles)% hObject handle to image_pop_menu (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)m = str2num(get(handles.m_edit,'string'));v = str2num(get(handles.v_edit,'string'));smax = str2num(get(handles.smax_edit,'string'));val = get(hObject,'value');str = get(hObject,'string');val1 = get(handles.noise_pop_menu,'value');str1 = get(handles.noise_pop_menu,'string');switch str{val}case 'Lena'lena = [];lena = imread('lena.bmp');img = lena;case 'Cameraman'cameraman = [];cameraman = imread('cameraman.tif');img = cameraman;case 'Peppers'peppers = [];peppers = imread('peppers.bmp');img = peppers;case 'Fingerprint'fingerprint = [];fingerprint = imread('fingerprint.jpg');img = fingerprint;case 'Licenceplate'licenceplate = [];licenceplate = imread('licenceplate.jpg');img = licenceplate;case 'Haze'haze = [];haze = imread('haze.jpg');img = haze;case 'Cloudy'cloudy = [];cloudy = imread('cloudy.tif');img = cloudy;endaxes(handles.axes1);imshow(img);switch str1{val1}case '高斯噪声'set(handles.m_edit,'enable','on');set(handles.v_edit,'enable','on');g = imnoise(img,'gaussian',m,v);case '椒盐噪声'set(handles.m_edit,'enable','on');g = imnoise(img,'salt & pepper',m);set(handles.v_edit,'enable','off');case '乘性噪声'set(handles.v_edit,'enable','on');g = imnoise(img,'speckle',v);set(handles.m_edit,'enable','off');case '泊松噪声'g = imnoise(img,'poisson');set(handles.m_edit,'enable','off');set(handles.v_edit,'enable','off');endaxes(handles.axes2);imshow(g);f = adpmedian(g,smax);axes(handles.axes3);imshow(f);% Hints: contents = get(hObject,'String') returns image_pop_menu contents as cell array% contents{get(hObject,'Value')} returns selected item from image_pop_menu% --- Executes during object creation, after setting all properties.function noise_pop_menu_CreateFcn(hObject, eventdata, handles)% hObject handle to noise_pop_menu (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: popupmenu controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));end

四、运行结果

五、matlab版本及参考文献

1 matlab版本

a

2 参考文献

[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,.

[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,.

[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,.

[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,.

如果觉得《【图像修复】基于matlab GUI自适应空间滤波图像修复【含Matlab源码 840期】》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。