发明名称 基于Similarity-Pictorial结构模型的计算机视觉图像特征提取和匹配方法
摘要 一种基于Similarity-Pictorial结构模型的计算机视觉图像特征提取和匹配方法,包括以下步骤:1)将待提取的计算机视觉图像建立PS模型,PS模型的代价函数包appearance代价函数和结构代价函数;2)在待提取的计算机视觉图像中,用顶点的绝对坐标l<sup>i</sup>来表示顶点,并随机的选择其中的一个点作为原点,其他所有点和原点之间的相对关系是确定的;一旦m和D确定下来,PS模型中的结构代价函数t<sub>ij</sub>(v<sub>i</sub>,v<sub>j</sub>)也就随之确定;3)将基于自相似描述子的模板匹配算法引入PS模型,4)找出代价函数L<sup>*</sup>的最小值,即确定计算机视觉图像的匹配点。本发明能够适应不同的光照变化、具有良好的提取效果。
申请公布号 CN101639895A 申请公布日期 2010.02.03
申请号 CN200910101609.7 申请日期 2009.08.14
申请人 浙江工业大学 发明人 刘盛;杜小艳;陈胜勇;张剑华;管秋
分类号 G06K9/00(2006.01)I;G06K9/46(2006.01)I;G06K9/62(2006.01)I 主分类号 G06K9/00(2006.01)I
代理机构 杭州天正专利事务所有限公司 代理人 王 兵;王利强
主权项 1、一种基于Similarity-Pictorial结构模型的计算机视觉图像特征提取和匹配方法,其特征在于:所述计算机视觉图像特征提取和匹配方法包括以下步骤:1)、将待提取的计算机视觉图像建立PS模型,PS模型的代价函数L*包括appearance代价函数和结构代价函数,参照计算式(1):<maths id="math0001" num="0001" ><math><![CDATA[ <mrow> <msup> <mi>L</mi> <mo>*</mo> </msup> <mo>=</mo> <mi>arg</mi> <mi>min</mi> <mrow> <mo>(</mo> <munder> <mi>&Sigma;</mi> <mrow> <msub> <mi>v</mi> <mi>i</mi> </msub> <mo>&Element;</mo> <mi>V</mi> </mrow> </munder> <msub> <mi>a</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>I</mi> <mo>,</mo> <msub> <mi>l</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mo>+</mo> <munder> <mi>&Sigma;</mi> <mrow> <mrow> <mo>(</mo> <msub> <mi>v</mi> <mi>i</mi> </msub> <mo>,</mo> <msub> <mi>v</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mo>&Element;</mo> <mi>E</mi> </mrow> </munder> <msub> <mi>t</mi> <mi>ij</mi> </msub> <mrow> <mo>(</mo> <msub> <mi>l</mi> <mi>i</mi> </msub> <mo>,</mo> <msub> <mi>l</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>;</mo> </mrow>]]></math></maths>其中,ai(I,lj)表示appearance代价函数,是指当区域vi定位在位置1时与图像I的匹配度,tij(li,lj)表示结构代价函数,是指区域vi定位在li和区域vj定位在lj时与图像I的匹配度;2)在待提取的计算机视觉图像中,用顶点的绝对坐标li来表示顶点,并随机的选择其中的一个点作为原点,其他所有点和原点之间的相对关系是确定的,与它们原点的关系用以下向量表示:mi(x)=xi-x0 (3)mi(y)=yi-y0 (4)<maths id="math0002" num="0002" ><math><![CDATA[ <mrow> <mi>m</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mo>=</mo> <mn>1</mn> <mo>/</mo> <mi>n</mi> <mo>*</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </munderover> <msub> <mi>m</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>5</mn> <mo>)</mo> </mrow> </mrow>]]></math></maths><maths id="math0003" num="0003" ><math><![CDATA[ <mrow> <mi>m</mi> <mrow> <mo>(</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>=</mo> <mn>1</mn> <mo>/</mo> <mi>n</mi> <mo>*</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </munderover> <msub> <mi>m</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>6</mn> <mo>)</mo> </mrow> </mrow>]]></math></maths><maths id="math0004" num="0004" ><math><![CDATA[ <mrow> <msub> <mi>D</mi> <mi>xi</mi> </msub> <mo>=</mo> <mn>1</mn> <mo>/</mo> <mrow> <mo>(</mo> <mi>n</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>*</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </munderover> <msup> <mrow> <mo>(</mo> <msub> <mi>m</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mo>-</mo> <mi>m</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>7</mn> <mo>)</mo> </mrow> </mrow>]]></math></maths><maths id="math0005" num="0005" ><math><![CDATA[ <mrow> <msub> <mi>D</mi> <mi>yi</mi> </msub> <mo>=</mo> <mn>1</mn> <mo>/</mo> <mrow> <mo>(</mo> <mi>n</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>*</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </munderover> <msup> <mrow> <mo>(</mo> <msub> <mi>m</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>-</mo> <mi>m</mi> <mrow> <mo>(</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>8</mn> <mo>)</mo> </mrow> </mrow>]]></math></maths>其中,x0,y0表示原点的x,y坐标,xi,yi表示其他点的坐标,n表示被训练的对象的个数,m就表示离原点的距离均值,D表示离原点的距离方差;一旦m和D确定下来,PS模型中的结构代价函数tij(vi,vj)就随之确定;结构代价函数tij(li,lj)简化为ti(vi);结构代价函数ti(vi)通过对测试对象和训练对象进行比较得到:<maths id="math0006" num="0006" ><math><![CDATA[ <mrow> <msub> <mi>t</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <msub> <mi>v</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mo>-</mo> <mi>log</mi> <mrow> <mo>(</mo> <mn>2</mn> <mo>*</mo> <mi>&pi;</mi> <mo>*</mo> <msub> <mi>D</mi> <mi>xi</mi> </msub> <mo>*</mo> <msub> <mi>D</mi> <mi>yi</mi> </msub> <mo>)</mo> </mrow> <mo>+</mo> <mn>0.5</mn> <mo>*</mo> <mrow> <mo>(</mo> <msubsup> <mi>x</mi> <mi>di</mi> <mn>2</mn> </msubsup> <mo>+</mo> <msubsup> <mi>y</mi> <mi>di</mi> <mn>2</mn> </msubsup> <mo>)</mo> </mrow> <mo>/</mo> <mi>log</mi> <mrow> <mo>(</mo> <msub> <mi>D</mi> <mi>xi</mi> </msub> <mo>+</mo> <msub> <mi>D</mi> <mi>yi</mi> </msub> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>9</mn> <mo>)</mo> </mrow> </mrow>]]></math></maths>其中,xdi=mi(x)-m’i(x),m’i(x)表示测试图片中相应特征点的离原点的距离;mi(x));同理,ydi=miy-m’iy;3)、将基于自相似描述子的模板匹配算法引入PS模型,具体有:3.1)、对每个需要检测的特征点建立模板描述子Ti;先训练模板,既在每幅被训练的图片上标记需要找的结构上的特征点qij,简写q;对每个被标记的特征点做自相似描述子dij计算,转化为相关性平面相Sq(x,y):<maths id="math0007" num="0007" ><math><![CDATA[ <mrow> <msub> <mi>S</mi> <mi>q</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>=</mo> <mi>exp</mi> <mrow> <mo>(</mo> <mo>-</mo> <mfrac> <mrow> <msub> <mi>SSD</mi> <mi>q</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> </mrow> <mrow> <mi>max</mi> <mrow> <mo>(</mo> <msub> <mi>var</mi> <mi>noise</mi> </msub> <mo>,</mo> <msub> <mi>var</mi> <mi>auto</mi> </msub> <mrow> <mo>(</mo> <mi>q</mi> <mo>)</mo> </mrow> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow>]]></math></maths>其中,SSDq(x,y)是归一化的相关性平面,而varnoise是一个常数,对应于可接受的光度变化;varauto(q)表示以q为中心的附近区域中与A的最大的方差值;相关性平面SSDq(x,y)转化到以q为中心的极坐标中,并且分成预设数量的位数,旋转每个位中的最大值,将旋转所有的最大值组成一个m×n的矩阵,即以q为中心的自相似描述子;在计算完所有的被训练图片的特征点后,对所有相应的特征点的描述子,做平均值运算,得到每个特征的模板描述子为:<maths id="math0008" num="0008" ><math><![CDATA[ <mrow> <msub> <mi>T</mi> <mi>i</mi> </msub> <mo>=</mo> <mn>1</mn> <mo>/</mo> <mi>n</mi> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </munderover> <msub> <mi>d</mi> <mi>ij</mi> </msub> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>10</mn> <mo>)</mo> </mrow> </mrow>]]></math></maths>其中,n表示被训练的图片数量,i表示每幅被训练图片上的第i个特征点,dij表示第j幅图上的第i个特征点的描述子;Ti就是所有特征点的模板描述子;3.2)、对所有测试图片做模板匹配算法:在模板匹配过程中,采用每个2个像素点对测试图片进行描述子运算;3.3)、在被测试图片上寻找与模板描述子较相似的所有点:通过对被测试描述子和Ti进行欧式距离计算,距离最小的描述子是相似区域,其中心点就是候选特征点,把中心点的坐标记录下来,并且把它与模板描述子之间的欧式距离也记录下来,记为ai(I,lj),然后对它归一化,确定appearance代价函数ai(I,lj);4)、找出代价函数L*的最小值,即确定计算机视觉图像的匹配点。
地址 310014浙江省杭州市下城区朝晖六区