简单介绍:

基于互信息的图像配准算法以其较高的配准精度和广泛的适用性而成为图像配准领域研究的热点之中的一个。而基于互信息的医学图像配准方法被觉得是最好的配准方法之中的一个。基于此。本文将介绍简单的基于互信息的图像配准算法。

预备知识

熵(entropy)是信息论中的重要概念,用来描写叙述系统不确定性的測度,反映一个系统本身所能提供的信息总量。除去枯燥的概念。信息熵的数学表达式为:

当然,对于一幅图像来说,其熵的计算表达式例如以下:

       hi表示图像Y中灰度值为i的像素点总数,N表示图像Y的灰度级数。

显然Pi表示灰度i出现的概率。于是非常自然的就会想到用直方图来计算。(对于单幅图像MATLAB中可由entropy()函数求得)

联合熵

联合熵反映了随机变量XY的相关性。设两个随机变量XY。则XY的联合信息熵表示为:

对于两幅图像XY来说。利用联合直方图,显然能够计算出二者的联合熵。

互信息

互信息(Mutual InformationMI)是信息论中的重要概念,描写叙述了两个系统之间的相关性。或互相包括信息的多少。在图像配准中。两幅图的互信息是通过它们的熵以及联合熵,来反映它们之间信息的相互包括成都程度(02-21-2017更正)。对于图像RF来说,其互信息表示为:

两幅图像相似度越高或重合部分越大时,其想关性也越大,联合熵越小。也即互信息越大

配准及改进:

通过上述预备知识的了解。能够得到一个匹配准则:寻找模板与各子图之间互信息(MI)的最大者。即为配准图像。

当模板与源图中的多个子图具有相似的灰度分布式,互信息easy出现误匹配的情况;互信息对两幅图像之间的重叠区域比較敏感,假设两幅图像的重叠区太小,互信息就会非常小。配准精度随之减少。基于以上问题。StudholmeMaes分别对互信息測度进行了改进。分别提出了归一化互信息(Normalization
Mutual Information。NMI
)、熵相关系数(Entropy Corrleation Coefficient,ECC)改进后的表达式例如以下:

改进后的NMIECC算法,依旧是寻找模板与子图之间最大NMI、ECC值作为配准图像。依据上面的三种匹配准则。我们编写代码,实验例如以下。

实例验证:

MATLAB代码:

%//*****************************************
%//Copyright (c) 2015 Jingshuang Hu %//@filename:demo.m
%//@datetime:2015.08.23
%//@author:HJS
%//@e-mail:eleftheria@163.com
%//@blog:http://blog.csdn.net/hujingshuang
%//*****************************************
%%
%//--------------------------------------------------------------------------
%//图像互信息配准
clear all;
close all;
img=rgb2gray(imread('lena.jpg'));%//源图
[M N]=size(img);
%//--------------------------------------------------------------------------
x0=30;y0=40;
dx=64;dy=64;%//模板、子图尺寸
img1=img(x0:x0+dx-1,y0:y0+dy-1);%//模板
ET=entropy(img1);%//模板熵
%//--------------------------------------------------------------------------
%//联合熵
[m n]=size(img1);%//模板尺寸
MI=zeros(M-dx,N-dy);%//互信息
NMI=zeros(M-dx,N-dy);%//归一化互信息
ECC=zeros(M-dx,N-dy);%//熵相关系数
for i=1:M-dx
for j=1:N-dy
img2=img(i:i+dx-1,j:j+dy-1);%//子图
ES=entropy(img2);%//模板熵
histq=zeros(256,256);%//联合直方图,清空
%//联合直方图
for s=1:m
for t=1:n
x=img1(s,t)+1;y=img2(s,t)+1;%//灰度<—>坐标
histq(x,y)=histq(x,y)+1;
end
end
p=histq./sum(sum(histq));%//联合概率密度
EST=-sum(sum(p.*log(p+eps)));%//联合熵(越小说明类似度越高)
MI(i,j)=ES+ET-EST;%//MI互信息越大,说明相互包括的信息多,即越匹配
NMI(i,j)=(ES+ET)/EST;%//NMI,越大越匹配
ECC(i,j)=2*MI(i,j)/(ES+ET);%//ECC。越大越匹配
end
end
%//--------------------------------------------------------------------------
mi_max=max(max(MI));
nmi_max=max(max(NMI));
ncc_max=max(max(ECC));
[xt1,yt1]=find(MI==mi_max);
[xt2,yt2]=find(NMI==nmi_max);
[xt3,yt3]=find(ECC==ncc_max);
src=img1;
dst1=img(xt1:xt1+dx-1,yt1:yt1+dx-1);
dst2=img(xt2:xt2+dx-1,yt2:yt2+dx-1);
dst3=img(xt3:xt3+dx-1,yt3:yt3+dx-1);
figure;imshow(src);title('模板');
figure;imshow(img);hold on;rectangle('position',[yt1,xt1,n-1,m-1],'edgecolor','r');title('MI配准图');hold off;
figure;imshow(img);hold on;rectangle('position',[yt2,xt2,n-1,m-1],'edgecolor','r');title('NMI配准图');hold off;
figure;imshow(img);hold on;rectangle('position',[yt3,xt3,n-1,m-1],'edgecolor','r');title('NCC配准图');hold off;
%//over

输出结果:

  

參考文献:

1、别术林,基于互信息的医学图像配准算法研究[D],2014.

2、陈伟卿,基于互信息的医学图像刚性配准研究[D],2010.

