一、光流场模型简介

目前对大脑的研究主要借助于 CT、MRI和 PET等医学成像技术通过成像技术得到的图像可以 提供人脑直观的信息为人脑解剖结构的分析、功能 区域的定义、脑疾病的诊断提供有力依据。因此大脑图像的分析和处理具有重要的实用价值和现实 意义。由于配准所求解的位移场与光流场模型所求解的 速度场具有相似性PalosPierre等人将光流场模型引入到了图像配准中。本文在经典光流场算法的基础上将其应用于非刚性医学图像的配准中得到了相对精确的配准结果。

1 光流场模型算法
如果把浮动图像和参考图像分别看作时间间隔为 Δt的视频流中的t时刻与+Δt时刻的图像那么图像的配准可以认为是从浮动图像流动到参考图像的过程即光流场求解的速度场即为配准所要求解的位移 场‚因此可以借助光流场进行图像配准。

1.1 Horn光流场理论

不能同时求出光流的两个速度分量u和vi因此在具 体求解位移场时‚需要在流动场上附加光滑度约束才能得到光流场的合理估计。

1.2 Lucas-Kanade光流算法

2 基于光流场模型的图像非刚体配准
2.1 配准原理和步骤
采用光流场模型进行图像配准是一个将浮动图像逐步向参考图像变动来求解对应光流模型速度场然后对浮动图像插值获得配准图像的过程具体步骤如下。

续迭代;否则‚继续下一步。 (5)测度函数已收敛终止迭代I3 就是最终的配准图像。

2.2 配准流程图

二、部分源代码

