%主程序
function varargout=ImageRegistration(varargin)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
gui_Singleton=1;
gui_State=struct('gui_Name',mfilename,...
'gui_Singleton',gui_Singleton,...
'gui_OpeningFcn',@ImageRegistration_OpeningFcn,...
'gui_OuputFcn',@ImageRegistration_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
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
addpath(pwd);
function ImageRegistration_OpeningFcn(hObject,eventdata,handles,varargin)
handles.output=hObject;
guidata(hObject,handles);
function varargout=ImageRegistration_OutputFcn(hObject,eventdata,handles)
varargout{1}=handles.output;
function pushbutton1_Callback(hObject,eventdata,handles)
clc
%%%%%%%%%%%%%%%调用OpenImage.m读入参考图像并获取文件名、图像大小%%%
Image_I.FileInformation.IsImage=0;
while Image_I.FileInformation.IsImage==0
Image_I=OpenImage;
end
delete(Image_I.figure1);
handles.ImsizeI=Image_I.FileInformation.imsize;
handles.filenameI=Image_I.FileInformation.filename;
handles.names_dispI=Image_I.FileInformation.names_disp;
set(handles.text2,'String',handles.names_dispI);
guidata(hObject,handles);
%%%%%%%%%%%%显示参考图像
axes(handles.axes1)
I=imread(handles.filenameI);
imshow(I)
function pushbutton2_Callback(hObject,eventdata,handles)
clc
%%%%%%%%调用OpenImage.m读入浮动图像并获取文件名、图像大小
Image_J.FileInformation.IsImage=0;
while Image_J.FileInformation.IsImage==0
Image_J=OpenImage;
end
delete(Image_J.figure1);
handles.ImsizeJ=Image_J.FileInformation.imsize;
handles.filenameJ=Image_J.FileInformation.filename;
handles.names_dispJ=Image_J.FileInformation.names_disp;
set(handles.text3,'String',handles.names_dispJ);
guidata(hObject,handles);
%%%%%%%%显示浮动图像%%%%%%%%%%%%%%%%%%%%
axes(handles.axes2);
J=imread(handles.filenameJ);
imshow(J)
function pushbutton3_Callback(hObject,eventdata,handles)
clc;
%%%%%%%%%%%%%%检测是否已输入参考图像与浮动图像
axesIbox=get(handles.axes1,'box');
axesJbox=get(handles.axes2,'box');
if strcmp(axesIbox,'off')|strcmp(axesJbox,'off')
errordlg('Please select Image for Registration','Error');
error('No Image!');
end
%%%%%%%%%%%%%检测参考图像与浮动图像大小是否相同
handles.isSameSizeIJ=strcmp(handles.ImsizeI,handles.ImsizeJ);
if handles.isSameSizeIJ~=1
errordlg('Please Select the Same Size Image','Error');
error('Image Size doesn''t match!');
end
%%%%%%%%%%%%读入并复制图像,一副用于配准过程,另一幅用于配准后输出
I1=imread(handles.filenameI);
J1=imread(handles.filenameJ);
handles.Old_I=I1;
handles.Old_j=J1;
I=ImageTransfer_add(I1);
J=ImageTransfer_add(J1);
handles.I=I;
handles.J=J;
guidata(hObject,handles);
%%%%%%%%%%%%%%显示配准前参考图像与浮动图像的“融合”效果图
axes(handles.axes3);
imshow(uint8(I+J));
%%%%%%调用函数GLPF.m,完成高斯低通预处理%%%%%%%%%%%%%
[I,J]=GLPF(handles);
handles.I=I;
handles.J=J;
guidata(hObject,handles);
%%%%%%调用函数Powell.m,实现图像配准%%
tic
RegistrationParameters=Powell(handles);
toc
ElapsedTime=toc;
%%%%%%%%%%%%显示配准结果%%%%%%%%%%%%%
handles.RegistrationParameters=RegistrationParameters;
x=RegistrationParameters(1);
y=RegistrationParameters(2);
ang=RegistrationParameters(3);
MI_Value=RegistrationParameters(4);
ElapsedTime=sprintf('Elapsed Time=[%.3f]',ElapsedTime);
axes(handles.axes4);
[FusionImage,RegistrationImage]=Fusion(handles);
imshow(FusionImage);
axes(handles.axes5);
imshow(RegistrationImage);
set(handles.text8,'string',RegistrationResult);
set(handles.text9,'string',MI_Value);
set(handles.text10,'string',ElapsedTime);
图像配准实例matlab
3星 · 超过75%的资源 需积分: 37 123 浏览量
2016-06-15
22:52:33
上传
评论 12
收藏 6KB RAR 举报
hero521125
- 粉丝: 1
- 资源: 1
最新资源
- 2023-04-06-项目笔记 - 第一百十五阶段 - 4.4.2.113全局变量的作用域-113 -2024.04.26
- 2023-04-06-项目笔记 - 第一百十五阶段 - 4.4.2.113全局变量的作用域-113 -2024.04.26
- htmlzwbjq_downyi.com.zip
- 无头单向非循环链表的实现(Test.c)
- 无头单向非循环链表的实现(SList.c)
- 浏览器重定向插件更新文件
- SSA-BP麻雀算法优化BP神经网络多特征分类预测(Matlab实现完整源码和数据)
- 粒子群算法优化BP神经网络PSO-BP的MATLAB代码(数值预测)
- 基于Springboot的一起看书平台.zip
- 无头单向非循环链表的实现(SList.h)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