proj.m
上传用户:xueli1969
上传日期:2022-07-27
资源大小:19k
文件大小:12k
源码类别:

通讯编程文档

开发平台:

Matlab

  1. function varargout = proj(varargin)
  2. % PROJ M-file for proj.fig
  3. %      PROJ, by itself, creates a new PROJ or raises the existing
  4. %      singleton*.
  5. %
  6. %      H = PROJ returns the handle to a new PROJ or the handle to
  7. %      the existing singleton*.
  8. %
  9. %      PROJ('CALLBACK',hObject,eventData,handles,...) calls the local
  10. %      function named CALLBACK in PROJ.M with the given input arguments.
  11. %
  12. %      PROJ('Property','Value',...) creates a new PROJ or raises the
  13. %      existing singleton*.  Starting from the left, property value pairs are
  14. %      applied to the GUI before proj_OpeningFunction gets called.  An
  15. %      unrecognized property name or invalid value makes property application
  16. %      stop.  All inputs are passed to proj_OpeningFcn via varargin.
  17. %
  18. %      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
  19. %      instance to run (singleton)".
  20. %
  21. % See also: GUIDE, GUIDATA, GUIHANDLES
  22. % Edit the above text to modify the response to help proj
  23. % Last Modified by GUIDE v2.5 21-Sep-2005 21:51:00
  24. % Begin initialization code - DO NOT EDIT
  25. gui_Singleton = 1;
  26. gui_State = struct('gui_Name',       mfilename, ...
  27.                    'gui_Singleton',  gui_Singleton, ...
  28.                    'gui_OpeningFcn', @proj_OpeningFcn, ...
  29.                    'gui_OutputFcn',  @proj_OutputFcn, ...
  30.                    'gui_LayoutFcn',  [] , ...
  31.                    'gui_Callback',   []);
  32. if nargin & isstr(varargin{1})
  33.     gui_State.gui_Callback = str2func(varargin{1});
  34. end
  35. if nargout
  36.     [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
  37. else
  38.     gui_mainfcn(gui_State, varargin{:});
  39. end
  40. % End initialization code - DO NOT EDIT
  41. addpath(pwd)
  42. % --- Executes just before proj is made visible.
  43. function proj_OpeningFcn(hObject, eventdata, handles, varargin)
  44. % This function has no output args, see OutputFcn.
  45. % hObject    handle to figure
  46. % eventdata  reserved - to be defined in a future version of MATLAB
  47. % handles    structure with handles and user data (see GUIDATA)
  48. % varargin   command line arguments to proj (see VARARGIN)
  49. % Choose default command line output for proj
  50. % 初始化界面
  51. handles.output = hObject;
  52. handles.OAname='PSO';
  53. handles.MIname='MI';
  54. handles.NumOfVar=0;
  55. set(handles.edit1,'visible','off');
  56. set(handles.edit2,'visible','off');
  57. set(handles.text3,'visible','off');
  58. set(handles.text4,'visible','off');
  59. % set(handles.axes1,'','off');
  60. % axes(handles.axes1)
  61. % I1=0;
  62. % imshow(I1)
  63. % axes(handles.axes2)
  64. % I2=0;
  65. % imshow(I2)
  66. % axes(handles.axes3)
  67. % I3=0;
  68. % imshow(I3)
  69. guidata(hObject, handles);
  70. % UIWAIT makes proj wait for user response (see UIRESUME)
  71. % uiwait(handles.figure1);
  72. % --- Outputs from this function are returned to the command line.
  73. function varargout = proj_OutputFcn(hObject, eventdata, handles)
  74. % varargout  cell array for returning output args (see VARARGOUT);
  75. % hObject    handle to figure
  76. % eventdata  reserved - to be defined in a future version of MATLAB
  77. % handles    structure with handles and user data (see GUIDATA)
  78. % Get default command line output from handles structure
  79. varargout{1} = handles.output;
  80. % --- Executes during object creation, after setting all properties. function popupmenu1_CreateFcn(hObject, eventdata, handles) % hObject    handle to popupmenu1 (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 ispc     set(hObject,'BackgroundColor','white'); else     set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end % --- Executes on selection change in popupmenu1. function popupmenu1_Callback(hObject, eventdata, handles) % hObject    handle to popupmenu1 (see GCBO) % eventdata  reserved - to be defined in a future version of MATLAB % handles    structure with handles and user data (see GUIDATA)
  81. % 最优化算法选择"PSO"和"POWELL" popupmenu1string=get(handles.popupmenu1,'string');
  82. popupmenu1value=get(handles.popupmenu1,'value');
  83. popupmenu1context=get(handles.popupmenu1,{'value','string'});
  84. vvv1=deblank(popupmenu1context{2}(popupmenu1context{1}));
  85. handles.OAname=vvv1{1};
  86. guidata(hObject,handles); % Hints: contents = get(hObject,'String') returns popupmenu1 contents as cell array %        contents{get(hObject,'Value')} returns selected item from popupmenu1 % --- Executes during object creation, after setting all properties. function popupmenu2_CreateFcn(hObject, eventdata, handles) % hObject    handle to popupmenu2 (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 ispc     set(hObject,'BackgroundColor','white'); else     set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end % --- Executes on selection change in popupmenu2. function popupmenu2_Callback(hObject, eventdata, handles) % hObject    handle to popupmenu2 (see GCBO) % eventdata  reserved - to be defined in a future version of MATLAB % handles    structure with handles and user data (see GUIDATA)
  87. % 选择互信息尺度函数(MI) popupmenu2string=get(handles.popupmenu2,'string');
  88. popupmenu2value=get(handles.popupmenu2,'value');
  89. popupmenu2context=get(handles.popupmenu2,{'value','string'});
  90. vvv2=deblank(popupmenu2context{2}(popupmenu2context{1}));
  91. switch vvv2{1}
  92.     case {'MI','EMI','HiMI'}
  93.         set(handles.edit1,'visible','off');
  94.         set(handles.edit2,'visible','off');
  95.         set(handles.text3,'visible','off');
  96.         set(handles.text4,'visible','off');
  97.         NumOfVar=0;  % 以上三个MI函数输入参数个数为0
  98.     case 'RMI'
  99.         set(handles.edit1,'visible','on','string','9');
  100.         set(handles.edit2,'visible','off');
  101.         set(handles.text3,'visible','on','string','size of region is 3,4,9');
  102.         set(handles.text4,'visible','off');        
  103.         NumOfVar=1;
  104.     case 'GMI'
  105.         set(handles.edit1,'visible','on','string','0.5');
  106.         set(handles.edit2,'visible','off');
  107.         set(handles.text3,'visible','on','string','size of gussian');
  108.         set(handles.text4,'visible','off');
  109.         NumOfVar=1;
  110.     case 'FPMI'
  111.         set(handles.edit1,'visible','on','string','3');
  112.         set(handles.edit2,'visible','on','string','null');
  113.         set(handles.text3,'visible','on','string','size of gussian=1,2,...,15');
  114.         set(handles.text4,'visible','on','string','0<canny threshold<1');   
  115.         NumOfVar=2;
  116. end
  117. handles.NumOfVar=NumOfVar;
  118. handles.MIname=vvv2{1};
  119. guidata(hObject,handles); % Hints: contents = get(hObject,'String') returns popupmenu2 contents as cell array %        contents{get(hObject,'Value')} returns selected item from popupmenu2 % --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles) % hObject    handle to edit1 (see GCBO) % 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 function edit1_Callback(hObject, eventdata, handles) % hObject    handle to edit1 (see GCBO) % eventdata  reserved - to be defined in a future version of MATLAB % handles    structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text %        str2double(get(hObject,'String')) returns contents of edit1 as a double % --- Executes during object creation, after setting all properties. function edit2_CreateFcn(hObject, eventdata, handles) % hObject    handle to edit2 (see GCBO) % 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 function edit2_Callback(hObject, eventdata, handles) % hObject    handle to edit2 (see GCBO) % eventdata  reserved - to be defined in a future version of MATLAB % handles    structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit2 as text %        str2double(get(hObject,'String')) returns contents of edit2 as a double % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles)
  120. % 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)
  121. clc
  122. set(handles.text6,'string','Result Of Registration & MI Value');
  123. axesIbox=get(handles.axes2,'box');
  124. axesJbox=get(handles.axes3,'box');
  125. if strcmp(axesIbox,'off') | strcmp(axesJbox,'off')
  126.     errordlg('请选择配准图像','错误')
  127.     error('未选择配准图像')
  128. end
  129. handles.isSameSizeIJ=strcmp(handles.ImsizeI,handles.ImsizeJ);
  130. if handles.isSameSizeIJ~=1
  131.     errordlg('请选择相同尺寸的图像','错误')
  132.     error('配准图像大小不同')
  133. end
  134. I=imread(handles.filenameI);
  135. J=imread(handles.filenameJ);
  136. handles.I=I;
  137. handles.J=J;  
  138. guidata(hObject,handles);
  139. handles.edit1visible=get(handles.edit1,'visible'); % 获取窗口on、off信息
  140. handles.edit2visible=get(handles.edit2,'visible');
  141. edit1visible=strcmp(handles.edit1visible,'on');%比较字符是否相同。为了后面的判断用
  142. edit2visible=strcmp(handles.edit2visible,'on');
  143. % if handles.edit2visible=='on'
  144. % 如果用上面的方式判断,当遇到'off'会出错
  145. % error:Array dimensions must match for binary array op.
  146. if edit1visible==1 % 如果输入第一个参数,则获取该参数
  147.     handles.edit1string=get(handles.edit1,'string');
  148.     %handles.var1=str2num(handles.edit1string{1});
  149.     handles.var1=str2num(handles.edit1string);
  150. end
  151.     
  152. if edit2visible==1 % 如果输入第二个参数,则获取该参数
  153.     handles.edit2string=get(handles.edit2,'string');
  154.     %handles.var2=str2num(handles.edit2string{1});
  155.     handles.var2=str2num(handles.edit2string);
  156. end
  157. % 整个程序的核心
  158. switch handles.OAname
  159.     case 'PSO'
  160.         out=PSO(handles);
  161.     case 'POWELL'
  162.         out=POWELL(handles);
  163. end
  164. handles.out=out; % 终结
  165. x=out(1);
  166. y=out(2);
  167. ang=out(3);
  168. miValue=out(4);
  169. FinalResult=['X,Y,Angle=',num2str(x) ',',num2str(y) ',',num2str(ang),'     MI_Value=',num2str(miValue)];
  170. axes(handles.axes1)
  171. Q=restore(handles); % 获取将”固定图像“和”校正图像“的边缘重叠,以观察配准效果
  172. imshow(Q)
  173. set(handles.text6,'string',FinalResult);
  174. % --- 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)
  175. clc
  176. ValueI.ss.IsImage=0;
  177. while ValueI.ss.IsImage==0    
  178. ValueI=testListBoxlj;
  179. end
  180. delete(ValueI.figure1); % 关闭浏览窗口
  181. handles.ImsizeI=ValueI.ss.imsize;  % 图片大小(来自testlistboxij.m)
  182. handles.filenameI=ValueI.ss.filename; % 带路径名(来自testlistboxij.m)
  183. handles.names_dispI=ValueI.ss.names_disp;  % 显示图片名称大小(来自testlistboxij.m)
  184. set(handles.text7,'String',handles.names_dispI);
  185. axes(handles.axes2)
  186. I=imread(handles.filenameI);
  187. imshow(I)
  188.        
  189. guidata(hObject, handles);
  190. % --- 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)
  191. clc
  192. ValueJ.ss.IsImage=0;
  193. while ValueJ.ss.IsImage==0    
  194. ValueJ=testListBoxlj;
  195. end
  196. delete(ValueJ.figure1); % 关闭浏览窗口
  197. handles.ImsizeJ=ValueJ.ss.imsize;  % 图片大小(来自listbox)
  198. handles.filenameJ=ValueJ.ss.filename; % 带路径名(来自listbox)
  199. handles.names_dispJ=ValueJ.ss.names_disp;  % 显示图片名称大小(来自listbox)
  200. set(handles.text8,'String',handles.names_dispJ); % (来自listbox)
  201. axes(handles.axes3)
  202. J=imread(handles.filenameJ);
  203. imshow(J)
  204.      
  205. guidata(hObject, handles);