2015-4-21 - 誰動了我的相機(2015-4-22 更新)

最近纠结了很久这个双目视觉的问题,

因为之前一直能够不错的生成点云的设备突然抽了,非常的诡异、、、

花了很久很久研究这个问题,调了调stereoBM的参数,但结果总是不对。

于是,直觉告诉我可能是有某些人动过相机位置了,

然后就有了接下来的故事……

Screenshot from Matlab
Screenshot from Matlab

如图,这两个例子都是rectfied images,这是用matlab的detectSURFFeatures函数找的feature,然后再extract画到图上的、

总感觉这个对极线并不是很准确,理论上来说应该都是直线才对、、、

所以说,我得重新跳calibration dance了,好悲伤。

(这样的图用stereoBM/LibELAS做出来的视差图不吃翔就怪了……

顺便给这个很简单的matlab程序po上来,算是测试下SyntaxHighlighter

%Reference: MathWorks Documentation for Computer Vision Toolbox
[fileL,pathL]=uigetfile('*.*','Select Left Image');
[fileR,pathR]=uigetfile('*.*','Select Right Image');

I1=imread([pathL, fileL]);
I2=imread([pathR, fileR]);

%comment the following two lines for grayscale images
I1=rgb2gray(I1);
I2=rgb2gray(I2);

figure;
imshowpair(I1,I2, 'ColorChannels','red-cyan');
title('I1 (Red); I2 (Cyan)');

blobs1 = detectSURFFeatures(I1, 'MetricThreshold', 2000);
blobs2 = detectSURFFeatures(I2, 'MetricThreshold', 2000);

[features1, validBlobs1] = extractFeatures(I1, blobs1);
[features2, validBlobs2] = extractFeatures(I2, blobs2);

indexPairs = matchFeatures(features1, features2, 'Metric', 'SAD', ...
    'MatchThreshold', 5);

matchedPoints1 = validBlobs1(indexPairs(:,1),:);
matchedPoints2 = validBlobs2(indexPairs(:,2),:);

figure;
showMatchedFeatures(I1, I2, matchedPoints1, matchedPoints2);
legend('Putatively matched points in I1', 'Putatively matched points in I2');

 

/* 题外话:准备以后多多在博客上发一些工作记录、、、*/


所以说,今天用之前的存下来的rosbag里的数据做了点比对,

左图是以前的相机的epipolar line,右边是现在的,差距太明显了。

Stereo Rig Rectified Images Comparison
Stereo Rig Rectified Images Comparison

 

  • 不!喜!欢!蓝底的代码!壮哉我大Monokai

    • .if

      Solarized不服,来战

      • 以半个美工从根本上否定你2333

        • .if

          并不!
          Solarized好看!

          • 等你回来撕逼。。