基于互信息的图像配准
基于互信息的医学影像配准

0.8
0.78
-10
-8
-6
-4
-2
0
2
4
6
8
10
旋转角度(滤波后)
0.91
0.9
0.89
息 0.88 信 互
0.87
0.86
0.85
-5
-4
-3
-2
-1
0
1
c)
(d)
图 1 (a)旋转角度 MI 曲线 (b)水平平移 MI 曲线
(c)旋转角度 MI 曲线(滤波后) (d)水平平移 MI 曲线(滤波后)
1.7 12.9 1.8 10.0 1.3 8.7
7.1 14.5 3.4 3.7 12.0 5.7 0.4 11.4 4.1 -5.3 5.8 1.4
表 3 滤波前后配准精度比较(MR CT 上采样 64×64 → 256×256)
Table 3 Comparison Between No Filtering and Filtering Processing
10.0 8.0 5.0 5.2 7.0 4.5 8.0 2.7
为保证滤波后图像的配准精度,滤波预处理必须保证原图像信息不发生改变。滤波去除的是噪 声、复杂纹理等高频信息,对于目标的轮廓、形状大小等信息必须尽可能的予以保留,以保证校准 的精度。我们利用窗函数法,采用 Hamming 窗设计 17 阶低通滤波器,只保留较低的频率分量,对图 像先进行低通滤波处理再计算互信息。
Figure 1 (a)MI curve of rotation angle (b)MI curve of horizontal translation
(c)MI curve of rotation angle (filter preprocessing ) (d)MI curve of horizontal translation (filter preprocessing)
图像配准(互信息)

