【图像检索】基于Hu不变矩实现图像检索matlab代码
【图像检索】基于Hu不变矩实现图像检索matlab代码
TT_Matlab
每天分享一点Matlab资料,一起成长进步。需要定制程序添加qq1575304183
1 简介
描述了一种基于 Hu 形状不变矩的图像全局形状特征提取方法和算法 IMS 。 实验结果表明 , 使用 IMS 。 算法提取的形状特征向量具有对平移 、 旋转和尺度变化的不变性 , 适合于进行图像形状的检索 。
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页/共2页’ , 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页/共2页’ , 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 = ’选择数据库’ ; 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 ( ’未找到特征数据库,请进行特征提取操作!’ , ’提示信息’ ); return ; end load ( db_file ); handles . folder_name = folder_name ; handles . H = H ; guidata ( hObject , handles ); msgbox ( ’选择数据库成功!’ , ’提示信息’ ); % --- 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页/共2页’ , 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 ( ’确定要退出系统?’ , ... ’退出’ , ... ’确定’ , ’取消’ , ’取消’ ); 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 仿真结果
4 参考文献
[1]张恒博, 商周, and 李灵华. "一种基于改进Hu矩的图像检索方法." 大连民族学院学报 13.5(2011):4.
微信扫一扫赞赏作者
赞赏
发送给作者
人赞赏
长按二维码向我转账
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。
-
Origin(Pro):学习版的窗口限制【数据绘图】 2020-08-07
-
如何卸载Aspen Plus并再重新安装,这篇文章告诉你! 2020-05-29
-
AutoCAD 保存时出现错误:“此图形中的一个或多个对象无法保存为指定格式”怎么办? 2020-08-03
-
OriginPro:学习版申请及过期激活方法【数据绘图】 2020-08-06
-
CAD视口的边框线看不到也选不中是怎么回事,怎么解决? 2020-06-04
-
教程 | Origin从DSC计算焓和比热容 2020-08-31
-
如何评价拟合效果-Origin(Pro)数据拟合系列教程【数据绘图】 2020-08-06
-
Aspen Plus安装过程中RMS License证书安装失败的解决方法,亲测有效! 2021-10-15
-
CAD外部参照无法绑定怎么办? 2020-06-03
-
CAD中如何将布局连带视口中的内容复制到另一张图中? 2020-07-03