【图像配准】基于互信息的图像配准算法:MI、EMI、ECC算法的更多相关文章

  1. 图像切割—基于图的图像切割(Graph-Based Image Segmentation)

     图像切割-基于图的图像切割(Graph-Based Image Segmentation) Reference: Efficient Graph-Based Image Segmentation ...

  2. 双目立体匹配经典算法之Semi-Global Matching(SGM)概述:匹配代价计算之互信息(Mutual Information,MI)

      半全局立体匹配算法Semi-Global Matching,SGM由学者Hirschmüller在2005年所提出1,提出的背景是一方面高效率的局部算法由于所基于的局部窗口视差相同的假设在很多情况 ...

  3. AMAP-TECH算法大赛开赛!基于车载视频图像的动态路况分析

    阿里巴巴高德地图AMAP-TECH算法大赛于7月8日开启初赛,赛题为「基于车载视频图像的动态路况分析」,活动邀请了业界权威专家担任评委,优秀选手不仅可以瓜分丰厚的奖金,领取荣誉证书,还有机会进入高德地 ...

  4. OpenCV计算机视觉学习(13)——图像特征点检测(Harris角点检测,sift算法)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 前言 ...

  5. 基于clahe的图像去雾

    基于clahe的图像去雾     通过阅读一些资料,我了解到clahe算法对图像去雾有所价值,正好opencv中有了实现,拿过来看一看.   但是现在实现的效果还是有所差异 #);    clahe] ...

  6. 笔记:基于DCNN的图像语义分割综述

    写在前面:一篇魏云超博士的综述论文,完整题目为<基于DCNN的图像语义分割综述>,在这里选择性摘抄和理解,以加深自己印象,同时达到对近年来图像语义分割历史学习和了解的目的,博古才能通今!感 ...

  7. Java基于opencv实现图像数字识别(四)—图像降噪

    Java基于opencv实现图像数字识别(四)-图像降噪 我们每一步的工作都是基于前一步的,我们先把我们前面的几个函数封装成一个工具类,以后我们所有的函数都基于这个工具类 这个工具类呢,就一个成员变量 ...

  8. Java基于opencv实现图像数字识别(三)—灰度化和二值化

    Java基于opencv实现图像数字识别(三)-灰度化和二值化 一.灰度化 灰度化:在RGB模型中,如果R=G=B时,则彩色表示灰度颜色,其中R=G=B的值叫灰度值:因此,灰度图像每个像素点只需一个字 ...

  9. Java基于opencv实现图像数字识别(二)—基本流程

    Java基于opencv实现图像数字识别(二)-基本流程 做一个项目之前呢,我们应该有一个总体把握,或者是进度条:来一步步的督促着我们来完成这个项目,在我们正式开始前呢,我们先讨论下流程. 我做的主要 ...

随机推荐

  1. 封装cookie的获取,设置与查找

    //获取cookiefunction getCookie(key,value){ var c = document.cookie; var str = key + '=' + value; var r ...

  2. bzoj4551 [HEOI2016]树

    题目描述 在2016年,佳媛姐姐刚刚学习了树,非常开心.现在他想解决这样一个问题:给定一颗有根树(根为1),有以下 两种操作:1. 标记操作:对某个结点打上标记(在最开始,只有结点1有标记,其他结点均 ...

  3. virtualbox挂载目录失败mount: unknown filesystem type ‘vboxsf’

    转自[https://blog.csdn.net/u011486871/article/details/79443375] [有小修改] 错误提示:Vagrant was unable to moun ...

  4. Python求阴影部分面积

    一.前言说明 今天看到微信群里一道六年级数学题,如下图,求阴影部分面积 看起来似乎并不是很难,可是博主添加各种辅助线,写各种方法都没出来,不得已而改用写Python代码来求面积了 二.思路介绍 1.用 ...

  5. HDU 1827 Summer Holiday(强连通)

    HDU 1827 Summer Holiday 题目链接 题意:中文题 思路:强连通缩点,每一个点的权值为强连通中最小值,然后入度为0的点就是答案 代码: #include <cstdio> ...

  6. 【推荐系统实战】:C++实现基于用户的协同过滤(UserCollaborativeFilter)

    好早的时候就打算写这篇文章,可是还是參加阿里大数据竞赛的第一季三月份的时候实验就完毕了.硬生生是拖到了十一假期.自己也是醉了... 找工作不是非常顺利,希望写点东西回想一下知识.然后再攒点人品吧,仅仅 ...

  7. 二维码框架ZBarSDK的使用和自己定义二维码扫描界面方法

    假设你不知道ZBarSDK怎么用,请下载demo http://download.csdn.net/detail/u013686641/7858917 假设你已经配置好ZBarSDK .那么以下这个类 ...

  8. 【LeetCode-面试算法经典-Java实现】【129-Sum Root to Leaf Numbers(全部根到叶子结点组组成的数字相加)】

    [129-Sum Root to Leaf Numbers(全部根到叶子结点组组成的数字相加)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a bina ...

  9. Linux下PHP开启Oracle支持(oci8)

    使用php的常见问题是:编译php时忘记加入某扩展,后来想加入扩展,可是由于安装php后又装了一些东西如PEAR等,不想删除文件夹重装,那么此时就须要自己又一次添加某模块支持了,Linux操作系统下能 ...

  10. cocos2d-x中的二段构造模式

    学习cocos2d-x的过程中,会发现很多对象都通过一个静态函数create来创建.比方以下的一个样例 #define CREATE_FUNC (__TYPE__) \ static __TYPE__ ...