视觉(13)基于sift立体匹配的移动机器人自定位
主要思路如下:
1.找特征:
对上一帧拍摄的左右图像分别计算SIFT特征,保存为L1.key,R1.key。
对当前帧拍摄的左右图像分别计算SIFT特征,保存为L2.key,R2.key。
2.特征匹配:
匹配L1.key,R1.key,得到文件K1.match。
匹配L2.key,R2.key,得到文件K2.match。
匹配K1.match,K2.match,得到result.txt,这个文件每一行包含了这四张图像的同一个特征点。
3.计算位姿的相对变换
现在1,2已经写好程序(一个简陋的命令行程序),一般能得到几百个匹配的特征,但是里面有一些特征匹配是错误的。
下一步可以考虑在计算3时采用RANSAC消除掉错误匹配的影响。
转换为pgm文件
找特征点
>siftWin32.exe 0<L1.pgm 1>L1.key
Finding keypoints
2473 keypoints found.
>siftWin32.exe 0<R1.pgm 1>R1.key
Finding keypoints
2945 keypoints found.
>siftWin32.exe 0<L2.pgm 1>L2.key
Finding keypoints
2712 keypoints found.
>siftWin32.exe 0<R2.pgm 1>R2.key
Finding keypoints
3536 keypoints found.
匹配并显示(1)
>match -m1 L1.key R1.key k1.match
k1:2473,k2:2945
Found 928 matches.
>match -draw k1.match L1.pgm R1.pgm
klist:928
匹配并显示(1)
>match -m1 L2.key R2.key k2.match
k1:2712,k2:3536
Found 1032 matches.
>match -draw k2.match L2.pgm R2.pgm
klist:1032
匹配(2)
>match -m2 k1.match k2.match result.txt
k1:928,k2:1032
find 573 matches
找特征点
>siftWin32.exe 0<L1.pgm 1>L1.key
Finding keypoints
2473 keypoints found.
>siftWin32.exe 0<R1.pgm 1>R1.key
Finding keypoints
2945 keypoints found.
>siftWin32.exe 0<L2.pgm 1>L2.key
Finding keypoints
2712 keypoints found.
>siftWin32.exe 0<R2.pgm 1>R2.key
Finding keypoints
3536 keypoints found.
匹配并显示(1)
>match -m1 L1.key R1.key k1.match
k1:2473,k2:2945
Found 928 matches.
>match -draw k1.match L1.pgm R1.pgm
klist:928
匹配并显示(1)
>match -m1 L2.key R2.key k2.match
k1:2712,k2:3536
Found 1032 matches.
>match -draw k2.match L2.pgm R2.pgm
klist:1032
匹配(2)
>match -m2 k1.match k2.match result.txt
k1:928,k2:1032
find 573 matches