【圖像檢索】基于Hu不變矩實(shí)現(xiàn)圖像檢索matlab代碼
【圖像檢索】基于Hu不變矩實(shí)現(xiàn)圖像檢索matlab代碼
1 簡(jiǎn)介
描述了一種基于 Hu 形狀不變矩的圖像全局形狀特征提取方法和算法 IMS 。 實(shí)驗(yàn)結(jié)果表明 , 使用 IMS 。 算法提取的形狀特征向量具有對(duì)平移 、 旋轉(zhuǎn)和尺度變化的不變性 , 適合于進(jìn)行圖像形狀的檢索 。
2 部分代碼
function varargout = MainForm ( varargin ) % MAINFORM MATLAB code for MainForm.fig % MAINFORM, by itself, creates a new MAINFORM or raises the existing % singleton*. % % H = MAINFORM returns the handle to a new MAINFORM or the handle to % the existing singleton*. % % MAINFORM(’CALLBACK’,hObject,eventData,handles,...) calls the local % function named CALLBACK in MAINFORM.M with the given input arguments. % % MAINFORM(’Property’,’Value’,...) creates a new MAINFORM or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before MainForm_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to MainForm_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 MainForm % Last Modified by GUIDE v2.5 05-Apr-2015 17:23:30 % Begin initialization code - DO NOT EDIT gui_Singleton = 1 ; gui_State = struct ( ’gui_Name’ , mfilename , ... ’gui_Singleton’ , gui_Singleton , ... ’gui_OpeningFcn’ , @ MainForm_OpeningFcn , ... ’gui_OutputFcn’ , @ MainForm_OutputFcn , ... ’gui_LayoutFcn’ , [] , ... ’gui_Callback’ , []); if nargin && ischar ( 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 MainForm is made visible. function MainForm_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 MainForm (see VARARGIN) % Choose default command line output for MainForm handles . output = hObject ; InitAxes ( handles ); handles . filePath = 0 ; handles . vec_hu = 0 ; handles . vec_color = 0 ; handles . Img = 0 ; handles . ind_dis_sort = 0 ; handles . page = 0 ; handles . H = 0 ; % Update handles structure guidata ( hObject , handles ); % javaFrame = get(hObject, ’JavaFrame’); % javaFrame.setFigureIcon(javax.swing.ImageIcon(’MainForm.jpg’)); % UIWAIT makes MainForm wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = MainForm_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 structure varargout { 1 } = handles . output ; % --- Executes on button press in pushbutton7. function pushbutton7_Callback ( hObject , eventdata , handles ) % hObject handle to pushbutton7 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) if handles . page < 2 return ; end page = handles . page ; ind_dis_sort = handles . ind_dis_sort ; H = handles . H ; page = page - 1 ; st = ( page -1 ) * 8+1 ; et = page * 8 ; for i = st : et file = fullfile ( pwd , sprintf ( ’%s’ , H ( ind_dis_sort ( i )) . filename )); Img = imread ( file ); imshow ( Img , [], ’parent’ , eval ( sprintf ( ’handles.axes%d’ , ( i - ( page -1 ) * 8 ) +1 ))); axes ( eval ( sprintf ( ’handles.axes%d’ , ( i - ( page -1 ) * 8 ) +1 ))); title ( sprintf ( ’%02d’ , i )); end handles . ind_dis_sort = ind_dis_sort ; handles . page = page ; guidata ( hObject , handles ); set ( handles . textpage , ’String’ , sprintf ( ’第%d頁(yè)/共2頁(yè)’ , page )); % --- Executes on button press in pushbutton8. function pushbutton8_Callback ( hObject , eventdata , handles ) % hObject handle to pushbutton8 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) if handles . page > = 2 return ; end page = handles . page ; ind_dis_sort = handles . ind_dis_sort ; H = handles . H ; page = page + 1 ; st = ( page -1 ) * 8+1 ; et = page * 8 ; for i = st : et file = fullfile ( pwd , sprintf ( ’%s’ , H ( ind_dis_sort ( i )) . filename )); Img = imread ( file ); imshow ( Img , [], ’parent’ , eval ( sprintf ( ’handles.axes%d’ , ( i - ( page -1 ) * 8 ) +1 ))); axes ( eval ( sprintf ( ’handles.axes%d’ , ( i - ( page -1 ) * 8 ) +1 ))); title ( sprintf ( ’%02d’ , i )); end handles . ind_dis_sort = ind_dis_sort ; handles . page = page ; guidata ( hObject , handles ); set ( handles . textpage , ’String’ , sprintf ( ’第%d頁(yè)/共2頁(yè)’ , page )); % --- Executes on button press in pushbutton2. function pushbutton2_Callback ( hObject , eventdata , handles ) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) start_path = fullfile ( pwd , ’database’ ); dialog_title = ’選擇數(shù)據(jù)庫(kù)’ ; folder_name = uigetdir ( start_path , dialog_title ); if isequal ( folder_name , 0 ) return ; end db_file = fullfile ( folder_name , ’H.mat’ ); if ~ exist ( db_file , ’file’ ) msgbox ( ’未找到特征數(shù)據(jù)庫(kù),請(qǐng)進(jìn)行特征提取操作!’ , ’提示信息’ ); return ; end load ( db_file ); handles . folder_name = folder_name ; handles . H = H ; guidata ( hObject , handles ); msgbox ( ’選擇數(shù)據(jù)庫(kù)成功!’ , ’提示信息’ ); % --- Executes on button press in pushbutton3. function pushbutton3_Callback ( hObject , eventdata , handles ) % hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) if isequal ( handles . Img , 0 ) return ; end vec_hu = get_hu_vec ( handles . Img ); handles . vec_hu = vec_hu ; guidata ( hObject , handles ); msgbox ( ’提取Hu特征成功!’ , ’提示信息’ ); % --- Executes on button press in pushbutton4. function pushbutton4_Callback ( hObject , eventdata , handles ) % hObject handle to pushbutton4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) if isequal ( handles . Img , 0 ) return ; end vec_color = get_color_vec ( handles . Img ); handles . vec_color = vec_color ; guidata ( hObject , handles ); msgbox ( ’提取顏色特征成功!’ , ’提示信息’ ); % --- Executes on button press in pushbutton5. function pushbutton5_Callback ( hObject , eventdata , handles ) % hObject handle to pushbutton5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) if isequal ( handles . vec_hu , 0 ) || isequal ( handles . vec_color , 0 ) return ; end ind_dis_sort = SearchResult ( handles . vec_hu , handles . vec_color , handles . H ); H = handles . H ; page = 0 ; page = page + 1 ; st = ( page -1 ) * 8+1 ; et = page * 8 ; for i = st : et file = fullfile ( pwd , sprintf ( ’%s’ , H ( ind_dis_sort ( i )) . filename )); Img = imread ( file ); imshow ( Img , [], ’parent’ , eval ( sprintf ( ’handles.axes%d’ , ( i - ( page -1 ) * 8 ) +1 ))); axes ( eval ( sprintf ( ’handles.axes%d’ , ( i - ( page -1 ) * 8 ) +1 ))); title ( sprintf ( ’%02d’ , i )); end handles . ind_dis_sort = ind_dis_sort ; handles . page = page ; guidata ( hObject , handles ); set ( handles . textpage , ’String’ , sprintf ( ’第%d頁(yè)/共2頁(yè)’ , page )); % --- Executes on button press in pushbutton6. function pushbutton6_Callback ( hObject , eventdata , handles ) % hObject handle to pushbutton6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) choice = questdlg ( ’確定要退出系統(tǒng)?’ , ... ’退出’ , ... ’確定’ , ’取消’ , ’取消’ ); switch choice case ’確定’ close ; case ’取消’ return ; end % --- Executes on button press in pushbutton1. function pushbutton1_Callback ( hObject , eventdata , handles ) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) filePath = OpenImageFile (); if isequal ( filePath , 0 ) return ; end if ~ isequal ( handles . filePath , 0 ) InitAxes ( handles ); end handles . filePath = 0 ; handles . vi = 0 ; handles . Img = 0 ; handles . ind_dis_sort = 0 ; handles . page = 0 ; [ Img , map ] = imread ( filePath ); if ~ isempty ( map ) Img = ind2rgb ( Img , map ); end imshow ( Img , [], ’parent’ , handles . axes1 ); handles . filePath = filePath ; handles . Img = Img ; guidata ( hObject , handles );
3 仿真結(jié)果
4 參考文獻(xiàn)
[1]張恒博, 商周, and 李靈華. "一種基于改進(jìn)Hu矩的圖像檢索方法." 大連民族學(xué)院學(xué)報(bào) 13.5(2011):4.
微信掃一掃贊賞作者
贊賞
發(fā)送給作者
人贊賞
長(zhǎng)按二維碼向我轉(zhuǎn)賬
受蘋果公司新規(guī)定影響,微信 iOS 版的贊賞功能被關(guān)閉,可通過(guò)二維碼轉(zhuǎn)賬支持公眾號(hào)。
-
Origin(Pro):學(xué)習(xí)版的窗口限制【數(shù)據(jù)繪圖】 2020-08-07
-
如何卸載Aspen Plus并再重新安裝,這篇文章告訴你! 2020-05-29
-
CAD視口的邊框線看不到也選不中是怎么回事,怎么解決? 2020-06-04
-
教程 | Origin從DSC計(jì)算焓和比熱容 2020-08-31
-
CAD外部參照無(wú)法綁定怎么辦? 2020-06-03
-
CAD中如何將布局連帶視口中的內(nèi)容復(fù)制到另一張圖中? 2020-07-03