function varargout = optical_flow(varargin)
% OPTICAL_FLOW M-file for optical_flow.fig
%      OPTICAL_FLOW, by itself, creates a new OPTICAL_FLOW or raises the existing
%      singleton*.
%
%      H = OPTICAL_FLOW returns the handle to a new OPTICAL_FLOW or the handle to
%      the existing singleton*.
%
%      OPTICAL_FLOW('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in OPTICAL_FLOW.M with the given input arguments.
%
%      OPTICAL_FLOW('Property','Value',...) creates a new OPTICAL_FLOW or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before optical_flow_OpeningFunction gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to optical_flow_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% Copyright 2002-2003 The MathWorks, Inc.% Edit the above text to modify the response to help optical_flow% Last Modified by GUIDE v2.5 23-Jul-2012 15:10:21% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...'gui_Singleton',  gui_Singleton, ...'gui_OpeningFcn', @optical_flow_OpeningFcn, ...'gui_OutputFcn',  @optical_flow_OutputFcn, ...'gui_LayoutFcn',  [] , ...'gui_Callback',   []);
if nargin && ischar(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 optical_flow is made visible.
function optical_flow_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 optical_flow (see VARARGIN)% Choose default command line output for optical_flow
handles.output = hObject;% Update handles structure
guidata(hObject, handles);% UIWAIT makes optical_flow wait for user response (see UIRESUME)
% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.
function varargout = optical_flow_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 pushbutton_start.
function pushbutton_start_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton_start (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global FilePath1
global FilePath2
global versionif ( isequal(FilePath1,'No Picture') || isequal(FilePath2,'No Picture') )errordlg('选择图片出错!','MATLAB error');return
endswitch versioncase { 0, 1, 2 }optic_flow_brox(FilePath1, FilePath2);case 3Horn_WJY(FilePath2, FilePath1);case 4Lucas_Kanade(FilePath2, FilePath1);otherwiseerrordlg('选择算法出错!','MATLAB error');
end% --- Executes on button press in pushbutton_pic1.
function pushbutton_pic1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton_pic1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global FilePath1
[FileName,PathName] = uigetfile({'*.jpg';'*.bmp'},'Select the picture');
if ~isequal(FileName,0)FilePath1 = fullfile(PathName,FileName);set(handles.edit_lj1,'String',FilePath1);img=imread(FilePath1);axes(handles.axes_pic1);imshow(img);
end
guidata(hObject, handles);% --- Executes on button press in pushbutton_pic2.
function pushbutton_pic2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton_pic2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global FilePath2
[FileName,PathName] = uigetfile({'*.jpg';'*.bmp'},'Select the picture');
if ~isequal(FileName,0)FilePath2 = fullfile(PathName,FileName);set(handles.edit_lj2,'String',FilePath2);img=imread(FilePath2);axes(handles.axes_pic2);imshow(img);
end
guidata(hObject, handles);function edit_lj1_Callback(hObject, eventdata, handles)
% hObject    handle to edit_lj1 (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 edit_lj1 as text
%        str2double(get(hObject,'String')) returns contents of edit_lj1 as a double% --- Executes during object creation, after setting all properties.
function edit_lj1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit_lj1 (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 ispcset(hObject,'BackgroundColor','white');
elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
endfunction edit_lj2_Callback(hObject, eventdata, handles)
% hObject    handle to edit_lj2 (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 edit_lj2 as text
%        str2double(get(hObject,'String')) returns contents of edit_lj2 as a double% --- Executes during object creation, after setting all properties.
function edit_lj2_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit_lj2 (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 ispcset(hObject,'BackgroundColor','white');
elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
endfunction edit_arithmetic_Callback(hObject, eventdata, handles)
% hObject    handle to edit_arithmetic (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 edit_arithmetic as text
%        str2double(get(hObject,'String')) returns contents of edit_arithmetic as a double% --- Executes during object creation, after setting all properties.
function edit_arithmetic_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit_arithmetic (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 ispcset(hObject,'BackgroundColor','white');
elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end

三、运行结果





四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.
[5]林存花,陈海峰.光流场模型用于非刚性医学图像配准[J].电子科技. 2011,24(04)

【图像配准】基于matlab GUI光流场模型医学图像配准【含Matlab源码 747期】相关推荐

  1. 【运动学】基于matlab GUI三体运动模拟【含Matlab源码 871期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[运动学]基于matlab GUI三体运动模拟[含Matlab源码 871期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

  2. 【音乐播放】基于matlab GUI动感音乐播放【含Matlab源码 778期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[音乐播放]基于matlab GUI动感音乐播放[含Matlab源码 778期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

  3. 【雷达通信】基于matlab GUI相控阵雷达方向图【含Matlab源码 1048期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[雷达通信]基于matlab GUI相控阵雷达方向图[含Matlab源码 1048期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方 ...

  4. 【数据分析】基于matlab GUI齿轮箱振动数据分析【含Matlab源码 2122期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[数据分析]基于matlab GUI齿轮箱振动数据分析[含Matlab源码 2122期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方 ...

  5. 【光学】基于matlab GUI维达尔之眼计算【含Matlab源码 2545期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[光学]基于matlab GUI维达尔之眼计算[含Matlab源码 2545期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

  6. 【光学】基于matlab GUI双孔干涉【含Matlab源码 2119期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[光学]基于matlab GUI双孔干涉[含Matlab源码 2119期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费 ...

  7. 【光学】基于matlab GUI双缝干涉和牛顿环【含Matlab源码 2165期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[光学]基于matlab GUI双缝干涉和牛顿环[含Matlab源码 2165期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...

  8. 【数学建模】基于matlab三维海浪模型仿真【含Matlab源码 1159期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[数学建模]基于matlab三维海浪模型仿真[含Matlab源码 1159期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付 ...

  9. 【数字信号】基于matlab GUI电话按键识别【含Matlab源码 2382期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[数字信号]基于matlab GUI电话按键识别[含Matlab源码 2382期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...

  10. Matlab GUI/APP 浅谈(附计算器源码)

    Matlab GUI/APP 浅谈(附计算器源码) 今天没有什么段子,也没有心灵鸡汤.毒鸡汤啥的,纯粹聊一聊这些年从有关MATLAB GUI/APP开发中悟出的一点道理,顺便把计算器的源代码给大家. ...

最新文章

  1. 2022-2028年中国麻纺织业投资分析及前景预测报告
  2. jquery控制只监听数字_jQuery老矣,尚能饭否
  3. 【C++ 语言】引用数据类型 ( 引用数据类型定义 | 引用数据类型使用 | 引用类型参数 )
  4. Unix环境高级编程学习笔记(一)
  5. wxWidgets:wxTrackable类用法
  6. 应用程序框架实战三十六:CRUD实战演练介绍
  7. python源码文件以什么格式结尾结尾_查看python源码,发现里面的函数都以pass结尾,那么意义何在?...
  8. java 遍历hashmap key_Java5种遍历HashMap数据的写法
  9. 关于SQLite.org网站给黑...
  10. Judy Beta 第10天
  11. rancher单节点离线安装_Rancher花里胡哨的部署方式
  12. 多线程并发面试题合集
  13. three points 1(平面几何 三角形)
  14. C#——检测鼠标滑轮事件
  15. 计算机的中mb b单位的关系,计算机中容量单位B、KB、MB、GB和TB的关系.doc
  16. SEO系列三:周珍谈新手如何快速入门
  17. 信息系统项目管理师EV、PV、AC、BAC、CV、SV、EAC、ETC、CPI、SPI概念说明
  18. 学生公寓管理系统-javaweb
  19. 闪送、水滴筹、美团、京东、百度java面试题总结
  20. 二度云抢先成为首批工信部(.vip/.xyz/.club)域名注册管理机构

热门文章

  1. Selenium 三种等待
  2. 使用bootstrap建立响应式网页——头部导航栏
  3. hdu4588Count The Carries
  4. [转]_int64、long long 的区别
  5. update-apt-xapian-index 意外关闭
  6. 20200121每日一句
  7. 通过文件名快速查找电脑中的文件
  8. Word页眉本来有但不可见 前后相连时
  9. Atitit hadoop使用总结 目录 1.1. 下载300m ,解压后800M 1 1.2. 二:需要的jar包 1 2. Demo code 2 2.1. WCMapper 2 2.2. WC
  10. Atitit ati擅长领域总结 目录 1.1. 要点::文化 教育 祭祀(spec ,bp ??) 2 1.2. 项目提取共同特点》》产品》》内部产品+tool》》sdk》》spec》》准则