影像自动配准 之 特征(角点)提取 之 matlab

         最近研究用MATLAB提取影像特征点(角点)

 

        角点提取主要考虑采用对旋转、角度、比例尺的变化都不敏感的Harris算子,考虑到影像特征点(即配准时的控制点)需要均匀分布的要求,还需要将影像分块,对每块影像进行特征点的提取。

 

        具体实现步骤如下:

一、计算每个像素的harris值

1)在MATLAB中,用imread打开影像;影像格式可以是 tiff、gif、jpg、bmp等常用影像格式。

2)若影像为非灰度图像,则需用rgb2gray转为灰度,并将其转成double型的值。

3)对图像进行横向及纵向的梯度滤波。所谓滤波即采用一n*n(n一般为奇数)的窗口和影像矩阵叠加,计算窗口和对应影像的乘积,并相加,将得到的值赋值给窗口中心所对应的影像的像素点。依次计算,直至将影像上所有的像素计算完毕。得到的结果分别记为X,Y。

4)计算X.*X、Y.*Y、X.*Y。这里的.*,不是做矩阵运算,而是将矩阵是、中对应位置的值进行相乘。

5)对4)中的值进行高斯滤波。高斯滤波的具体计算公式忘记了,可以上网查,很简单。将结果以A、B、C为表示。

6)计算(A.*B-C)./(A+B+0.0000001)的值,分母加0.0000001是避免分母为0的情况。

二、影像分块

7)依据影像的大小,将影像分成m*n块子网格。

8)计算每块影像的熵值。熵值是衡量信息量大小的量。具体实现是首先计算每个灰度值的概率p,然后计算 -p*log p ,并相加。

9)将熵值由大到小排序,并取熵值在前1/4的子网格,获得在一中计算得到的harris值,选择x个较大值的点作为角点。

10)将影像重新分块,分成m/2*n/2块影像,若其子网格中有提取出角点的,则不计算;若子网格中还未有角点,则需要选择熵最大的子网格,在其中提取一定量的角点。

 

       现在我用此方法已经提取了角点,效果不错,但是针对不同的影像,阈值的选取也需要不同,这对影像的自动配准的实现来说 是个障碍。现在正在查找资料,看有没有相关的算法依据影像的实际情况来自动设置阈值。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值