互信息图像配准

图像配准是为了解决两幅不同来源的图像匹配问题。例如,楼外的一颗大树开花了,小明路过觉得好看,就拿相机拍了一张照片。结果回屋拷出来一看不满意,于是小明从窗户又拍了一张。两张照片拍摄角度和距离不一样(也即存在投影变换),同时照片细节也有差异(第二次拍摄的时候起风了,树叶子都有轻微的位移)。那么问题来了:怎么样让计算机把两幅图片中的树,像素对像素的给匹配起来?

互信息配准算法是解决此问题较好的方法之一。它是利用信息论中的熵思想。我们知道,熵是对随机变量不确定度的衡量。一个离散随机变量X的熵可以表示为:

H(X)= x p(x)log 2 p(x) 

那么对于联合分布 f(X,Y)  ,当随机变量Y的取值确定以后,由于相关性的存在,X的不确定性就会降低,熵也随之减小。因此,可以定义条件熵

H(X|Y)= x,y p(x,y)log 2 p(x|y) 

可以证明,X的条件熵是一定小于其自身的熵,也即
H(X|Y)H(X) 

啥时候等号成立呢?当X和Y完全独立的时候,有兴趣的同学可以推导一下,很简单。从物理意义上也比较好理解:当X和Y完全独立,我们知道Y的值,和随机变量X没有一点关系,当然X的不确定度就没有减小。所以此时条件熵和熵相等。

有了条件熵之后,就可以定义随机变量 X  Y  的互信息,它的公式为:

I(X,Y)= x,y p(x,y)log 2 p(x,y)p(x)p(y)  

这个公式不太直观,不过如果这么解释就易懂多了:
I(X,Y)=H(X)H(X|Y) 

换言之,互信息就是,当引入一个和X具有相关性的随机变量Y之后,条件熵所消除的不确定度。

下面回到图像配准问题,假设现在待配准的两幅图像分别是 I A   I B   ,其像素数分别用 #A  #B  来表示。我们先来讨论最直观的,根据像素值来配准。也就是说,把图像 I A   I B   的灰度值作为分别作为随机变量 A  B  。其概率分布可以根据直方图求得,也即

p(a)=#a#A ,p(b)=#b#B ,p(a,b)=#a+#b#A+#B  

其中 #a  表示 I A   值为 a  的像素数目,下同。有了上式之后,我们很容易就可以利用互信息公式,求出图片 I A   I B   的互信息。当两张图片被成功配准时,其互信息达到最大。

有了互信息作为小明拍摄的两幅图片之间相似性的度量,我们就可以开始配准啦。首先要建立变换模型,由于两张照片之间是存在角度和距离的变化,可以用投影变换来仿真。令 [x a  y a ]  [x b  y b ]  表示树上同一个点在 I A   I B   两幅图像中对应的二维坐标,则它们之间的投影变换可以这么建模

⎡ ⎣ ⎢ x a y a w a  ⎤ ⎦ ⎥ =s⎡ ⎣ ⎢ m 11 m 21 m 31  m 12 m 22 m 32  m 13 m 23 m 33  ⎤ ⎦ ⎥ ⎡ ⎣ ⎢ x b y b w b  ⎤ ⎦ ⎥ +⎡ ⎣ ⎢ t 1 t 2 w t  ⎤ ⎦ ⎥  

其中 s  表示尺度参数, M=[m 11  m 12  m 13 ; m 21  m 22  m 23 ; m 31  m 32  m 33  ]  表示旋转矩阵, t=⎡ ⎣ ⎢ t 1 t 2 w t  ⎤ ⎦ ⎥   表示平移参数。那么配准过程就是对这12个参数的估计了,就是搜索这12个参数的值,使得互信息最大化。从而将配准为题转换为一个最优化问题。

如何让搜索过程能够最好、最快地收敛到全局最优解,是图像配准中的另一个重要问题,这个目前还在学习中,留待下次记录。遗传算法、模拟退火等都可以用来求解。

互信息配准的优点是只使用了图像本身的信息,也即底层信息。它不像SIFT匹配等方法,需要人工设定的特征点提取。同时,由于互信息具有较好的鲁棒性,这种方法对局部差异不太敏感,例如灰度不均、几何失真、数据缺失等等。缺点就是运算量大,配准时间依赖搜索算法。

你可能感兴趣的:(学习笔记)