发明名称 一种自适应阈值的Harris角点检测方法
摘要 本发明提供了一种自适应阈值的Harris角点检测方法,计算每个像素点的R值,通过使用自适应迭代阈值算法的策略,求取针对图像来讲最合适的阈值,使用阈值及临近角点剔除策略提取角点。本发明避免人工对阈值的设置,能使角点分布的更加均匀,提高角点检测的精确性,避免了角点聚簇以及伪角点的产生,在不影响Harris角点检测算法计算方便与稳定的前提下,避免的原算法因为阈值选取而带来的不便,同时有效的避免了聚簇现象和伪角点的出现。本发明在阈值自适应选取方面达到了较好的效果。
申请公布号 CN103413306A 申请公布日期 2013.11.27
申请号 CN201310332703.X 申请日期 2013.08.01
申请人 西北工业大学 发明人 谢红梅;王志成;李会方;冯晓毅;吴俊;彭进业;蒋晓悦;何贵青;王保平;王珺;李永恒
分类号 G06T7/00(2006.01)I 主分类号 G06T7/00(2006.01)I
代理机构 西北工业大学专利中心 61204 代理人 顾潮琪
主权项 1.一种自适应阈值的Harris角点检测方法,其特征在于包含如下步骤:(1)对原图像I中的每个像素点进行梯度运算,得到M矩阵中的各个元素,<maths num="0001"><![CDATA[<math><mrow><mi>M</mi><mo>=</mo><mfenced open='(' close=')'><mtable><mtr><mtd><msubsup><mi>I</mi><mi>x</mi><mn>2</mn></msubsup></mtd><mtd><msub><mi>I</mi><mi>x</mi></msub><msub><mi>I</mi><mi>y</mi></msub></mtd></mtr><mtr><mtd><msub><mi>I</mi><mi>x</mi></msub><msub><mi>I</mi><mi>y</mi></msub></mtd><mtd><msubsup><mi>I</mi><mi>y</mi><mn>2</mn></msubsup></mtd></mtr></mtable></mfenced><mo>,</mo></mrow></math>]]></maths>其中,I<sub>x</sub>为图像在水平方向的梯度图像,I<sub>y</sub>为图像在竖直方向的梯度图像,对原图像I求卷积求得,:<maths num="0002"><![CDATA[<math><mfenced open='' close=''><mtable><mtr><mtd><msub><mi>I</mi><mi>x</mi></msub><mo>=</mo><mfrac><mrow><mo>&PartialD;</mo><mi>I</mi></mrow><mrow><mo>&PartialD;</mo><mi>x</mi></mrow></mfrac><mo>=</mo><mi>I</mi><mo>&CircleTimes;</mo><mrow><mo>(</mo><mo>-</mo><mn>1,0,1</mn><mo>)</mo></mrow></mtd><mtd><msub><mi>I</mi><mi>y</mi></msub><mo>=</mo><mfrac><mrow><mo>&PartialD;</mo><mi>I</mi></mrow><mrow><mo>&PartialD;</mo><mi>y</mi></mrow></mfrac><mo>=</mo><mi>I</mi><mo>&CircleTimes;</mo><msup><mrow><mo>(</mo><mo>-</mo><mn>1,0,1</mn><mo>)</mo></mrow><mi>T</mi></msup></mtd></mtr></mtable></mfenced></math>]]></maths>其中,I表示原图像;<img file="FDA00003609800500013.GIF" wi="58" he="61" />表示卷积;<img file="FDA00003609800500014.GIF" wi="232" he="87" />即由水平方向梯度图像的各个像素点的灰度值的平方值组成的图像;<img file="FDA00003609800500015.GIF" wi="237" he="87" />即计算垂直方向梯度图像的各个像素点的灰度值的平方值组成的图像;(2)对M矩阵中的各个元素分别进行高斯平滑滤波,得到新的元素图像I';(3)利用公式<maths num="0003"><![CDATA[<math><mrow><mi>R</mi><mo>=</mo><mo>{</mo><msubsup><mi>I</mi><mi>x</mi><mn>2</mn></msubsup><mo>&times;</mo><msubsup><mi>I</mi><mi>y</mi><mn>2</mn></msubsup><mo>-</mo><msup><mrow><mo>(</mo><msub><mi>I</mi><mi>x</mi></msub><msub><mi>I</mi><mi>y</mi></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>}</mo><mo>-</mo><mn>0.04</mn><mo>{</mo><msubsup><mi>I</mi><mi>x</mi><mn>2</mn></msubsup><mo>+</mo><msubsup><mi>I</mi><mi>y</mi><mn>2</mn></msubsup><mo>}</mo></mrow></math>]]></maths>计算步骤(2)中图像I'中各个像素点的R值,组成矩阵Matrix<sub>R</sub>;(4)设置迭代终止值K=1及迭代初值T<sub>0</sub>,T<sub>0</sub>取步骤(3)矩阵Matrix<sub>R</sub>中所有元素的最大值与最小值的算数平均数,即:<maths num="0004"><![CDATA[<math><mrow><msub><mi>T</mi><mn>0</mn></msub><mo>=</mo><mfrac><mrow><msub><mi>R</mi><mi>max</mi></msub><mo>+</mo><msub><mi>R</mi><mi>min</mi></msub></mrow><mn>2</mn></mfrac></mrow></math>]]></maths>其中:R<sub>max</sub>为原图像中各个像素点计算出的R值中最大的R值,即矩阵Matrix<sub>R</sub>中最大的元素值。R<sub>min</sub>为原图像中各个像素点计算的R值中最小的R值,即矩阵Matrix<sub>R</sub>中最小的元素值。(5)设置迭代中间变量初值T=0,并将T<sub>0</sub>赋给T;(6)使用T对Matrix<sub>R</sub>中的各个元素进行分类,分为两个区域G<sub>1</sub>和G<sub>2</sub>,G<sub>1</sub>由Matrix<sub>R</sub>中所有大于T的元素组成,G<sub>2</sub>由Matrix<sub>R</sub>中所有小于等于T的元素组成。(7)分别G<sub>1</sub>和G<sub>2</sub>两个区域中元素的算数平均值μ<sub>1</sub>和μ<sub>2</sub>。(8)计算μ<sub>1</sub>和μ<sub>2</sub>的算数平均值,并赋给μ,即:<maths num="0005"><![CDATA[<math><mrow><mi>&mu;</mi><mo>=</mo><mfrac><mrow><msub><mi>&mu;</mi><mn>1</mn></msub><mo>+</mo><msub><mi>&mu;</mi><mn>2</mn></msub></mrow><mn>2</mn></mfrac></mrow></math>]]></maths>(9)设置迭代输出变量初值T<sub>out</sub>=0,求μ与T的差值的绝对值,若差值的绝对值小于等于步骤(4)设定的迭代终止值K,则停止迭代,并将T赋给阈值T<sub>out</sub>;若差值绝对值大于K,将μ的值赋给T,然后重复步骤(6)至步骤(9);(10)使用阈值T<sub>out</sub>提取角点:找出矩阵Matrix<sub>R</sub>中元素值大于该元素周边其他8个元素的值且大于阈值T<sub>out</sub>的元素,其中矩阵边缘的元素不参与角点提取,找到这些元素所对应的坐标,在原图像中找出坐标所对应的像素点,坐标对应的像素点就是角点,在原图像I中将角点标记出来。
地址 710072 陕西省西安市友谊西路127号