使用FLIR机器视觉相机构建自己的立体视觉

收藏
检测样品: 音/视频产品
检测项目: 立体视觉
浏览次数: 32
发布时间: 2024-03-29
关联设备: 1种 查看全部
获取电话
留言咨询
方案下载

天津瑞利光电科技有限公司

银牌1年

解决方案总数: 55 方案总浏览次数:
方案详情
本技术应用说明的目的是提供一个示例,说明如何使用两台FLIR机器视觉切刀大小的外壳相机,通过PC使用OpenCV算法和Spinnaker API执行处理,构建自己的立体视觉系统。

方案详情

使用FLIR机器视觉相机构建自己的立体视觉适用产品所有FLIR机器视觉相机应用说明本技术应用说明的目的是提供一个示例,说明如何使用两台FLIR机器视觉切刀大小的外壳相机,通过PC使用OpenCV算法和Spinnaker API执行处理,构建自己的立体视觉系统。概述立体视觉是一种成像技术,可以在非结构化和动态环境中提供全视场3D测量。数码相机图像中的每个像素都收集沿着3D射线到达相机的光。如果世界上的一个特征可以被识别为图像中的像素位置,我们就知道这个特征位于与该像素相关的3D射线上。如果我们使用多个相机,我们可以获得多条光线。这些射线的交点是特征的三维位置。在这个例子中,两个摄像机固定在适当的位置,并拍摄已知校准目标的图像。从这些图像中,透镜失真被去除并且图像被校正。对于密集立体算法,通常必须将相机的图像重新映射到适合针孔相机模型的图像。这个重新映射的图像被称为校正图像。然后,算法在图像中找到像素或特征的匹配以确定视差。视差是指从左校正图像中找到的特征或像素块到右的像素距离。较大的视差意味着特征或对象更靠近相机(成像平面),而较小的视差则意味着对象离相机更远。立体视觉使用视差来计算与物体的距离。 PC配置• Windows 7 64x• 华硕Z97-PRO主板• 英特尔酷睿i7-4790 CPU@3.60Hz• 8 GB内存硬件设置在本应用说明中,两台摄像机安装在THOLABS支架、燕尾导轨和SLIK三脚架上,以确保它们水平。摄像机需要相对彼此牢固地固定到位。微小的变化,尤其是在垂直轴上的变化,会使算法用于查找匹配项的扫描线错位。这种错位可能会导致视差图较差。摄像头:2 x BFS-U3-50S5C-C(固件版本1803.0.167.0)镜头:富士农DF6HA-1B 6毫米透镜安装设备:• THORLABS*AB90和AB90A/M安装在ACC-01-0011三脚架适配器上*所用安装夹具的组合:XT34C2–3 xXT34D2-30–3 x*XT34DP-500导轨(切割至200 mm)*使用ACC-01-0003适配器将摄像头安装在XT34D2-30上• SLIK 450G三脚架• 使用的基线:7.88厘米(摄像机传感器中心之间的距离)软件要求Visual Studio 2015Spinnaker SDK 1.21.0.61或更高版本OpenCV 3.4(3.4.3 minimum)1.下载Win pack,然后将OpenCV安装到“C:\OpenCV\build\x64\vc15”中2.环境变量• 添加/设置“OPENCV_DIR”为“C:\OPENCV\build\x64\vc15”• 将“%OPENCV_DIR%\bin”添加到路径3.在Visual Studio中配置OpenCV• 按照OpenCV入门中“在Visual Studio中配置OpenCV”部分中的步骤进行操作校准模式在本技术应用说明中,打印出了用于立体校准的棋盘图案。OpenCV将每个角的位置插值到子像素级别。然后,它使用这些位置来计算相机相对于彼此的内在失真、外在旋转和平移的矩阵。理想情况下,这种模式应该保持不变。要最大化校准的视场覆盖范围,请将图案移近或使用更大的图案。所用方格图案的正方形尺寸:3.0厘米x 3.0厘米。镜头调整为了使立体视觉发挥作用,图像需要有足够的细节来在校正后的图像中找到相应的像素。在应用程序所需的大部分距离范围内,镜头都应处于对焦状态。关闭光圈可以增加景深,从而使距离范围更大,但这将减少到达传感器的光量。为了在校准时获得更好效果,请在SpinView中将“自动曝光”设置为“关闭”,然后进行更改,使棋盘图案清晰,白色方块不会过度曝光。C++控制台应用程序生成校准文件后,可以在SpinView中将增益和曝光设置为自动。在配置首选曝光设置后,拧紧镜头上的调节旋钮以保持焦点和光圈固定。如何显示实时视差图1.下载opencv_steo_vision.zip。opencv_steo_vision文件夹应与其他Spinnaker示例放在相同的文件夹位置。这是Spinnaker SDK的src文件夹(源文件夹的默认位置是C:\Program Files\Point Grey Research\Spinnaker\src)。2.确保您能够成功构建Stereo_Acquisition_vs2015.sln文件,该文件位于opencv_steo_vision \示例代码\src\Sstereo_Acquisition下。3.运行opencv_steo_vision.zip文件中提供的Stereo_Acquisition_v140.exe。4.成功构建Stereo_Acquisition_vs2015.sln后,打开命令提示符并导航到opencv_steo_vision \示例代码\bin64\vs2015文件夹。5.输入命令:Stereo_Acquisition_v140.exe–帮助查看有关如何运行此程序的说明。校准收集图像模式此模式用于捕获校准相机所需的图像。在该程序中,每个相机都是软件触发的,以在用户输入时捕获6个图像(总共12个图像)。这些图像稍后用于校准。您可以使用以下命令设置图像的存储路径:为了使OpenCV算法在这些图像中找到像素或特征的匹配,在ROI(感兴趣区域)内的不同位置捕获目标的图像是很重要的。注:这些是在运行calibrate_gather_images时直接从两台相机中的一台相机拍摄的6张未剪切、未处理的图像的示例,将由calibrate_calculate中的opencv算法使用。校准计算模式该模式是对先前捕获的图像执行计算并生成校准数据。当执行“calibrate_calculate”模式时,会生成三个.yml(校准)文件——2个内部文件和1个外部文件。这些校准文件的路径必须与保存校准图像的位置相同。外部文件(约3 KB)包含两台相机在OpenCV中使用立体视觉所需的矩阵和物理参数。实时视差模式此模式用于实时创建和显示视差图。调用DepthMapping.cpp中的DepthMapping()函数(位于C:\Program Files\Point Grey Research\Spinnaker\src\opencv_steo_vision\Example Code\src\stereo_Acquisition中),加载从calibrate_calculation创建的外部文件,并显示视差图,如下所示:用于校准的物理特性除了为了根据视差计算深度而捕获的图像之外,还需要一些物理特性。Stereo_Acquisition_vs2015.sln中使用的数据集为:图案尺寸(方格大小):3厘米花纹宽度(棋盘纵向内侧方形边数):8图案高度(棋盘内方形边的高度数):6基线(摄像头传感器中心之间的距离):7.88厘米传感器宽度和高度。这些可以使用传感器分辨率和像素大小来找到。例如,BFS-U3-50S5C-C的分辨率为2448 x 2048,像素大小为3.45 um。传感器宽度=0.00000345*2448=0.0084456 m=0.84456 cm设置自己的立体视觉系统时,需要根据相机设置更改这些属性的值。例如,本例中使用的基线为7.88 cm。但是,如果您的应用程序需要不同的基线,您可以在执行Stereo_Acquisition_v140.exe mode=calibrate_calculate时更改此值,如上所示。注:示例使用厘米表示所有物理长度。显示视差图像DepthMapping.cpp文件中的OpenCV StereoBM和StereoSGBM算法用于提供16位的视差。最后4位是分数位,因此视差精确到1/16像素。要获得实际的浮点值,您需要将输出(short int)分为小数部分和整数部分,转换为浮点值,最后将它们相加。分辨率性能高分辨率不能很好地与立体块匹配算法配合使用,因为它们显著增加了处理时间,并且使得实时视差计算不切实际。高分辨率还需要更精确的校准。在1000 x 700的情况下,减少¼个像素并不太重要。然而,在2400 x 2000的情况下,校准的不准确度会产生更大的差异,因为它几乎偏离了一个像素。理论上,更高的分辨率可以提供更高精度的视差图,但在实践中很难实现。Binning可用于获得较小的分辨率,而无需修改传感器尺寸计算。校准顺序使用Stereo_Acquisition_vs2015.sln完成的校准序列:1. 首先进行内部校准,这涉及到每个相机的单独校准。它也被称为相机矩阵。固有参数是相机特有的,它们包括焦距和光学中心等信息。使用Calib3d.cpp中的findCheckerboardCorners()和cornerSubPix()进行内部校准。2. 然后进行stereoCalibration(),它使用内部校准并提供相对的外部信息。  优化默认情况下,校准设置在Acquisition_vs2015.sln(C:\Program Files\Point Grey Research\Spinnaker\src\opencv_steo_vision\Example Code\src\stereo_Acquisition)中进行硬编码,以在1000 x 800左右的分辨率下工作良好。立体掩模的大小和视差图中的视差是最大的因素。使用滑块在“real_time_disparity”模式下执行Stereo_Acquisition_v140.exe时,可以更改这些设置。改变立体掩模大小会改变图像之间匹配的像素块的大小,视差值的范围就是视差。距离较近的物体需要大范围的差异。结果2个BFS-U3-50S5C2 x 6毫米镜头(富士农DF6HA-1B)基线7.88 cm方格图案的正方形尺寸为3.0厘米计算的传感器宽度和高度:0.84456厘米x 0.70656厘米这种设置可以检测1.2米外精确到2毫米左右的变化。注意:示例中提供的默认值假设您使用的是此处记录的确切设置。
确定

还剩10页未读,是否继续阅读?

不看了,直接下载
继续免费阅读全文

该文件无法预览

请直接下载查看

产品配置单

天津瑞利光电科技有限公司为您提供《使用FLIR机器视觉相机构建自己的立体视觉》,该方案主要用于音/视频产品中立体视觉检测,参考标准--,《使用FLIR机器视觉相机构建自己的立体视觉》用到的仪器有美国FLIR相机BFLY-PGE-23S6M-C