转自:http://blog.youkuaiyun.com/wuxingyu_cs/article/details/50397280
图像配准是为了解决两幅不同来源的图像匹配问题。例如,楼外的一颗大树开花了,小明路过觉得好看,就拿相机拍了一张照片。结果回屋拷出来一看不满意,于是小明从窗户又拍了一张。两张照片拍摄角度和距离不一样(也即存在投影变换),同时照片细节也有差异(第二次拍摄的时候起风了,树叶子都有轻微的位移)。那么问题来了:怎么样让计算机把两幅图片中的树,像素对像素的给匹配起来?
互信息配准算法是解决此问题较好的方法之一。它是利用信息论中的熵思想。我们知道,熵是对随机变量不确定度的衡量。一个离散随机变量X的熵可以表示为:
那么对于联合分布
f(X,Y)
,当随机变量Y的取值确定以后,由于相关性的存在,X的不确定性就会降低,熵也随之减小。因此,可以定义条件熵
可以证明,X的条件熵是一定小于其自身的熵,也即
啥时候等号成立呢?当X和Y完全独立的时候,有兴趣的同学可以推导一下,很简单。从物理意义上也比较好理解:当X和Y完全独立,我们知道Y的值,和随机变量X没有一点关系,当然X的不确定度就没有减小。所以此时条件熵和熵相等。
有了条件熵之后,就可以定义随机变量 X 和 Y 的互信息,它的公式为:
这个公式不太直观,不过如果这么解释就易懂多了:
换言之,互信息就是,当引入一个和X具有相关性的随机变量Y之后,条件熵所消除的不确定度。
下面回到图像配准问题,假设现在待配准的两幅图像分别是
IA
和
IB
,其像素数分别用
#A
和
#B
来表示。我们先来讨论最直观的,根据像素值来配准。也就是说,把图像
IA
、
IB
的灰度值作为分别作为随机变量
A
和
B
。其概率分布可以根据直方图求得,也即
其中 #a 表示 IA 值为 a 的像素数目,下同。有了上式之后,我们很容易就可以利用互信息公式,求出图片 IA 和 IB 的互信息。当两张图片被成功配准时,其互信息达到最大。
有了互信息作为小明拍摄的两幅图片之间相似性的度量,我们就可以开始配准啦。首先要建立变换模型,由于两张照片之间是存在角度和距离的变化,可以用投影变换来仿真。令
[xa ya]
和
[xb yb]
表示树上同一个点在
IA
和
IB
两幅图像中对应的二维坐标,则它们之间的投影变换可以这么建模
其中 s 表示尺度参数, M=[m11m12m13; m21m22m23; m31m32m33] 表示旋转矩阵, t=⎡⎣⎢t1t2wt⎤⎦⎥ 表示平移参数。那么配准过程就是对这12个参数的估计了,就是搜索这12个参数的值,使得互信息最大化。从而将配准为题转换为一个最优化问题。
如何让搜索过程能够最好、最快地收敛到全局最优解,是图像配准中的另一个重要问题,这个目前还在学习中,留待下次记录。遗传算法、模拟退火等都可以用来求解。
互信息配准的优点是只使用了图像本身的信息,也即底层信息。它不像SIFT匹配等方法,需要人工设定的特征点提取。同时,由于互信息具有较好的鲁棒性,这种方法对局部差异不太敏感,例如灰度不均、几何失真、数据缺失等等。缺点就是运算量大,配准时间依赖搜索算法。