基于灰度信息的图像配准方法


前言

       图像配准方法分为三种:基于灰度信息方法、基于变换域方法和基于特征方法。 基于灰度信息方法是直接根据图像或图像块灰度信息进行像素上的对齐,该方法主要思想是直接最小化图像信息差异。然而,图像信息差异的判断准则衍生出不同的配准方法。常见的基于灰度信息的图像配准方法包括互相关法、互信息法和误差平方和法。

本节将分别对互相关法、互信息法和误差平方和算法展开介绍,并通过MATLAB进行演示。

一、互相关法

        在信号处理中,互相关可以测量两个信号之间的相似性,寻找局部最大值得到信号间的相对位移。类似地,在图像处理领域,通过计算模板图像和目标图像之间的互相关值,也可以判断目标图像相对模板图像的位移值。此外,互相关函数和卷积运算类似,也是两个序列滑动相乘。互相关的两个序列都不翻转,直接滑动相乘,求和。卷积的其中一个序列先翻转,再滑动相乘。计算公式如下:

D(i,j)=\frac{\sum_{x}\sum_{y}M(x,y)N(x-i,y-j)))}{\sqrt{\sum_{x}\sum_{y}N^{2}{}(x-i,y-j)}}

        其中,M(x,y)是待配准图像,N(x,y)是基准图像

        MATLAB程序如下:

img1 = im2gray(imread("0000000000.png"));
img2 = im2gray(imread("0000000021.png"));
montage({img1, img2});
c = normxcorr2(img1, img2);
surf(c);
shading flat;
[ypeak,xpeak] = find(c==max(c(:)));
yoffSet = ypeak-size(img1,1);
xoffSet = xpeak-size(img2,2);
imshow(img2)
drawrectangle(gca,'Position',[xoffSet,yoffSet,size(img1,2),size(img1,1)], 'FaceAlpha',0);

仿真结果如下:

二、互信息法

        互信息是信息论中的重要概念,描述两个系统之间的相关性,或相互包含信息的多少。在图像配准中,两幅图的互信息是通过它们的熵以及联合熵,来反映它们之间信息的相互包含程度。对应图像X和Y,互信息表示为: 

I(X,Y)=\sum_{x\epsilon X}\sum_{y\epsilon Y}\rho (x,y)log\frac{\rho (x,y)}{f(x)g(x)))}

        其中,f(x)和g(x)分别表示概率密度函数;\rho (x,y)表示联合概率密度函数。

          MATLAB程序如下:

clear all;
img1 = rgb2gray(imread("0000000000.png")); % RGB图转灰度图
[A,B] = size(img1); % 图片尺寸
m = 60; % 原图截取初始x位置
n = 80; % 原图截取初始y位置
s = 44; % 截取长度
img2 = img1(m:m+s-1,n:n+s-1); % 获取截取图像
imshow(img2); % 展示截取图像
ET = entropy(img2); % 计算img2熵值
for i = 1: A-s  % 遍历每行
    for j = 1: B-s  % 遍历每列
        img3 = img1(i:i+s-1,j:j+s-1); % 构造和img2同尺寸的可移动图像
        ES = entropy(img3); % 计算img3熵
        histq = zeros(256,256); % 初始化灰度值计数矩阵
        %% 对两个图像的存在的相同灰度值进行计数
        for k = 1:s  % 
            for l = 1:s
                x = img2(k,l) + 1;  % 若img2(1,1)灰度值为10,则对应x轴11; 考虑灰度值范围为0-255转为1-256
                y = img3(k,l) + 1;  % 若img3(1,1)灰度值为15,则对应y轴16;
                % (11,16)进行计数加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; % 互信息越大,越相似
        NMI(i,j) = (ES + ET)/EST; % NMI越大越相似
        ECC(i,j) = 2*MI(i,j)/(ES+ET); % ECC越大越相似
    end
end
max_mi = max(max(MI));  % 最大的MI
max_nmi = max(max(NMI)); % 最大的NMI
max_ecc = max(max(ECC)); % % 最大的ECC
[x1,y1] = find(MI == max_mi);  % 最大的MI坐标
[x2,y2] = find(NMI == max_nmi); % 最大的NMI坐标
[x3,y3] = find(ECC == max_ecc); % % 最大的ECC坐标
figure;imshow(img1);hold on; rectangle('position',[y1,x1,s-1,s-1],'edgecolor','r');title('MI配准图');hold off;
figure;imshow(img1);hold on; rectangle('position',[y2,x2,s-1,s-1],'edgecolor','r');title('NMI配准图');hold off; 
figure;imshow(img1);hold on; rectangle('position',[y3,x3,s-1,s-1],'edgecolor','r');title('ECC配准图');hold off; 

仿真结果如下:

三、误差平方和法

        误差平方和法,顾名思义,计算待匹配图像和基准图像的误差平方和,具体表达式如下:

E(x,y)=\sum_{x}^{}\sum_{y}^{}\left \| T(x,y)-I(x-i,y-j))\right \|^{2}

         MATLAB程序如下:

clear all;
img1 = rgb2gray(imread("0000000000.png")); % RGB图转灰度图
[A,B] = size(img1); % 图片尺寸
m = 60; % 原图截取初始x位置
n = 80; % 原图截取初始y位置
s = 114; % 截取长度
img2 = img1(m:m+s-1,n:n+s-1); % 获取截取图像
imshow(img2); % 展示截取图像
min_res = inf;
for i = 1: A-s  % 遍历每行
    for j = 1: B-s  % 遍历每列
        img3 = img1(i:i+s-1,j:j+s-1); % 构造和img2同尺寸的可移动图像
         res = sum(sum((img2-img3).^2)); % SSD相似函数
         if res < min_res
             min_res = res;
             Best_x = i;
             Best_y = j;
         end
    end
end
figure;imshow(img1);hold on; rectangle('position',[Best_y,Best_x,s-1,s-1],'edgecolor','r');hold off;

仿真结果如下: 

 

总结

基于灰度的图像方法容易实现,但同样存在不足。该方法对成像条件(光照,遮挡)、图像形变旋转以及噪声极其敏感,同时具有较高的计算复杂度。

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萝卜青菜~

感谢您的打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值