‘壹’ 哪种立体匹配算法不是全局匹配算法
:基于局部约束的方法:有区域匹配(主要是基于窗口)、特征匹配(基于特征点,如SIFT)、相位匹配(主要用滤波来做)。 基于全局约束的方法:主要有动态规划算法、图割算法、人工智能算法、协同算法、置信度传播算法、非线性扩散算法等
‘贰’ 有没有人用动态规划的方法来求得两幅图像的立体匹配视差图
这个是主要的代码。
它可以分为几下几个部分:
(1)这里DP算法只在每一行中进行搜索,那么应该记录下两图的每一对应行的 cost function的值,程序用的是SAD方法。
(2)开始从最后一行开始进行搜索,这里因为好像要将当前元素与前后三个元素进行比较光滑度的比较,所以构造了这么一个矩阵
(3)然后说是把什么先记录下来,然后找到这条最优路线
‘叁’ VS图像立体匹配调试错误,不太会改,求大师指出修改的地方
可能是有的dll引用了工程,而有的引用了文件。比如你的主工程是A,另外有两个工程B和C,A和B都引用了C,如果A和B引用C的方式不一致就会出现这种情况。我经常遇到,解决办法就是统一引用方式,要么都引用工程,要么都直接引用dll文件。。 我也遇到这样的问题,听别人说是超时,说时进入了死循环,改变算法就可以解决,求采纳。
‘肆’ matlab标定参数在opencv中的立体匹配程序怎么写
VC
可以调用matlab工具箱,
只需要将数据接口修改一下,最简单的方式是matlab程序写成动态连接库,然后用VC直接调用DLL.
opencv只是算法库,不是编译环境,不存在opencv调用matlab的说法,
opencv是图像处理库,和做界面没关系.
‘伍’ 下列哪种立体匹配算法不是全局匹配算法
Z 因为没这个选项
‘陆’ 关于立体视觉SGBM算法的实现,多方向DP部分求助的搜索推荐
最近一直在学习SGBM算法,作为一种全局匹配算法,立体匹配的效果明显好于局部匹配算法,但是同时复杂度上也要远远大于局部匹配算法。算法主要是参考Stereo Processing by Semiglobal Matching and Mutual Information,里面有讲完整的算法实现。OpenCV中实际上是提供了SGBM类进行SGBM算法的实现。
#include <highgui.h>
#include <cv.h>
#include <cxcore.h>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
IplImage * img1 = cvLoadImage("left.png",0);
IplImage * img2 = cvLoadImage("right.png",0);
cv::StereoSGBM sgbm;
int SADWindowSize = 9;
sgbm.preFilterCap = 63;
sgbm.SADWindowSize = SADWindowSize > 0 ? SADWindowSize : 3;
int cn = img1->nChannels;
int numberOfDisparities=64;
sgbm.P1 = 8*cn*sgbm.SADWindowSize*sgbm.SADWindowSize;
sgbm.P2 = 32*cn*sgbm.SADWindowSize*sgbm.SADWindowSize;
sgbm.minDisparity = 0;
sgbm.numberOfDisparities = numberOfDisparities;
sgbm.uniquenessRatio = 10;
sgbm.speckleWindowSize = 100;
sgbm.speckleRange = 32;
sgbm.disp12MaxDiff = 1;
Mat disp, disp8;
int64 t = getTickCount();
sgbm((Mat)img1, (Mat)img2, disp);
t = getTickCount() - t;
cout<<"Time elapsed:"<<t*1000/getTickFrequency()<<endl;
disp.convertTo(disp8, CV_8U, 255/(numberOfDisparities*16.));
namedWindow("left", 1);
cvShowImage("left", img1);
namedWindow("right", 1);
cvShowImage("right", img2);
namedWindow("disparity", 1);
imshow("disparity", disp8);
waitKey();
imwrite("sgbm_disparity.png", disp8);
cvDestroyAllWindows();
return 0;
}
‘柒’ opencv三维重建深度怎么不随视场变化
视场变化主要是通过找出每对图像间的对应关系,根据三角测量原理,得到视差图;
在获得了视差信息后,根据投影模型很容易地可以得到原始图像的深度信息和三维信息。立体匹配技术被普遍认为是立体视觉中最困难也是最关键的问题,主要是以下因素的影响:
(1)光学失真和噪声(亮度、色调、饱和度等失衡)
(2)平滑表面的镜面反射
(3)投影缩减(Foreshortening)
(4)透视失真(Perspective distortions)
(5)低纹理(Low texture)
(6)重复纹理(Repetitive/ambiguous patterns)
(7)透明物体
(8)重叠和非连续
‘捌’ 怎么使用动态规划算法对图像进行立体匹配呢具体做法
这个是主要的代码。 它可以分为几下几个部分: (1)这里DP算法只在每一行中进行搜索,那么应该记录下两图的每一对应行的 cost function的值,程序用的是SAD方法。 (2)开始从最后一行开始进行搜索,这里因为好像要将当前元素与前后三个元素进。
‘玖’ 求教,在middlebury上的立体匹配的源代码该如何使用
我之前是用vs2003运行的,需要该点程序,很容易就修改通过了好像,不过作者很聪明,是用cmd命令来运行程序的,不需要要基于vs来运行,所以很方便实用。 不过说实话,即使你运行通过了,那个程序我感觉只能看看,作用貌似不是很明显,很多算法已经太traditional了。你说你没有学过编程,那么从代码来理解算法貌似有点难,所以建议你把程序跑通后,对立体匹配的框架能有所理解,就行了
‘拾’ opencv 有没有实时的立体匹配算法
opencv里面是没有那种算法的,它只是提供一些常用的计算函数。具体的算法,由于你的需求比较特殊,相信应该没有现成的瑕疵检测算法,好在你的需求难度应该不大,通过常用的图像识别算法,比如纹理算法(Gabor算法)、SURF算法就可以找到白纸上瑕疵,这些瑕疵都是相当于一张白纸的特征点嘛!基本思想就是借用图像识别、匹配过程的思想——找图像上的特征点。白纸一般是提取不出特征点的,要是提取出来了,那就说明白纸上有东西(洞、褶皱或者异物)。