1.配准的方法分类 1.配准的方法分类
1.1基于灰度信息的方法 1.1基于灰度信息的方法 1.2基于变换域的方法 1.2基于变换域的方法 1.3基于特征的方法 1.3基于特征的方法
基于灰度信息的配准
利用图像本身具有的灰度统计信息来度量图 像的相似度,采用一定的搜索算法使相似 度量最大的变换形式,达到配准图像的目 的。 互信息的概念 用于描述两个系统间的信息相关性,或者一 个系统所包含的另一个系统中信息的多少, 它可以用熵来表示。
i =1 j =1
I
J
( p ( a i , b j ) ) i = 1 , 2 ,. . I 是图像联合灰度概率分布
j = 1 , 2 ,. J
互信息配准
基于互信息的图像配准就是寻找一个空间变 换关系,使得经过该变换后两幅间的互信 息达到最大。 1.确定空间变换形式 1.确定空间变换形式 2.对变换后的非整数坐标上点进行灰度插值, 2.对变换后的非整数坐标上点进行灰度插值, 计算两幅图像间的互信息 3.通过优化算法,使互信息达到最大值 3.通过优化算法,使互信息达到最大值
互信息配准
试验测试
1.仿射变换和双线性插值,穷举搜索 1.仿射变换和双线性插值,穷举搜索 试验结试仿射变换、PV插值和powell搜索最佳 1.测试仿射变换、PV插值和powell搜索最佳 参数(重要之处PV插值优越于其它插值方 参数(重要之处PV插值优越于其它插值方 法) 2.互信息和变换域相结合的方法 2.互信息和变换域相结合的方法
H(AB) =−∑pAB(ab)logpAB(ab) , , ,
i= 1
n
互信息配准
互信息 I(A;B)=H(A)+H(B)I(A;B)=H(A)+H(B)-H(A,B) =H(A)=H(A)-H(A|B) =H(B)=H(B)-H(B|A) H(A|B)为系统B已知时系统A H(A|B)为系统B已知时系统A的条件熵
基于角点特征和最大互信息的图像配准

的角 点信 息。 21算法思想 .
设pf I f (l= ,2 , 1为某一 ( = x) f( 0 ,…? ) ) (, ) f 1 一
闭合边缘轮廓点序列点,该序列的起始点为 O , () p f是该序列中第f ( ) 个点, 伴随着 f 值的增大, ( 从 pf ) 起始点 p 0 开始沿逆时针方 向行进一周后又 回到 () p O 点。在闭合曲线上中,由于 () 和 只表示坐标, 它们之间是非函数关系,因此 ( 与 ( 能决定 f ) f ) p f点的坐标。 ( ) 我们将p f分解为两条一维离散曲线 ( ) ( 和 ( , ( 随f f ) f xf 的增大为p f在水平方向上的 ) ) ( ) 变化, ( 为p f在竖直方向上的变化。因此, f ) ( ) 在曲 线 ( 上 提取角点 的过程就转换为分别提取 曲线 f ) x0、 ( 上的角点。 ( f )
不 同的成像 时间的待配准图像,图像 之间互信 息最大 的前提 是它们的图像空间位置完全一致。因此图像配 准 的配准测度 可 以用互信息来表 示,即当两幅图像 的 最佳配准位置就是它们的互信息达 到最大 的位置 。也
法得到 。假设待配准 图像 的分辨 率很低 或者图像之间 的误配情况 比较严重时 ,将导致 图像重叠区域较小。
计 算 机 系 统 应 用
而 且联合直方图的迭代 将会 是一个费时的过程 ,互信 息函数 会 出现 许多局 部极值 , 这些 极值会 导致互信 息 的局部极 大值与配准位置不一致, 造成误配甚至错配 。 国内外学者提 出了多种解 决基于最大互信息配准 的不足的改进方案,Js n 则将互信 息与图像的空间 oi e 梯 度信息相结合的方法 ,进行配准 ,取得 了比较好的 效果【。L u s| ” ot [ a2 利用小波变化或其他边缘检测方法 , 获得两幅图像的轮廓信息 ,利用聚类分析法求 出轮廓 特征 点,并定义这两个集合的互信息 ,使之最大化 以 达到配准 。孙淑一利用小波变换来提取 图像边缘 的同 时计算两幅 图像之间的交互方差 ,并通过基于交互方
基于互信息和二级搜索的图像配准

So f t wa r e Tec h n o l o g y
基于互信 息和 二级搜 索 的图像 配 准
周 呜, 朱 振 福 ( 航 天 科 工 集 团第 二 研 究 院 2 0 7所 , 北京 1 0 0 8 5 4)
摘 要 : 基 于 互 信 息 的 图 像 配 准 方 法 。 已经 广 泛应 用 于 图像 配 准 领 域 。 但 互 信 息 图 像 配 准 方 法 容
( I n s t i t u t e 2 0 7, T h e S e c o n d A c a d e my o f C h i n a A e r o s p a c e S c i e n c e& I n d u s t r y C o r p, B e i j i n g 1 0 0 8 5 4, C h i n a )
mu t u a l i n f o m a r t i o n, i ma g e i n t e r p o l a t i o n a n d o p t i mi z e r , w h i c h a r e t h e t h r e e c r u c i a l f a c t o r s o f mu t u a l i fo n ma r t i o n b a s e d i ma g e
基于互信息的医学图像配准方法研究

分类号学号 641860200671992 学校代码 10487硕士学位论文基于互信息的医学图像配准方法研究学位申请人:汪春芳学科专业:模式识别与智能系统指导教师:桑农教授答辩日期:2008年11月5日A Thesis Submitted in Partial Fulfillment of the RequirementsFor the Degree for the Master of Engineering Medical Image Registration Method based on Mutual InformationCandidate : Chunfang WangMajor:Pattern Recognition & Artificial IntelligenceSupervisor : Prof. Sang NongHuazhong University of Science & TechnologyWuhan 430074,P.R.ChinaOct,2008独创性声明本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。
尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。
对本文的研究做出贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律结果由本人承担。
学位论文作者签名:汪春芳日期: 2008 年11月05日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描复制保存手段和汇编本学位论文。
保密□,在年解密后适用本授权书。
本论文属于不保密√。
(请在以上方框内打“√”)学位论文作者签名:汪春芳指导教师签名:桑农日期:2008年 11月05日日期:2008 年 11月05日摘要医学影像学为临床诊断提供了多模式的医学图像,各种成像设备对病人同一解剖结构得到的形态信息和功能信息是互补的,在临床应用中经常需要将不同模态的图像结合起来,同时从不同模态的图像中获得信息。
图像配准(互信息)

Matlab工具箱image registration(见 Matlab工具箱image registration(见 Matlab Help) Help) 1.cp2tform 包括linear conformal(线性正投影) 包括linear conformal(线性正投影) affine(仿射)projective(投影) affine(仿射)projective(投影) polyomial(多项式)piecewise linear(分 polyomial(多项式)piecewise linear(分 段线性)lwn(局部加权平均) 段线性)lwn(局部加权平均) 2.Cpselect(控制点选择工具) 2.Cpselect(控制点选择工具)
H(A| B) =−∑pAB(a,b)log pAB=b(a) |
ab ,
a
互信息配准
互信息的另一数学表达式
I J
I(A B) =∑∑p(ai ,bj )log ;
i=1 j=1
p(ai ,bj ) p(ai ).p(bj )
p(ak ) = ∑ p(ak , bj ), p(bj ) = ∑ p(ak , bj ),
图像配准
1.配准的方法分类 1.配准的方法分类
1.1基于灰度信息的方法 1.1基于灰度信息的方法 1.2基于变换域的方法 1.2基于变换域的方法 1.3基于特征的方法 1.3基于特征的方法
基于灰度信息的配准
利用图像本身具有的灰度统计信息来度量图 像的相似度,采用一定的搜索算法使相似 度量最大的变换形式,达到配准图像的目 的。 互信息的概念 用于描述两个系统间的信息相关性,或者一 个系统所包含的另一个系统中信息的多少, 它可以用熵来表示。
H(AB) =−∑pAB(ab)logpAB(ab) , , ,
基于互信息的多模态图像配准

摘 要基于互信息的图像配准方法直接利用图像的灰度信息,不需要对图像进行分割等预处理,有鲁棒性好、自动化等优点,本文对基于互信息的图像配准进行了研究。
首先介绍了主要图像配准方法和基于互信息配准的基本过程。
分析了图像插值对互信息统计的影响,针对互信息局部极值导致误配准的问题,在PV插值方法的基础上运用核函数的方法抑制互信息局部极值,实验证明可有效消除局部极值,便于最优化搜索算法搜索到正确的配准参数。
为了提高配准的精度和效率,设计了基于小波变换的多级优化方法,采用小波变换和单纯形法相结合的优化算法方法由粗到精进行配准。
针对图像非刚性配准中手动选取标记点存在问题,运用模板匹配自动选择标记点的方法,通过采用薄板样条插值构建待配准图像与参考图像之间的非线性映射关系,初步实现了图像的扭曲校准。
关键词:图像配准,互信息,核函数,小波变换,模板匹配,弹性薄板样条IABSTRACTImage registration based on mutual information (MI) has become an increasing popular match metric due to its wide applicability and overall accuracy. In this paper, image registration based on mutual information is discussed mainly.This thesis firstly introduces the major registration algorithms. Then the process of registration based on mutual information (MI) is described.How the interpolation process may affect the mutual information between images is discussed.Local maxima in multimodality image registration based on mutual information have a large influence on optimization.Based on the partial volume interpolation, the method of kernel function is introduced to decrease the local maxima. Simulations have been done to illustrate that local maxima are eliminated to a great extent.To further accelerate registration speed and accuracy, we design and realize wavelets based coarse to fine image registration method.The problem of manually choosing point for non-rigid image registration is discussed. We make use of template matching to automatically choosing point. Thin plate interpolation is used to realize the global elastic registration. Simulations have been done to illustrate that the efficiency and accuracy of this method in registration strategy.Keywords: image registration, mutual information, kernel function, wavelets transform, template matching, thin plate interpolationII目录第一章 绪论 (1)1.1 图像配准的研究内容和意义 (1)1.2 图像配准方法的研究现状 (2)1.3 基于互信息配准方法的研究进展 (5)1.4本文研究内容 (6)第二章 基于最大互信息的配准方法 (8)2.1 熵 (8)2.2 互信息的计算 (9)2.3 互信息配准算法 (11)2.4 关于互信息方法的一些讨论 (14)2.4.1基于最大互信息配准方法的优点 (14)2.4.2基于最大互信息配准方法的不足 (14)2.5 本章小结 (15)第三章互信息局部极值的抑制 (16)3.1 图像的基本变换 (16)3.2 图像插值 (17)3.2.1 常见插值算法 (17)3.2.2 图像插值的影响 (20)3.3 核函数的抑制方法 (21)3.3.1 三角核函数 (22)3.3.2高斯核函数 (23)3.4 实验结果及对比分析 (24)3.5 本章小结 (31)第四章互信息配准的优化方法 (32)4.1 最优化搜索算法 (32)4.1.1 引言 (32)4.1.2 单纯形的转换 (33)4.1.3 单纯形法的计算步骤 (35)III4.2 基于小波变换的优化方法 (37)4.2.1 小波变换和多分辨分析 (38)4.2.2 Mallat算法和小波分解 (39)4.3 配准实验与结果分析 (42)4.4 本章小结 (47)第五章 基于互信息的非刚性配准 (48)5.1 薄板样条插值 (48)5.2 互信息非刚性配准 (51)5.2.1 分层互信息非刚性配准 (51)5.2.2 自动选取标记点 (53)5.3 实验结果及讨论 (55)5.4 本章小结 (58)第六章 结论 (59)致 谢 (61)参考文献 (62)攻硕期间取得的研究成果 (65)IV第一章 绪论1.1 图像配准的研究内容和意义图像配准技术是将不同时间、不同传感器或不同视角下获取的同一场景的两幅进行匹配的图像处理过程,是图像处理的一个基本问题。
基于互信息的医学图像匹配中的改进插值算法

般都定位在单一的传统插值算法 , 由于传统的插值算法存在插值精 度低或插值速度慢 的缺点 , 提出 了一种基 于像素点 的
亮度绝对误差的图像插值算法 , 插值算法结合了近邻插值算法 和双三次插值算法 的优 点, 提高了配准 的速度 和精确度 。通 过对头部 图像进行配准实验, 验证 了插值方法的有效性 。 关键词 : 互信息 ; 插值算法 ; 像素点亮度
第2 卷 第7 7 期
文章 编 号 :0 6—94 (0 0 0 10 3 8 2 1 )7—0 9 0 14— 4
计
算
机
仿
真
20 月 0 年7 1
基 于 互信 息 的 医学 图像 匹 配 中 的改进 插 值 算 法
刘喜 平 , 龚晓彦 , 希娟 郭
( 山大学 , 燕 河北 秦皇岛 0 60 6 04) 摘要: 基于互信息的配准方法是医学 图像配准领域的重要方法 , 具有 鲁棒性 , 精度高等优点 , 已成为医学图像处理 领域的热 点。在计算两个图像之间的互信息时 , 了图像 配准精度 , 为 图像的像素点经过空间变换需要进行插值 , 目前 采用的插值方法
l o ih c mb n st e a a t g so e rs eih o ne lto o ih a d b a g rtm o i e h dv n a e fn ae tn g b ri tr o ain ag rt m n i— c bi itr lto g rt , p l u c n epoain a o hm l i
W h n c c ai g te muta no a in b t e wo i a e e a ultn h l u i r to ewe n t m g s,te i g x lp i sn e nepoain i p c r n — l f m h ma e pie ont e d i tr l t n s a e ta s o
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息论大作业基于互信息的图像配准班级:金融101学号:2009302311姓名:魏泉1. 引言随着医学、计算机技术及生物工程技术的发展,医学影像学为临床诊断提供了多种模态的医学图像,不同的医学图像提供了相关脏器的不同信息:CT(Computed Tomography ,电子计算机X 射线断层扫描)和MRI(Magneticresona nce ima ging ,核磁共振成像)以较高的空间分辨率提供了脏器的解剖结构信息。
在实际临床应用中,单一模态的图像往往不能提供医生所需要的足够的信息,通常需要将不同模态的图像融合在一起,得到更丰富的信息,以便了解病变组织或器官的综合信息,从而做出准确的诊断或制订出合适的治疗方案。
而图像配准是图像融合的重要前提,图像配准是指对一幅图像进行一定的几何变换而映射到另一幅图像中,使得两幅图像中的相关点达到空间上的一致。
图像配准主要有两大类方法,基于灰度的方法和基于特征的方法。
基于灰度的配准方法直接利用图像的灰度数据进行配准,从而避免了因分割而带来的误差,因而具有精度较高、鲁棒性强、不需要预处理而能实现自动配准的特点。
在基于灰度的配准方法中,基于互信息的方法包括互信息和归一化互信息方法,它们已经被广泛使用并具有最高的精度。
本文使用的是基于互信息的配准方法。
2. 图像配准技术2.1图像配准技术的数学定义 数字图像可以用一个二维矩阵来表示,如果用),(1y x I、),(2y x I 分别表示待配准图像和参考图像在点(x,y)处的灰度值,那么图像I 1、I 2的配准关系可表示为:))),(((),(12y x f g y x I I= (1)其中f 代表二维的空间几何变换函数;g 表示一维的灰度变换函数。
配准的主要任务是寻找最佳的空间变换关系f 与灰度变换关系g ,使两幅图像实现最佳对准。
其中,空间几何变换是灰度变换的前提,是实现精准配准的关键环节。
2.2几何变换空间变换主要解决图像平面上像素的重新定位问题,式(1)中的空间几何变换函数f 可用空间变换模型进行描述,常用的空间变换模型有刚体变换、仿射变换、投影变换和非线性变换。
刚体变换使得一幅图像中任意两点间的距离变换到另一幅图像中后仍然保持不变;仿射变换使得一幅图像中的直线经过变换后仍保持直线,并且平行线仍保持平行;投影变换是从三维图像到二维平面的投影;非线性变换把一条直线变换为一条曲线,一般用代数多项式来表示。
仿射变换是最常用的一种空间变换形式,可以实现图像的平移、旋转、按比例缩放等操作,我们在实验中使用的是此变换模型。
仿射变换可以用矩阵形式表示:1[x 1y 1]=0[x 0y 1]T =0[x 0y 1]111221223132001t t t t t t ⎛⎫⎪ ⎪ ⎪⎝⎭当T 分别取值为1000101xyt t ⎛⎫⎪ ⎪ ⎪⎝⎭、cos sin 0sin cos 0001θθθθ-⎛⎫ ⎪ ⎪ ⎪⎝⎭、000001xy s s ⎛⎫⎪⎪ ⎪⎝⎭将依次对图像进行平移、旋转、按比例缩放操作。
2.3 插值技术浮动图的像素点经过空间变换后,参考图中对应点的坐标一般来说不是整数,必须通过插值方法计算该点的灰度值。
常用的插值算法有最近邻插值算法、双线性插值算法和部分体积插值算法。
为了尽可能避免基于互信息配准的局部最优问题,本文采用改进PV 插值算法。
PV 插值法是一种专门针对两幅图像的联合直方图的更新而设计的插值技术,它并不是真正意义上的插值方法,因为通过此方法并不能计算出反向变换点的灰度值。
PV 插值法的计算过程如图1.图中的T α(x)为反向变换得到的一个浮点数点,其四个最近邻像素点分别为n n n n 4321,,,。
设参考图像为r(x),浮动图像为f(x),则它们的联合图方图函数h rf 如下。
1=∑iiw i=1,2,3,4w n h i i rf f x r i =+∀))(),(()1(*)1(1dy dx w --=)1(*2dy dx w -=dy dx w *)1(4-=dy dx w *3=2.4.1常用的优化算法有:牛顿法、最速下降法、模拟退火法、遗传算法、单纯形法、模式搜索法、Powell 法等搜索算法。
Powell 法不需要对目标函数进行求导计算,具有收敛速度快、精度高、可靠性好等优点,是目前解无约束最优化问题十分有效的直接法,应用相当广泛,所以我们在实验中采用该算法。
Powell 算法实现如下:(1)给定允许误差)0(<εε,初始点x )0(和n 个线性无关的方向dddn ),1()2,1()1,1(,...,, ,置k=1.(2)置x xk k )1()0,(-=,,从x k )0,(出发,依次沿方向dddn k k k ),()2,()1,(,...,,进行一维搜索,得到点xxx n k k k ),()2,()1,(,...,,。
再从x n k ),(出发,沿方向xxdk n k n k )0,(),()1,(-=+作一维搜索点,得到点x k )(。
(3)若ε<--x xk k )1()(,则停止搜索,得到点x k )(;否则,置n j ddj k j k ,...,1,)1,(),1(==++ 1+=k k返回步骤(2).2.4.2 Powell 算法中的一维搜索算法——brent 方法。
Brent 法思路:开始时利用黄金分割法确定一个较小的包含极小点的不确定区间,然后利用抛物线法获得一个极小点,若此极小点落在此不确定区间,则利用该极小点继续进行二次插值;否则放弃该点,改用黄金分割法搜索。
算法中密切关注a,b,u,v,w,x 这六个点,其中a,b 表示包含极小点的不确定区间][b a ,;u 表示最新搜索到的极小点;w 表示上一次搜索到的极小点;v 表示上一次的w 值;x 表示当前已搜到的最佳极小点。
算法实现步骤如下(设目标函数为f(x)):(1)给定初始区间][b a ,,精度要求0>ε,黄金分割系数1,381966.0==k cgold (2)计算)(*a b cgold a v -+=,置v w v x ==,;计算)(v f ,置)()(),()(v f x f v f w f ==;置上一次迭代步长0.0=e 。
(3)计算当前区间中点2/)(b a xm +=,若ε<-xm x ,则停止搜索,的极小值x ,否则转(4)。
(4)令1*22,*1tol tol x tol ==ε,若1tol e <,则采用黄金分割法,转(8)。
(5)若)()()(x f v f w f ====,则采用黄金分割法,转(8)。
(6)过三点))(,()),(,()),(,(v f v w f w x f x 构造抛物线函数,计算))()()(())()()(())()(()())()(()(*2/122v f x f w x w f x f v x v f x f w x w f x f v x x u -----------= (7)若u 在][b a ,之外,则用黄金分割法重新求极小点,转步骤(8);若u 相对于x 的改变量大于上一次的改变量,则转步骤(8);若2t o l a u <-或2tol u b <-,则用1tol 代替前面的改变量。
(8)按黄金分割法确定点u ,且u 在区间][x a ,和][b x ,中长度较大的一个;若u 相对于x 的改变量小于1tol ,则用1tol 代替前面的改变量。
(9)计算)(u f ,按照各自的定义更新)(),(),(,,,,,v f w f x f v w x b a 。
置1+=k k ,转步骤(3)。
3 基于互信息的图像配准方法3.1 互信息的计算互信息是信息理论中的一个基本概念,通常用于描述两个系统间的统计相关性,或者是一个系统中所包含的另一个系统中信息的多少,它可以用熵来描述:),()()(),(B A H B H A H B A I -+= (2) 其中,)(A H 和)(B H 分别是系统A 和B 的熵,),(B A H 是它们的联合熵,依次定义如下:)(log )()(a a A H P p A aA∑-= (3))(log )()(b b B H P p B bB∑-= (4)),(log ),(),(,b a b a B A H P p AB ba AB∑-= (5)其中)(,,a B b A a pA∈∈和)(b P B 分别是系统A 和B 完全独立时的的概率分布。
),(b a PAB是系统A 和B 的联合概率分布。
令图像A 和B 的互信息为),(B A I ,将式(3),(4),(5),分别代入式(2),即可得到图像互信息的计算公式:),(log ),()(log )()(log )(),(2,22b a b a a a a a B A I P P P P P P AB ba AB B bB A aA ∑∑∑+--=3.2 配准方法首先根据两幅图像的基本情况预设一个初始参数X 0,其中)1(0X 为裁剪 旋转)3(0X 角的图像2 行的第一个索引。
)2(0X 为裁剪旋转)3(0X 角的图像2X为旋转的角度,)4(0X为比例因子。
然后按照给定的列的第一个索引,)3(初始参数对图像2 进行变换,并计算图像1 和图像2 的互信息,然后利用最优化工具箱中的fminsearch 函数在X0附近寻找使图像1 和图像2 互信息最大的点,直至搜索到满足精度要求的参数;最后输出配准参数。
4. 图像配准的实现4.1配准流程首先对参考图像和浮动图像按照给定的初始点使用PV插值法统计联合直方图并计算互信息值;然后利用POWELL算法依据最大互信息理论判断所得参数是否最优,若不是,则继续搜索较优参数,在搜索时会不断重复“空间几何变换(affine)-统计联合直方图(PV插值法)-计算互信息值-最优化判断”的过程,直至搜索到满足精度要求的参数;最后输出配准参数。
4.2.所用到的M文件及其源代码4.2.1. ImageRegistration.mfunction varargout = ImageRegistration(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @ImageRegistration_OpeningFcn, ...'gui_OutputFcn', @ImageRegistration_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{:});endaddpath(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)global I;%%%调用OpenImage.m读入参考图像并获取文件名、图像大小%%%[filename ,pathname]=uigetfile({'*.jpg';'*.bmp';'*.bmp'},'Ñ¡ÔñͼƬ'); str=[pathname filename];I=imread(str);axes(handles.axes1);imshow(I);handles.data=I;guidata(hObject,handles);figure(1);imshow(handles.data);function pushbutton3_Callback(hObject, eventdata, handles)handles.Old_I=handles.data;handles.Old_J=handles.data2;[I,J]=GLPF(handles);handles.data=I;handles.data2=J;guidata(hObject,handles);ticRegistrationParameters=Powell(handles);tocElapsedTime=toc;handles.RegistrationParameters=RegistrationParameters;y=RegistrationParameters(1);x=RegistrationParameters(2);ang=RegistrationParameters(3);MI_Value=RegistrationParameters(4);RegistrationResult=sprintf('X,Y,Angle=[%.5f][%.5f][%.5f]',x,y,ang); MI_Value=sprintf('MI_Value=[%.4f]',MI_Value);ElapsedTime=sprintf('Elapsed Time=[%.3f]',ElapsedTime);axes(handles.axes3)[RegistrationImage]=Register(handles);imshow(RegistrationImage)set(handles.text1,'string',RegistrationResult);set(handles.text2,'string',MI_Value);set(handles.text3,'string',ElapsedTime);function pushbutton2_Callback(hObject, eventdata, handles)global J;[filename ,pathname]=uigetfile({'*.jpg';'*.bmp';'*.bmp'},'Ñ¡ÔñͼƬ'); str=[pathname filename];J=imread(str);axes(handles.axes2);imshow(J);handles.data2=J;guidata(hObject,handles);figure(2);imshow(handles.data2);4.2.2Powell.mfunction [RegistrationParameters]=Powell(handles)e=0.1;X0=[0 0 0];D=[1 0 0;0 1 0;0 0 1];num=0;while(num<200)num=num+1;d1=D(1,:);%d1Ϊ¾ØÕóDµÄµÚÒ»ÐУ¬³õʼËÑË÷·½Ïò[X1,fX1]=OneDimSearch(X0,d1,handles);d2=D(2,:);%d2Ϊ¾ØÕóDµÄµÚ¶þÐУ¬³õʼËÑË÷·½Ïò[X2,fX2]=OneDimSearch(X1,d2,handles);d3=D(3,:);%d3Ϊ¾ØÕóDµÄµÚÈýÐУ¬³õʼËÑË÷·½Ïò£¬ÈýάËÑË÷¹ÊÓÐÈý¸ö·½Ïò [X3,fX3]=OneDimSearch(X2,d3,handles);fX0=PV(X0(1),X0(2),-X0(3),handles);Diff=[fX1-fX0 fX2-fX1 fX3-fX2];[maxDiff,m]=max(Diff);%maxº¯ÊýµÄÓ÷¨£¬·µ»ØmaxdiffΪÏòÁ¿DiffµÄ×î´óÔªËØ£¬mΪ×î´óÔªËØµÄÐòºÅd4=X3-X0;temp1=X3-X0;Conditon1=sum(temp1.*temp1);if Conditon1<=ebreakend[X4,fX4,landa]=OneDimSearch(X0,d4,handles);X0=X4;temp2=X4-X3;Conditon2=sum(temp2.*temp2);if Conditon2<=eX3=X4;breakendtemp3=sqrt((fX4-fX0)/(maxDiff+eps));if(abs(landa)>temp3)D(4,:)=d4;for i=m:3D(i,:)=D(i+1,:);endendendRegistrationParameters(1)=-X3(1);RegistrationParameters(2)=-X3(2);RegistrationParameters(3)=-X3(3);RegistrationParameters(4)=fX3;function [Y,fY,landa]=OneDimSearch(X,direction,handles)%һάËÑË÷²ÉÓÃbrent·½·¨a=-5;b=5;Epsilon=0.0001;cgold=0.381966;IterTimes=200;if a>btemp=a;a=b;b=temp;endv=a+cgold*(b-a);w=v;x=v;e=0.0;fx=Fx(x,X,direction);fv=fx;fw=fx;for iter=1:IterTimesxm=0.5*(a+b);if abs(x-xm)<=Epsilon*2-0.5*(b-a)breakendif abs(e)>Epsilonr=(x-w)*(fx-fv);q=(x-v)*(fx-fw);p=(x-v)*(q-(x-w)*r;q=2*(q-r);if q>0p=-p;endq=abs(q);etemp=e;e=d;if not(abs(p)>=abs(0.5*q*etemp)||p<=q*(a-x)||p>=q*(b-x)) d=p/q;u=x+d;if u-a<Epsilon*2||b-u<Epsilon*2d=MySign(Epsilon,xm-x);endelseif x>=xme=a-x;elsee=b-x;endd=cgold*e;endelseif x>=xm;e=a-x;elsee=b-x;endd=cgold*e;endif abs(d)>=Epsilonu=x+d;elseu=x+MySign(Epsilon,d);endfu=Fx(u,X,direction);if fu<=fxif u>=xa=x;elseb=x;endv=w;fv=fw;w=x;fw=fx;x=u;fx=fu;elseif u<xa=u;elseb=u;endif fu<=fw||w==xv=w;fv=fw;w=u;fw=fu;elseif fu<=fv||v==x||v==w v=u;fv=fu;endendendendlanda=x;Y=X+x*direction;fY=Fx(x,X,direction);function[mySign]=MySign(a,b)if b>0Result=abs(a);elseResulr=abs(a);endmySign=Result;function [fx]=Fx(x,X,direction,handles)fx=-PV(X(1)+direction(1)*x,X(2)+direction(2)*x,-(X(3)+direction(3)*x) ,handles);4.2.3 PV.mfunction [mi]=PV(x,y,ang,handles)a=handles.data;a=double(a);b=handles.data2;b=double(b);[M,N]=size(a);hab=zeros(256,256);ha=zeros(1,256);hb=zeros(1,256);if max(max(a))~=min(min(a))a=(a-min(min(a)))/(max(max(a))-min(min(a)));elsea=zeros(M,N);endif max(max(b))~=min(min(b))b=(b-min(min(b)))/(max(max(b))-min(min(b)));elseb=zeros(M,N);enda=double(int16(a*255))+1;b=double(int16(b*255))+1;[width,height]=size(b);u=(width-1)/2;v=(height-1)/2;rad=pi/180*ang;t1=[1 0 0;0 1 0;x y 1];t2=[1 0 0;0 1 0;-u -v 1];t3=[cos(rad) -sin(rad) 0;sin(rad) cos(rad) 0;0 0 1];t4=[1 0 0;0 1 0;u v 1];T=t2*t3*t4*t1;tform=maketform('affine',T);coordinate_x=zeros(width,height);coordinate_y=zeros(width,height);for i=1:widthfor j=1:heightcoordinate_x(i,j)=i;endendfor i=1:widthfor j=1:heightcoordinate_y(i,j)=j;endend[w z]=tforminv(tform,coordinate_x,coordinate_y);for i=1:widthfor j=1:heightsource_x=w(i,j);source_y=z(i,j);if(source_x>width-1||source_y>height-1||double(uint16(source_x))<=1|| double(uint16(source_y))<=1)hab(a(1,1),a(1,1))=hab(a(1,1),a(1,1))+1;elsem=fix(source_x);n=fix(source_y);index_b=b(i,j);index_a0=a(m,n);index_a1=a(m+1,n);index_a2=a(m,n+1);index_a3=a(m+1,n+1);dx=source_x-m;dy=source_y-n;hab(index_a0,index_b)=hab(index_a0,index_b)+(1-dx)*(1-dy); hab(index_a1,index_b)=hab(index_a1,index_b)+dx*(1-dy);hab(index_a2,index_b)=hab(index_a2,index_b)+(1-dx)*dy;hab(index_a3,index_b)=hab(index_a3,index_b)+dx*dy;endendendhabsum=sum(sum(hab));index=find(hab~=0);pab=hab/habsum;Hab=sum(sum(-pab(index).*log2(pab(index))));pa=sum(pab,2);index=find(pa~=0);Ha=sum(sum(-pa(index).*log2(pa(index))));pb=sum(pab,1);index=find(pb~=0);Hb=sum(sum(-pb(index).*log2(pb(index))));mi=Ha+Hb-Hab;4.2.4 Register.mfunction[RegistrationImage]=Register(handles)I=handles.data;J=handles.data2;y=handles.RegistrationParameters(1);x=handles.RegistrationParameters(2);ang=-handles.RegistrationParameters(3);[nrows,ncols]=size(J);width=nrows;height=ncols;new_J=uint8(zeros(width,height));a=(width-1)/2;c=a;b=(height-1)/2;d=b;rad=pi/180*ang;t1=[1 0 0;0 1 0;x y 1];t2=[1 0 0;0 1 0;-a -b 1];t3=[cos(rad) -sin(rad) 0;sin(rad) cos(rad) 0;0 0 1]; t4=[1 0 0;0 1 0;c d 1];T=t2*t3*t4*t1;tform=maketform('affine',T);tx=zeros(width,height);ty=zeros(width,height);for i=1:widthfor j=1:heighttx(i,j)=i;endendfor i=1:widthfor j=1:heightty(i,j)=j;endend[w z]=tforminv(tform,tx,ty);for i=1:widthfor j=1:heightsource_x=w(i,j);source_y=z(i,j);if(source_x>width-1||source_y>height-1||double(uint16(source_x))<=0|| double(uint16(source_y))<=0)new_J(i,j)=J(1,1);elseif(source_x/double(uint16(source_x))==1.0&&(source_y/double(uint16(so urce_y)==1.0)))new_J(i,j)=J(int16(source_x),int16(source_y));elsea=double(uint16(source_x));b=double(uint16(source_y));x11=double(J(a,b));x12=double(J(a,b+1));x21=double(J(a+1,b));x22=double(J(a+1,b+1));new_J(i,j)=uint8((b+1-source_y)*((source_x-a)*x21+(a+1-source_x)*x11) +(source_y-b)*((source_x-a)*x22+(a+1-source_x)*x12));endendendendJ=new_J;I=uint8(I);J=uint8(J);RegistrationImage=uint8(J);5.配准结果参考图像浮动图像配准结果变换参数及最大互信息值X,Y,Angle=[-1.35741][1.39364][9.3372]My Value=[1.9907]Elasped time=[473.458]6.配准结果从配准结果可以看出,选用powell算法及一维brent法的情况下。