双目匹配算法
1. 结构光技术是用来做什么的
它是一个视觉原理,是通过一个光源投射出一束结构光,打到想要测量的物体上表面,因为物体有不同的形状,会对这样的一些条纹或斑点发生不同的变形,有这样的变形之后通过算法可以计算出距离、形状、尺寸等信息从而获得物体的三维图像。
3D结构光技术既不需要用很精准的时间延时来测量又解决双目中匹配算法的复杂度和鲁棒性问题,所以具有计算简单、测量精度较高的优势;而且对于弱光环境、无明显纹理和形状变化的表面同样都可进行精密测量。
2. 双目立体视觉可以测障碍物高度吗
与普通的图像模板匹配不同的是,立体匹配是通过在两幅或多幅存在视点差异、几何畸变、灰度畸变、噪声干扰的图像对之间进行的,不存在任何标准模板进行匹配。立体匹配方法一般包含以下三个问题:(1)基元的选择,即选择适当的图像特征如点、直线、相位等作为匹配基元;(2)匹配的准则,将关于物理世界的某些固有特征表示为匹配所必须遵循的若干规则,使匹配结果能真实反映景物的本来面目;(3)算法结构,通过利用适当的数学方法设计能正确匹配所选择基元的稳定算法。 根据匹配基元的不同,立体视觉匹配算法目前主要分为三大类,即区域匹配、相位匹配和特征匹配: 基于区域灰度的匹配算法是把一幅图像(基准图)中某一点的灰度邻域作为模板,在另一幅图像(待匹配图)中搜索具有相同(或相似)灰度值分布的对应点邻域,从而实现两幅图像的匹配。
3. 双目视觉的匹配算法是不是有好几种具体是哪几种
与普通的图像模板匹配不同的是,立体匹配是通过在两幅或多幅存在视点差异、几何畸变、灰度畸变、噪声干扰的图像对之间进行的,不存在任何标准模板进行匹配。立体匹配方法一般包含以下三个问题:(1)基元的选择,即选择适当的图像特征如点、直线、相位等作为匹配基元;(2)匹配的准则,将关于物理世界的某些固有特征表示为匹配所必须遵循的若干规则,使匹配结果能真实反映景物的本来面目;(3)算法结构,通过利用适当的数学方法设计能正确匹配所选择基元的稳定算法。
根据匹配基元的不同,立体视觉匹配算法目前主要分为三大类,即区域匹配、相位匹配和特征匹配:
基于区域灰度的匹配算法是把一幅图像(基准图)中某一点的灰度邻域作为模板,在另一幅图像(待匹配图)中搜索具有相同(或相似)灰度值分布的对应点邻域,从而实现两幅图像的匹配。这类算法的性能取决于度量算法及搜索策略的选择。另外,也必须考虑匹配窗口大小、形式的选择,大窗口对于景物中存在的遮挡或图像不光滑的情况会更多的出现误匹配,小窗口则不具有足够的灰度变化信息,不同的窗口形式对匹配信息也会有不同的影响。因此应该合理选取匹配区域的大小和形式来达到较好的匹配结果。
相位匹配是近二十年发展起来的一种匹配算法,相位作为匹配基元,即认为图像对中的对应点局部相位是一致的。最常用的相位匹配算法有相位相关法和相位差——频率法,虽然该方法是一种性能稳定、具有较强的抗辐射抗透视畸变能力、简单高效、能得到稠密视差图的特征匹配方法。但是,当局部结构存在的假设不成立时,相位匹配算法因带通输出信号的幅度太低而失去有效性,也就是通常提到的相位奇点问题,在相位奇点附近,相位信息对位置和频率的变化极为敏感,因此用这些像素所确定的相位差异来衡量匹配误差将导致极不可靠的结果。此外,相位匹配算法的收敛范围与带通滤波器的波长有关,通常要考虑相位卷绕,在用相位差进行视差计算时,由于所采用的相位只是原信号某一带通条件下的相位,故视差估计只能限制在某一限定范围之内,随视差范围的增大,其精确性会有所下降。
基于特征的图像匹配方法是目前最常用的方法之一,由于它能够将对整个图像进行的各种分析转化为对图像特征(特征点、特征曲线等)的分析的优点,从而大大减小了图像处理过程的计算量,对灰度变化、图像变形、噪音污染以及景物遮挡等都有较好的适应能力。
基于特征的匹配方法是为使匹配过程满足一定的抗噪能力且减少歧义性问题而提出来的。与基于区域的匹配方法不同,基于特征的匹配方法是有选择地匹配能表示景物自身特性的特征,通过更多地强调空间景物的结构信息来解决匹配歧义性问题。这类方法将匹配的搜索范围限制在一系列稀疏的特征上。利用特征间的距离作为度量手段,具有最小距离的特征对就是最相近的特征对,也就是匹配对。特征间的距离度量有最大最小距离、欧氏距离等。
特征点匹配算法严格意义上可以分成特征提取、特征匹配和消除不良匹配点三步。特征匹配不直接依赖于灰度,具有较强的抗干扰性。该类方法首先从待匹配的图像中提取特征,用相似性度量和一些约束条件确定几何变换,最后将该变换作用于待匹配图像。匹配中常用的特征基元有角点、边缘、轮廓、直线、颜色、纹理等。同时,特征匹配算法也同样地存在着一些不足,主要表现为:
(l)特征在图像中的稀疏性决定了特征匹配只能得到稀疏的视差场,要获得密集的视差场必须通过使用插值的过程,插值过程通常较为复杂。
(2)特征的提取和定位的准确与否直接影响特征匹配结果的精确度。
(3)由于其应用场合的局限性,特征匹配往往适用于具有特征信息显着的环境中,在缺少显着主导特征环境中该方法有很大困难。
总之,特征匹配基元包含了算法编程上的灵活性以及令人满意的统计特性。算法的许多约束条件均能清楚地应用于数据结构,而数据结构的规则性使得特征匹配非常适用于硬件设计。例如,基于线段的特征匹配算法将场景模型描绘成相互联结的边缘线段,而不是区域匹配中的平面模型,因此能很好地处理一些几何畸变问题,对对比度和明显的光照变化等相对稳定。特征匹配由于不直接依赖于灰度,计算量小,比基于区域的匹配算法速度快的多。且由于边缘特征往往出现在视差不连续的区域,特征匹配较易处理立体视觉匹配中的视差不连续问题。
4. opencv三维重建深度怎么不随视场变化
四、双目匹配与视差计算
立体匹配主要是通过找出每对图像间的对应关系,根据三角测量原理,得到视差图;在获得了视差信息后,根据投影模型很容易地可以得到原始图像的深度信息和三维信息。立体匹配技术被普遍认为是立体视觉中最困难也是最关键的问题,主要是以下因素的影响:
(1) 光学失真和噪声(亮度、色调、饱和度等失衡)
(2) 平滑表面的镜面反射
(3) 投影缩减(Foreshortening)
(4) 透视失真(Perspective distortions)
(5) 低纹理(Low texture)
(6) 重复纹理(Repetitive/ambiguous patterns)
(7) 透明物体
(8) 重叠和非连续
目前立体匹配算法是计算机视觉中的一个难点和热点,算法很多,但是一般的步骤是:
A、匹配代价计算
匹配代价计算是整个立体匹配算法的基础,实际是对不同视差下进行灰度相似性测量。常见的方法有灰度差的平方SD(squared intensity differences),灰度差的绝对值AD(absolute intensity differences)等。另外,在求原始匹配代价时可以设定一个上限值,来减弱叠加过程中的误匹配的影响。以AD法求匹配代价为例,可用下式进行计算,其中T为设定的阈值。
图18
B、 匹配代价叠加
一般来说,全局算法基于原始匹配代价进行后续算法计算。而区域算法则需要通过窗口叠加来增强匹配代价的可靠性,根据原始匹配代价不同,可分为:
图19
C、 视差获取
对于区域算法来说,在完成匹配代价的叠加以后,视差的获取就很容易了,只需在一定范围内选取叠加匹配代价最优的点(SAD和SSD取最小值,NCC取最大值)作为对应匹配点,如胜者为王算法WTA(Winner-take-all)。而全局算法则直接对原始匹配代价进行处理,一般会先给出一个能量评价函数,然后通过不同的优化算法来求得能量的最小值,同时每个点的视差值也就计算出来了。
D、视差细化(亚像素级)
大多数立体匹配算法计算出来的视差都是一些离散的特定整数值,可满足一般应用的精度要求。但在一些精度要求比较高的场合,如精确的三维重构中,就需要在初始视差获取后采用一些措施对视差进行细化,如匹配代价的曲线拟合、图像滤波、图像分割等。
有关立体匹配的介绍和常见匹配算法的比较,推荐大家看看Stefano Mattoccia 的讲义 Stereo Vision: algorithms and applications,190页的ppt,讲解得非常形象详尽。
1. opencv2.1和opencv2.0在做stereo vision方面有什么区别了?
2.1版增强了Stereo Vision方面的功能:
(1) 新增了 SGBM 立体匹配算法(源自Heiko Hirschmuller的《Stereo Processing by Semi-global Matching and Mutual Information》),可以获得比 BM 算法物体轮廓更清晰的视差图(但低纹理区域容易出现横/斜纹路,在 GCstate->fullDP 选项使能时可消减这种异常纹路,但对应区域视差变为0,且运行速度会有所下降),速度比 BM 稍慢, 352*288的帧处理速度大约是 5 帧/秒;
(2) 视差效果:BM < SGBM < GC;处理速度:BM > SGBM > GC ;
(3) BM 算法比2.0版性能有所提升,其状态参数新增了对左右视图感兴趣区域 ROI 的支持(roi1 和 roi2,由stereoRectify函数产生);
(4) BM 算法和 GC 算法的核心代码改动不大,主要是面向多线程运算方面的(由 OpenMP 转向 Intel TBB);
(5) cvFindStereoCorrespondenceBM 函数的disparity参数的数据格式新增了 CV_32F 的支持,这种格式的数据给出实际视差,而 2.0 版只支持 CV_16S,需要除以 16.0 才能得到实际的视差数值。
2. 用于立体匹配的图像可以是彩色的吗?
在OpenCV2.1中,BM和GC算法只能对8位灰度图像计算视差,SGBM算法则可以处理24位(8bits*3)彩色图像。所以在读入图像时,应该根据采用的算法来处理图像:
int color_mode = alg == STEREO_SGBM ? 1 : 0;
//////////////////////////////////////////////////////////////////////////
// 载入图像
cvGrabFrame( lfCam );
cvGrabFrame( riCam );
frame1 = cvRetrieveFrame( lfCam );
frame2 = cvRetrieveFrame( riCam );
if(frame1.empty()) break;
resize(frame1, img1, img_size, 0, 0);
resize(frame2, img2, img_size, 0, 0);
// 选择彩色或灰度格式作为双目匹配的处理图像
if (!color_mode && cn>1)
{
cvtColor(img1, img1gray, CV_BGR2GRAY);
cvtColor(img2, img2gray, CV_BGR2GRAY);
img1p = img1gray;
img2p = img2gray;
}
else
{
img1p = img1;
img2p = img2;
}
3. 怎样获取与原图像有效像素区域相同的视差图?
在OpenCV2.0及以前的版本中,所获取的视差图总是在左侧和右侧有明显的黑色区域,这些区域没有有效的视差数据。视差图有效像素区域与视差窗口(ndisp,一般取正值且能被16整除)和最小视差值(mindisp,一般取0或负值)相关,视差窗口越大,视差图左侧的黑色区域越大,最小视差值越小,视差图右侧的黑色区域越大。其原因是为了保证参考图像(一般是左视图)的像素点能在目标图像(右视图)中按照设定的视差匹配窗口匹配对应点,OpenCV 只从参考图像的第 (ndisp - 1 + mindisp) 列开始向右计算视差,第 0 列到第 (ndisp - 1 + mindisp) 列的区域视差统一设置为 (mindisp - 1) *16;视差计算到第 width + mindisp 列时停止,余下的右侧区域视差值也统一设置为 (mindisp - 1) *16。
00177 static const int DISPARITY_SHIFT = 4;
…
00411 int ndisp = state->numberOfDisparities;
00412 int mindisp = state->minDisparity;
00413 int lofs = MAX(ndisp - 1 + mindisp, 0);
00414 int rofs = -MIN(ndisp - 1 + mindisp, 0);
00415 int width = left->cols, height = left->rows;
00416 int width1 = width - rofs - ndisp + 1;
…
00420 short FILTERED = (short)((mindisp - 1) << DISPARITY_SHIFT);
…
00466 // initialize the left and right borders of the disparity map
00467 for( y = 0; y < height; y++ )
00468 {
00469 for( x = 0; x < lofs; x++ )
00470 dptr[y*dstep + x] = FILTERED;
00471 for( x = lofs + width1; x < width; x++ )
00472 dptr[y*dstep + x] = FILTERED;
00473 }
00474 dptr += lofs;
00475
00476 for( x = 0; x < width1; x++, dptr++ )
…
这样的设置很明显是不符合实际应用的需求的,它相当于把摄像头的视场范围缩窄了。因此,OpenCV2.1 做了明显的改进,不再要求左右视图和视差图的大小(size)一致,允许对视差图进行左右边界延拓,这样,虽然计算视差时还是按上面的代码思路来处理左右边界,但是视差图的边界得到延拓后,有效视差的范围就能够与对应视图完全对应。具体的实现代码范例如下:
//////////////////////////////////////////////////////////////////////////
// 对左右视图的左边进行边界延拓,以获取与原始视图相同大小的有效视差区域
MakeBorder(img1r, img1b, 0, 0, m_nMaxDisp, 0, IPL_BORDER_REPLICATE);
MakeBorder(img2r, img2b, 0, 0, m_nMaxDisp, 0, IPL_BORDER_REPLICATE);
//////////////////////////////////////////////////////////////////////////
// 计算视差
if( alg == STEREO_BM )
{
bm(img1b, img2b, dispb);
// 截取与原始画面对应的视差区域(舍去加宽的部分)
displf = dispb.colRange(m_nMaxDisp, img1b.cols);
}
else if(alg == STEREO_SGBM)
{
sgbm(img1b, img2b, dispb);
displf = dispb.colRange(m_nMaxDisp, img1b.cols);
}
4. cvFindStereoCorrespondenceBM的输出结果好像不是以像素点为单位的视差?
“@scyscyao:在OpenCV2.0中,BM函数得出的结果是以16位符号数的形式的存储的,出于精度需要,所有的视差在输出时都扩大了16倍(2^4)。其具体代码表示如下:
dptr[y*dstep] = (short)(((ndisp - mind - 1 + mindisp)*256 + (d != 0 ? (p-n)*128/d : 0) + 15) >> 4);
可以看到,原始视差在左移8位(256)并且加上一个修正值之后又右移了4位,最终的结果就是左移4位。
因此,在实际求距离时,cvReprojectTo3D出来的X/W,Y/W,Z/W都要乘以16 (也就是W除以16),才能得到正确的三维坐标信息。”
在OpenCV2.1中,BM算法可以用 CV_16S 或者 CV_32F 的方式输出视差数据,使用32位float格式可以得到真实的视差值,而CV_16S 格式得到的视差矩阵则需要 除以16 才能得到正确的视差。另外,OpenCV2.1另外两种立体匹配算法 SGBM 和 GC 只支持 CV_16S 格式的 disparity 矩阵。
5. 如何设置BM、SGBM和GC算法的状态参数?
(1)StereoBMState
// 预处理滤波参数
preFilterType:预处理滤波器的类型,主要是用于降低亮度失真(photometric distortions)、消除噪声和增强纹理等, 有两种可选类型:CV_STEREO_BM_NORMALIZED_RESPONSE(归一化响应) 或者 CV_STEREO_BM_XSOBEL(水平方向Sobel算子,默认类型), 该参数为 int 型;
preFilterSize:预处理滤波器窗口大小,容许范围是[5,255],一般应该在 5x5..21x21 之间,参数必须为奇数值, int 型
preFilterCap:预处理滤波器的截断值,预处理的输出值仅保留[-preFilterCap, preFilterCap]范围内的值,参数范围:1 - 31(文档中是31,但代码中是 63), int
// SAD 参数
SADWindowSize:SAD窗口大小,容许范围是[5,255],一般应该在 5x5 至 21x21 之间,参数必须是奇数,int 型
minDisparity:最小视差,默认值为 0, 可以是负值,int 型
numberOfDisparities:视差窗口,即最大视差值与最小视差值之差, 窗口大小必须是 16 的整数倍,int 型
// 后处理参数
textureThreshold:低纹理区域的判断阈值。如果当前SAD窗口内所有邻居像素点的x导数绝对值之和小于指定阈值,则该窗口对应的像素点的视差值为 0(That is, if the sum of absolute values of x-derivatives computed over SADWindowSize by SADWindowSize pixel neighborhood is smaller than the parameter, no disparity is computed at the pixel),该参数不能为负值,int 型
uniquenessRatio:视差唯一性百分比, 视差窗口范围内最低代价是次低代价的(1 + uniquenessRatio/100)倍时,最低代价对应的视差值才是该像素点的视差,否则该像素点的视差为 0 (the minimum margin in percents between the best (minimum) cost function value and the second best value to accept the computed disparity, that is, accept the computed disparity d^ only if SAD(d) >= SAD(d^) x (1 + uniquenessRatio/100.) for any d != d*+/-1 within the search range ),该参数不能为负值,一般5-15左右的值比较合适,int 型
speckleWindowSize:检查视差连通区域变化度的窗口大小, 值为 0 时取消 speckle 检查,int 型
speckleRange:视差变化阈值,当窗口内视差变化大于阈值时,该窗口内的视差清零,int 型
// OpenCV2.1 新增的状态参数
roi1, roi2:左右视图的有效像素区域,一般由双目校正阶段的 cvStereoRectify 函数传递,也可以自行设定。一旦在状态参数中设定了 roi1 和 roi2,OpenCV 会通过cvGetValidDisparityROI 函数计算出视差图的有效区域,在有效区域外的视差值将被清零。
disp12MaxDiff:左视差图(直接计算得出)和右视差图(通过cvValidateDisparity计算得出)之间的最大容许差异。超过该阈值的视差值将被清零。该参数默认为 -1,即不执行左右视差检查。int 型。注意在程序调试阶段最好保持该值为 -1,以便查看不同视差窗口生成的视差效果。具体请参见《使用OpenGL动态显示双目视觉三维重构效果示例》一文中的讨论。
在上述参数中,对视差生成效果影响较大的主要参数是 SADWindowSize、numberOfDisparities 和 uniquenessRatio 三个,一般只需对这三个参数进行调整,其余参数按默认设置即可。
在OpenCV2.1中,BM算法有C和C++ 两种实现模块。
(2)StereoSGBMState
SGBM算法的状态参数大部分与BM算法的一致,下面只解释不同的部分:
SADWindowSize:SAD窗口大小,容许范围是[1,11],一般应该在 3x3 至 11x11 之间,参数必须是奇数,int 型
P1, P2:控制视差变化平滑性的参数。P1、P2的值越大,视差越平滑。P1是相邻像素点视差增/减 1 时的惩罚系数;P2是相邻像素点视差变化值大于1时的惩罚系数。P2必须大于P1。OpenCV2.1提供的例程 stereo_match.cpp 给出了 P1 和 P2 比较合适的数值。
fullDP:布尔值,当设置为 TRUE 时,运行双通道动态编程算法(full-scale 2-pass dynamic programming algorithm),会占用O(W*H*numDisparities)个字节,对于高分辨率图像将占用较大的内存空间。一般设置为 FALSE。
注意OpenCV2.1的SGBM算法是用C++ 语言编写的,没有C实现模块。与H. Hirschmuller提出的原算法相比,主要有如下变化:
算法默认运行单通道DP算法,只用了5个方向,而fullDP使能时则使用8个方向(可能需要占用大量内存)。
算法在计算匹配代价函数时,采用块匹配方法而非像素匹配(不过SADWindowSize=1时就等于像素匹配了)。
匹配代价的计算采用BT算法("Depth Discontinuities by Pixel-to-Pixel Stereo" by S. Birchfield and C. Tomasi),并没有实现基于互熵信息的匹配代价计算。
增加了一些BM算法中的预处理和后处理程序。
5. matlab双目测距中怎样把摄像机标定后的内外参数和视差图结合起来计算深度距离
你用的是双面立体相机配置吗?如果是,你需要标定左右两个相机的内部参数,即焦距,像素物理尺寸,还有两个相机间的三维平移,旋转量。如果你不做三维重建的话,就不需要得到外部参数。得到相机内部参数,就可以矫正左右两幅图像对,然后使用立体匹配算法得到目标的视差图像,然后用你得到的,fc,cc参数,用三角法则计算出目标点到相机平面的距离。三角法则:z=f*b/d。f是焦距,b是两相机间的横向距离,d是立体匹配得到的视差值,即目标像素点在左右两相机平面x方向的坐标差值。
6. 双目立体匹配是什么
就是机器人视觉,用机器实现人眼的对于三维物体图像捕捉能力
7. 人脸识别系统的技术原理
人脸识别技术包含三个部分:
(1)人脸检测
面貌检测是指在动态的场景与复杂的背景中判断是否存在面像,并分离出这种面像。一般有下列几种方法:
①参考模板法
首先设计一个或数个标准人脸的模板,然后计算测试采集的样品与标准模板之间的匹配程度,并通过阈值来判断是否存在人脸;
②人脸规则法
由于人脸具有一定的结构分布特征,所谓人脸规则的方法即提取这些特征生成相应的规则以判断测试样品是否包含人脸;
③样品学习法
这种方法即采用模式识别中人工神经网络的方法,即通过对面像样品集和非面像样品集的学习产生分类器;
④肤色模型法
这种方法是依据面貌肤色在色彩空间中分布相对集中的规律来进行检测。
⑤特征子脸法
这种方法是将所有面像集合视为一个面像子空间,并基于检测样品与其在子孔间的投影之间的距离判断是否存在面像。
值得提出的是,上述5种方法在实际检测系统中也可综合采用。
(2)人脸跟踪
面貌跟踪是指对被检测到的面貌进行动态目标跟踪。具体采用基于模型的方法或基于运动与模型相结合的方法。此外,利用肤色模型跟踪也不失为一种简单而有效的手段。
(3)人脸比对
面貌比对是对被检测到的面貌像进行身份确认或在面像库中进行目标搜索。这实际上就是说,将采样到的面像与库存的面像依次进行比对,并找出最佳的匹配对象。所以,面像的描述决定了面像识别的具体方法与性能。目前主要采用特征向量与面纹模板两种描述方法:
①特征向量法
该方法是先确定眼虹膜、鼻翼、嘴角等面像五官轮廓的大小、位置、距离等属性,然后再计算出它们的几何特征量,而这些特征量形成一描述该面像的特征向量。
②面纹模板法
该方法是在库中存贮若干标准面像模板或面像器官模板,在进行比对时,将采样面像所有象素与库中所有模板采用归一化相关量度量进行匹配。此外,还有采用模式识别的自相关网络或特征与模板相结合的方法。
人脸识别技术的核心实际为“局部人体特征分析”和“图形/神经识别算法。”这种算法是利用人体面部各器官及特征部位的方法。如对应几何关系多数据形成识别参数与数据库中所有的原始参数进行比较、判断与确认。一般要求判断时间低于1秒。 一般分三步:
(1)首先建立人脸的面像档案。即用摄像机采集单位人员的人脸的面像文件或取他们的照片形成面像文件,并将这些面像文件生成面纹(Faceprint)编码贮存起来。
(2)获取当前的人体面像。即用摄像机捕捉的当前出入人员的面像,或取照片输入,并将当前的面像文件生成面纹编码。
(3)用当前的面纹编码与档案库存的比对。即将当前的面像的面纹编码与档案库存中的面纹编码进行检索比对。上述的“面纹编码”方式是根据人脸脸部的本质特征和开头来工作的。这种面纹编码可以抵抗光线、皮肤色调、面部毛发、发型、眼镜、表情和姿态的变化,具有强大的可靠性,从而使它可以从百万人中精确地辩认出某个人。人脸的识别过程,利用普通的图像处理设备就能自动、连续、实时地完成。
8. 视觉检测的视觉检测的优势
1、非接触测量,对于观测者与被观测者都不会产生任何损伤,从而提高系统的可靠性。
2、具有较宽的光谱响应范围,例如使用人眼看不见的红外测量,扩展了人眼的视觉范围。
3、长时间稳定工作,人类难以长时间对同一对象进行观察,而机器视觉则可以长时间地作测量、分析和识别任务。
4、利用了机器视觉解决方案,可以节省大量劳动力资源,为公司带来可观利益。柯能自动化科技有限公司(KEN),是一家专注于机器视觉、工业自动化检测、运动控制与视觉一体化领域,全力打造高端视觉设备。产品应用 柯能自动化提供的视觉设备,广泛运用于多个行业: 电子行业:半导体元件表面缺陷特征监测、字符印刷残缺检测、芯片引脚封装完整检测、元件破损检测、端子引脚尺寸检测、编带机元件极性识别、键盘字符检测等; 制造行业:零件外形检测、表面划痕检测、漏加工检测、表面毛刺检测等; 印刷行业:印刷质量检测、印刷字符检测、条码识别、色差检测等; 汽车电子:面板印刷质量检测、字符检测、SPI检测系统、色差检测等; 医疗行业:药瓶封装缺陷监测、药品封装缺漏检测、胶囊封装质量检测等; 食品行业: 外观封装检测、食品封装缺漏检测、外观和内部质量检测、颜色质量检测、食品包装定位等; 五金行业:微小金属正反面判别、零件表面检测、零件尺寸检测等
9. 通过双目摄像头,通过对运动物体进行拍照的方式,能否精确计算出物体的三维空间速度,以及自旋角速度
第一、物体的三维空间速度需要根据物体在空间的三维坐标来计算,通过双目视觉的方式来获取被测对象的三维坐标进行计算,原理上是完全行得通的。精确度跟以下几点有关:
1、图像获取帧率:每秒钟获取的图像帧数越多,对被测物的位置描述就越精确;
2、运动速度较高,要想清晰的抓拍到,对相机的曝光方式和曝光时间要求较高,需要用比较好的硬件设备;
3、最终三维坐标的测量精度和双目系统的标定精度、立体匹配算法、相机分辨率、基线距离等都有关系。
第二、自转角速度测量。这个比较难,因为物体在空间中的转动是随机的,采用双目视觉没有办法把球体表面的所有特征点都获取到。也就是说没有办法获取到同一个点的序列三维坐标。
综上,把被测对象简化为一个点来计算其序列三维空间坐标只要硬件配置的好,还是可以解决的。但是检测被测对象自身的信息还是比较难得。
10. 双目立体匹配用什么算法好实现
垮南