专利名称:一种基于加权采样的图像特征点匹配方法
技术领域:
本发明涉及三维重建等领域,尤其涉及一种基于加权采样的图像特征点匹 配方法。
背景技术:
近几年,计算机科学在视频的三维重建等方面取得了很大的进展。人们可 以用放置在不同位置的多台摄像机对同一场景进行拍摄,通过对拍摄到的场景 进行处理,恢复出整个场景或者场景中某个物体的坐标。从视频或者图像中恢 复出物体的三维模型这种方法得到了很大的应用,它被广泛的应用在环境仿真、 工业测量、电子商务、特技制作等领域。为了提高重建出来的三维模型的质量, 高效率和高质量的特征点匹配是非常有用的。
特征点的检测和匹配在计算机视觉中是一个基础问题,在这个问题上,大
量的研究者做了大量的工作。DavidLowe在2004年提出了一个著名的算法,即 SIFT算法(D丄owe. Distinctive image features from scale-invariant keypoints[J]. International Journal of Computer Vision, 2004, 60(2):91—110),这个算法可以用来 在两幅图像间检测和找到特征点。SIFT算法有尺度不变性,给定两幅相同大小 或者不同大小的图片,SIFT算法可以在两幅图像中检测到图像中的特征点和匹 配点。但是由于图像噪声的存在,SIFT算法找出的图像匹配点集含有很多不正 确的匹配点。因此,需要一个算法来处理SIFT算法找出来的匹配点集,使得处 理后的匹配点集合中不包含或者包含有比较少的不正确匹配点。
为了从SIFT算法找出的匹配点结中选出正确的匹配点,研究者们提出了使 用极线几何和随机采样的方法,这里面包括了随机釆样一致性算法(RANSAC) 和LMedS算法等。这些算法的一般模式都是从数据集中随机采样一些样本数据, 然后用这些样本数据计算出两幅图像间的极线几何性质,再用两幅图像间的极 线几何性质去找出正确的匹配点,随机采样的次数一般都很多。
这里所说的极线几何的性质,主要是指两幅图像间的基础矩阵(R.Hartley, A.Zisserman. Multiple View Geometry in Computer Vision,. Cambridge UniversityPress, London, 2000)。基础矩阵描述了两幅图像间的代数关系,所有 的两幅图像间的正确的匹配点都应该符合基础矩阵的关系。常用的计算基础矩 阵的方法有8点法(R.Hartley, A.Zisserman. Multiple View Geometry in Computer Vision[M]. Cambridge University Press, London, 2000)等。在极线几何里,用Sampson Distance (R.Hartley, A.Zisserman. Multiple View Geometry in Computer Vision[M]. Cambridge University Press, London, 2000)来衡量一对匹配点符合基 础矩阵的程度,可以把Sampson Distance看成是一对匹配点满足一个基础矩阵的 误差,误差大就说明这对匹配点不符合基础矩阵,因此是一对不正确的匹配点。 现有的随机采样一致性算法(RANSAC), LMedS等算法的运行结果在很大 程度上和数据集中的不正确匹配点的比例有关,实验证明,在数据集中不正确 匹配点的比例很高的时候,这些算法产生的结果会把很多的不正确匹配点认为 是正确的匹配点选出来。
发明内容
本发明的目的是克服现有技术的不足,提供了一种有效的基于加权采样的 图像特征点匹配的方法。
基于加权采样的图像特征点匹配的方法包括以下步骤
1) 给定对同一个场景在不同角度拍摄的两幅图像,用SIFT算法找到两幅 图像中的匹配点,构成一个数据集,数据集中元素是两幅图像间的一对匹配点;
2) 为每对匹配点设定一个大于0的权值;
3) 按照匹配点的权重随机采样,每次采样8对点,用8点法计算出两幅图 像间的基础矩阵F,计算出每对匹配点在这个基础矩阵下的Sampson Distance 并组成误差数组记录下来;
4) 对步骤3)重复7V次,得到W个误差数组,找出TV个误差数组中中值最 小的误差数组,根据中值最小的误差数组计算出阈值义,对中值最小的误差数组 中Sampson Distance小于阈值义的匹配点,权重增加一个预先设定好的数值;
5) 对步骤3)和步骤4)重复M次,找出那些权重大于用户给定阈值t7的 匹配点作为最后的匹配点。
所述用SIFT算法找到两幅图像中的匹配点,构成一个数据集步骤给定输 入的对同一个场景在不同角度拍摄的两幅图像,运用SIFT算法找出两幅图像中 的匹配点,并把找到的两幅图像中的匹配点构成一个数据集,数据集中的每个 元素就是两幅图像间的一对匹配点。
所述按照匹配点的权重随机采样步骤随机从数据集中选出一些匹配点, 使得权重大的匹配点被选中的概率大,假设数据集中包含有w对匹配点,其中 第/对匹配点的权重为W,那么,第/对匹配点被选中的概率A的计算公式为实施的算法为 输入权重数组
输出随机采样出的8对点的序号
步骤l:给定包含了每对匹配点的权重数组W,复制这个数组为W',构造一 个空的输出集合OW0W;
步骤2:求出数组vt;'中所有元素的和^tv,.;
,.=1
步骤3:生成一个在[O,S]范围内的随机数A:,从数组W'中找出下标为的元素, 使得如下公式满足
! =1
乂-l
5>、 <A
, =1
步骤4:把步骤3找出来的下标y添加到输出集合o啤W,并把w'数组中的 第/个元素,即v^.设为0;
步骤5:对步骤2,步骤3和步骤4重复8次;
步骤6:输出oW/7W数组。
所述用8点法计算出两幅图像间的基础矩阵F步骤假设8对匹配点的图像
坐标为(x,,X)和(<■,力),首先构造一个矩阵A
,^x!' x,' x!;V ;V 、 ^ 1、
爿=
J^Xg ; ^83^8 Vsh ^78 ^ 乂8 l乂
然后求出一个矩阵/ = (/ /12 /13 /21 /22 /23 /31 /32 /33),使得/满足如
下等式
I/H
具体步骤为对矩阵^进行SVD分解,使得^:t/D^,则矩阵/就是矩阵r 的第9列,SVD在matlab中有现成的函数可以调用,上述求解矩阵/的过程用以下的matlab代码来表示<formula>formula see original document page 8</formula>
求出矩阵/后,按照矩阵/构造一个3x3的矩阵F',使得矩阵F'满足:
接着对矩阵F'进行SVD分解,使得F^C/D^, SVD分解后,矩阵D为3x3 的对角矩阵,D二AagOAO,求出矩阵i^t/^/ag(w,0).",矩阵F为基础矩阵。
所述计算出每对匹配点在这个基础矩阵下的Sampson Distance并组成误差 数组记录下来步骤计算出一个基础矩阵F后,为数据集中的每对匹配点计算 在基础矩阵F下的Sampson Distance,并组成一个数组,称为误差数组,数组中 的第/个元素是数据集中第/对匹配点在基础矩阵F下的Sampson Distance。计 算Sampson Distance的公式为
其中,"和"'为数据集中的一对匹配点,用齐次坐标来表示,即如果一个点的坐 标表示为0c,力,那么这对点的齐次坐标表示为(;c,少,lf ,公式中"为第l幅图像上 的匹配点,"'为第2幅图像上的匹配点,/,和/,分别是极线/的齐次坐标表示的第 一个和第二个元素,和/'2分别是极线/'的齐次坐标表示的第一个元素和第二个 元素。/和/'的计算公式为
可以看到,/和/'都是一个3xl的矩阵,因此可以取到这两个矩阵的第一个和第 二个元素。
所述找出W个误差数组中中值最小的误差数组步骤 一个误差数组的中值 被定义为其中,fl是排序好的误差数组,a,是数组中的第/个元素,w是数组中的元素个
数,计算出每个误差数组的中值,找出中值最小的误差数组。
所述根据中值最小的误差数组计算出阈值;i步骤假设数组『是挑选出来
的中值最小的误差数组,阚值义的计算公式如下
;1 = 2*1.4826 * (1 + 5 /(w - 8》*
其中,w^/an(fn是数组『的中值,w是数组『中元素的个数。
使用本发明对图像的匹配点进行处理具有良好的效果,在给定的匹配点集 中含有大量的不正确匹配点的时候,该方法能选出大量的正确匹配点。
图1是本发明待处理的两幅图片; 图2是用SIFT算法找到的两幅图像间的匹配特征点; 图3是本发明输出的两幅图像间的匹配特征点。
具体实施例方式
基于加权采样的图像特征点匹配的方法包括以下步骤
1) 给定对同一个场景在不同角度拍摄的两幅图像,用SIFT算法找到两幅 图像中的匹配点,构成一个数据集,数据集中元素是两幅图像间的一对匹配点; 把这个数据集称为S,由于图像噪声和SIFT算法本身的因素,数据集S中含有 很多不正确的匹配点。
2) 为每对匹配点设定一个大于0的权值;
为每对匹配点设定一个大于0的权值,即为这个集合构造一个权重数组w, 其中数组中的第/个元素是数据集中第/对匹配点的权值,数组中的每个元素都 被设为一个固定的数值",即每对匹配点的权值被设为a,这里o是一个大于0 的数字。
3) 按照匹配点的权重随机采样,每次采样8对点,用8点法计算出两幅图 像间的基础矩阵F,计算出每对匹配点在这个基础矩阵下的Sampson Distance 并组成误差数组记录下来;
即用随机采样的方法从数据集中采样8对点,采样的过程中,数据集中每对 点被采样到的概率不同,权重大的匹配点被选中的概率大。
4) 对步骤3)重复iV次,得到W个误差数组,找出W个误差数组中中值最 小的误差数组,根据中值最小的误差数组计算出阈值;i,对中值最小的误差数组 中Sampson Distance小于阔值义的匹配点,权重增加一个预先设定好的数值;即首先对所有的误差数组分别进行排序,并求出这些误差数组的中值, 个误差数组的中值的计算公式为
其中,"是排序好的误差数组,",.是数组中的第/个元素,"是数组中的元素个 数。得到所有误差数组的中值后,我们选出误差中值最小的那个数组,把它记 为『,我们用如下公式计算阈值
其中,附e^m(fn是数组『的中值,w是『中元素的个数,也就是数据集S 包含的元素个数。求出阈值;i后,我们从数组『中挑出Sampson Distance小于义 那些匹配点,并增加它们的权重,把它们的权重增加一个固定的数值6,即如果 在数组W中,第z'对匹配点的Sampson Distance小于义,那么我们增加它的权 重,使得w,;w,+6。
5)对步骤3)和步骤4)重复M次,找出那些权重大于用户给定阈值cr的 匹配点作为最后的匹配点。
所述用SIFT算法找到两幅图像中的匹配点,构成一个数据集步骤给定输 入的对同一个场景在不同角度拍摄的两幅图像,运用SIFT算法找出两幅图像中 的匹配点,并把找到的两幅图像中的匹配点构成一个数据集,数据集中的每个 元素就是两幅图像间的一对匹配点。
所述按照匹配点的权重随机采样步骤随机从数据集中选出一些匹配点, 使得权重大的匹配点被选中的概率大,假设数据集中包含有《对匹配点,其中 第z'对匹配点的权重为w,.,那么,第/对匹配点被选中的概率A.的计算公式为
实施的算法为 输入权重数组
输出随机采样出的8对点的序号
步骤l:给定包含了每对匹配点的权重数组W,复制这个数组为W',构造一 个空的输出集合oW/^;
义=2 * 1.4826 * (1 + 5 /(w — 8)) * mWa,}步骤2:求出数组W'中所有元素的和^ly,;
,=1
步骤3:生成一个在[(^]范围内的随机数h从数组vt;'中找出下标为_/的元素,
使得如下公式满足
步骤4:把步骤3找出来的下标y添加到输出集合ow^wf,并把vv'数组中的 第y个元素,即v^.设为0;
步骤5:对步骤2,步骤3和步骤4重复8次;
步骤6:输出0W/^数组。
所述用8点法计算出两幅图像间的基础矩阵F步骤假设8对匹配点的图像
坐标为和0',. ,/, ),首先构造一个矩阵A
爿=
^X! 乂X! X! 乃 X, ^
1、
、X8 X8 J^8 X8 义8 8 3^8 3^8 1,
然后求出一个矩阵/"/u ,2 /13 /21 /22 /23 /31 /32 /33),使得/满足如 下等式
II/H
具体步骤为对矩阵^进行SVD分解,使得^ = [//)^,则矩阵/就是矩阵 F的第9列,SVD在matlab中有现成的函数可以调用,上述求解矩阵/的过程 用以下的matlab代码来表示
[£/,£>,门= 一」); / = 7(:,9)';
求出矩阵/后,按照矩阵/构造一个3x3的矩阵F',使得矩阵F'满足
<formula>formula see original document page 11</formula>
接着对矩阵F'进行SVD分解,使得F^C/D", SVD分解后,矩阵D为3x3 的对角矩阵,D二J/"gO,W),求出矩阵尸-t/.&ag(w,0).W,矩阵F为基础矩阵。
所述计算出每对匹配点在这个基础矩阵下的Sampson Distance并组成误差 数组记录下来步骤计算出一个基础矩阵尸后,为数据集中的每对匹配点计算 在基础矩阵尸下的Sampson Distance,并组成一个数组,称为误差数组,数组中 的第Z个元素是数据集中第/对匹配点在基础矩阵F下的Sampson Distance。计 算Sampson Distance的公式为<formula>formula see original document page 12</formula>
其中,"和"'为数据集中的一对匹配点,用齐次坐标来表示,即如果一个点的坐
标表示为(x,力,那么这对点的齐次坐标表示为(x,;;,lf ,公式中w为第l幅图像上 的匹配点,"'为第2幅图像上的匹配点,A和/,分别是极线/的齐次坐标表示的第 一个和第二个元素,^和/、分别是极线/'的齐次坐标表示的第一个元素和第二个 元素。/和/'的计算公式为
可以看到,/和/'都是一个3xl的矩阵,因此可以取到这两个矩阵的第一个和第 二个元素。
所述找出iV个误差数组中中值最小的误差数组步骤 一个误差数组的中值 被定义为
附e^ _ _|"("+i)/2 mod2 = l
1(""/2 +a"/2+i)/2 "mod2 = 0
其中,。是排序好的误差数组,",是数组中的第z'个元素,"是数组中的元素个 数,计算出每个误差数组的中值,找出中值最小的误差数组。
所述根据中值最小的误差数组计算出阈值2步骤假设数组『是挑选出来 的中值最小的误差数组,阈值义的计算公式如下<formula>formula see original document page 12</formula>是数组,的中值,n是数组『中元素的个数。 实施例
如附图l所示,图中左右两幅图像分别是对同一个场景在两个不同角度进行 拍摄得到的两幅图像,其中第二幅图像是相机在拍摄第一幅图像的位置水平转过一个角度拍摄的,因此,这两幅图像上的匹配点应该在一条水平线上。
首先,用SIFT算法找出附图1中两幅图片的匹配点,并把这些匹配点组成 集合&集合中的每个元素是附图1中两幅图片的一对匹配点。在附图1中把集 合S每对匹配点用线段连起来,就得到了附图2,也就是说,在附图2中,每条 线段所连的两个点是集合S中的一对匹配点,可以看到,在附图2中,有很多 线段是不水平的,由于附图1中的两幅图像是相机通过水平转过一个角度拍摄 的,因此,两幅图像中的匹配点应该在一条水平线上,因此,附图2中那些不 水平的线段连接的匹配点都是不正确的,也就是说,集合S中含有很多不正确 的匹配点。
得到了集合S后,我们接着对这个数据集进行如下处理-
1) 首先为集合S中的每对匹配点设定权值为a。
2) 按照匹配点的权值大小对它们随机采样,每次采样的过程中,权值大的 匹配点被采样到的概率也大。每次采样8对点,采样到8对点后,用这8对点 求出两幅图像间的基础矩阵F,并求出数据集S里面所有匹配点对在这个基础矩 阵下的Sampson Distance并组成误差数组保存下来,因此每次采样的过程,我们 能得到1个误差数组。
3) 重复步骤2)W次后,我们得到W个误差数组,找出中值最小的那个误 差数组,并算出阈值/L,从这个误差数组中找出那些Sampson Distance小于义的 匹配点对,把它们的权值增加6,其中6是一个大于0的数字。
4) 重复步骤2)和步骤3) M次,然后从误差数组中选出那些权值大于一个
用户给定阈值C7的匹配点作为输出。
实验结果如附图3所示,经过本方法处理后,可以看到附图3中每条线段连 接的点对都处于一条水平线上,因此结果比附图2中的结果有很大改进。
权利要求
1.一种基于加权采样的图像特征点匹配的方法,其特征在于包括以下步骤1)给定对同一个场景在不同角度拍摄的两幅图像,用SIFT算法找到两幅图像中的匹配点,构成一个数据集,数据集中元素是两幅图像间的一对匹配点;2)为每对匹配点设定一个大于0的权值;3)按照匹配点的权重随机采样,每次采样8对点,用8点法计算出两幅图像间的基础矩阵F,计算出每对匹配点在这个基础矩阵下的Sampson Distance并组成误差数组记录下来;4)对步骤3)重复N次,得到N个误差数组,找出N个误差数组中中值最小的误差数组,根据中值最小的误差数组计算出阈值λ,对中值最小的误差数组中Sampson Distance小于阈值λ的匹配点,权重增加一个预先设定好的数值;5)对步骤3)和步骤4)重复M次,找出那些权重大于用户给定阈值σ的匹配点作为最后的匹配点。
2. 根据权利要求1所述的一种基于加权采样的图像特征点匹配的方法,其特 征在于所述用SIFT算法找到两幅图像中的匹配点,构成一个数据集步骤给定 输入的对同一个场景在不同角度拍摄的两幅图像,运用SIFT算法找出两幅图像 中的匹配点,并把找到的两幅图像中的匹配点构成一个数据集,数据集中的每 个元素就是两幅图像间的一对匹配点。
3. 根据权利要求1所述的一种基于加权采样的图像特征点匹配的方法,其特 征在于所述按照匹配点的权重随机采样步骤随机从数据集中选出一些匹配点, 使得权重大的匹配点被选中的概率大,假设数据集中包含有n对匹配点,其中 第z'对匹配点的权重为w,,那么,第/对匹配点被选中的概率A的计算公式为2^乂实施的算法为 输入权重数组输出随机采样出的8对点的序号步骤l:给定包含了每对匹配点的权重数组w,复制这个数组为W',构造一 空的输出集合oW/^;步骤2:求出数组W'中所有元素的和s = |>',.;步骤3:生成一个在[(M]范围内的随机数A:,从数组w'中找出下标为y的元 素,使得如下公式满足<formula>formula see original document page 3</formula>步骤4:把步骤3找出来的下标/添加到输出集合o啤W,并把w'数组中的 第/个元素,即力.设为0;步骤5:对步骤2,步骤3和步骤4重复8次;步骤6:输出OM/pwf数组。
4.根据权利要求1所述的一种基于加权釆样的图像特征点匹配的方法,其特 征在于所述用8点法计算出两幅图像间的基础矩阵F步骤假设8对匹配点的 图像坐标为(A,乂)和(A ,,),首先构造一个矩阵A<formula>formula see original document page 3</formula>然后求出一个矩阵/ = (/ /12 /13 /21 /22 /23 /31 /32 /33),使得/满足如 下等式<formula>formula see original document page 3</formula>具体步骤为对矩阵」进行SVD分解,使得J-M)K,则矩阵/就是矩阵K 的第9列,SVD在matlab中有现成的函数可以调用,上述求解矩阵/的过程用 以下的matlab代码来表示<formula>formula see original document page 3</formula>求出矩阵/后,按照矩阵/构造一个3x3的矩阵F',使得矩阵F'满足<formula>formula see original document page 3</formula>接着对矩阵F'进行SVD分解,使得尸="/))^, SVD分解后,矩阵D为3x3 的对角矩阵,D-^ag(r,s,0,求出矩阵i^t/iag(r,s,0).K,矩阵F为基础矩 阵。
5. 根据权利要求1所述的一种基于加权采样的图像特征点匹配的方法,其特征在于所述计算出每对匹配点在这个基础矩阵下的Sampson Distance并组成误 差数组记录下来步骤计算出一个基础矩阵F后,为数据集中的每对匹配点计 算在基础矩阵F下的Sampson Distance,并组成一个数组,称为误差数组,数组 中的第/个元素是数据集中第/对匹配点在基础矩阵F下的Sampson Distance。 计算Sampson Distance的公式为<formula>formula see original document page 4</formula>其中,"和"'为数据集中的一对匹配点,用齐次坐标来表示,即如果一个点的坐 标表示为(x,力,那么这对点的齐次坐标表示为(x,y,lf ,公式中"为第l幅图像上 的匹配点,"'为第2幅图像上的匹配点,/,和/2分别是极线/的齐次坐标表示的第 一个和第二个元素,/,和/、分别是极线/'的齐次坐标表示的第一个元素和第二个 元素。/和/'的计算公式为<formula>formula see original document page 4</formula>可以看到,/和/'都是一个3xl的矩阵,因此可以取到这两个矩阵的第一个和第二个元素。
6. 根据权利要求1所述的一种基于加权釆样的图像特征点匹配的方法,其特征在于所述找出W个误差数组中中值最小的误差数组步骤 一个误差数组的中 值被定义为<formula>formula see original document page 4</formula>其中,"是排序好的误差数组,",是数组中的第/个元素,w是数组中的元素个 数,计算出每个误差数组的中值,找出中值最小的误差数组。
7.根据权利要求1所述的一种基于加权采样的图像特征点匹配的方法,其特 征在于所述根据中值最小的误差数组计算出阈值;i步骤假设数组『是挑选出来的中值最小的误差数组,阈值义的计算公式如下A = 2 * 1.4826 * (1 + 5 /(w - 8)) *其中,是数组『的中值,w是数组『中元素的个数。
全文摘要
本发明公开了一种基于加权采样的图像特征点匹配的方法。给定一个包含有两幅图像间正确匹配点和不正确匹配点的数据集合,首先用SIFT算法找出两幅图像间的匹配点并构成一个数据集,然后为数据集中的每对匹配点设置一个大于0的权值,再按照权值大小对数据集进行多次采样,用采样到的匹配点来计算基础矩阵,然后根据计算得到的基础矩阵来判断正确的匹配点并增加它们的权重,重复上述的采样过程多次,最后选出那些权值大于一个用户给定的阈值的匹配点。使用本方法对图像的匹配点进行处理具有良好的效果,在给定的匹配点集中含有大量的不正确匹配点的时候,该方法能选出大量的正确匹配点。
文档编号G06T15/00GK101320470SQ20081006301
公开日2008年12月10日 申请日期2008年7月4日 优先权日2008年7月4日
发明者飞 吴, 庄越挺, 俊 徐, 铭 陈 申请人:浙江大学