双目立体视觉机器视觉的一种重要形式,基于视差原理并由多幅图像获取物体三维几何信息,一般由双摄像机从不同角度同时获得被测物的两幅数字图像,或由单摄像机在不同时刻从不同角度获得被测物的两幅数字图像,并基于视差原理恢复物体的三维几何信息,重建物体三维轮廓及位置。双目立体视觉在机器视觉领域有着广泛的应用前景。
双目立体视觉融合两只眼睛获得的图像并观察它们之间的差别,使我们可以获得明显的深度感,建立特征间的对应关系,将同一空间物理点在不同图像中的映像点对应起来,这个差别,我们称作视差(Disparity)图像。
双目立体视觉测量方法具有效率高、精度合适、系统结构简单、成本低等优点,非常适合于制造现场的在线、非接触产品检测和质量控制。对运动物体(包括动物和人体形体)测量中,由于图像获取是在瞬间完成的,因此立体视觉方法是一种更有效的测量方法。双目立体视觉系统是计算机视觉的关键技术之一,获取空间三维场景的距离信息也是计算机视觉研究中最基础的内容
双目立体视觉测距算法是找相机拍摄的图片中任意一个像素点,在另外一个相机拍摄的图像中找到和它对应的像素点,这个过程需要特征提取,特征匹配等一系列复杂的算法。
双目视觉的实现可分为以下步骤:图像获取、摄像机标定、特征提取、图像匹配和三维重建
案例分析:
采用devision畸变模型并设置相机模型的初始参数
gen_cam_par_area_scan_division (0.0131207, -622.291, 7.40051e-006, 7.4e-006, 313.212, 257.118, 640, 480, CamParamL)
gen_cam_par_area_scan_division (0.0131949, -622.579, 7.41561e-006, 7.4e-006, 319.161, 229.867, 640, 480, CamParamR)
创建3D位姿,即右相机相当于左相机的位姿
create_pose (0.153128, -0.00389049, 0.0453321, 0.640628, 319.764, 0.141582, 'Rp+T', 'gba', 'point', RelPose)
生成校正立体图像对需要的映射图
gen_binocular_rectification_map (MapL, MapR, CamParamL, CamParamR, RelPose, 1, 'viewing_direction', 'bilinear', RectCamParL, RectCamParR, CamPoseRectL, CamPoseRectR, RectLPosRectR)
* 激活图形窗口1
dev_set_window (WindowHandle1)
dev_clear_window ()
dev_set_part (0, 0, HeightL - 1, WidthL - 1)
*读取左相机图像
read_image (ImageL, ImagePath + ImageFiles[I])
*增强对比度
emphasize (ImageL, ImageL, 7, 7, 1)
*校正图像
map_image (ImageL, MapL, ImageRectifiedL)
* 激活图形窗口2
dev_set_window (WindowHandle2)
dev_clear_window ()
dev_set_part (0, 0, HeightR - 1, WidthR - 1)
*读取右相机图像
read_image (ImageR, ImagePath + ImageFiles[I + 1])
*增强对比度
emphasize (ImageR, ImageR, 7, 7, 1)
*校正图像
map_image (ImageR, MapR, ImageRectifiedR)
* 校正前显示两个图像
dev_set_window (WindowHandle1)
dev_display (ImageL)
dev_set_window (WindowHandle2)
dev_display (ImageR)
分别定义 binocular_disparity 和 binocular_distance 的参数值。
MaskWidth := 21
MaskHeight := 21
TextureThresh := 5
MinDisparity := 35
MaxDisparity := 75
NumLevels := 1
ScoreThresh := 0.1
*确定视差图和匹配分值图
binocular_disparity (ImageRectifiedL, ImageRectifiedR, DisparityImage, ScoreImageDisparity, 'ncc', MaskWidth, MaskHeight, TextureThresh, MinDisparity, MaxDisparity, NumLevels, ScoreThresh, 'left_right_check', 'interpolation')
*确定视差图和匹配分值图
binocular_disparity (ImageRectifiedL, ImageRectifiedR, DisparityImage, ScoreImageDisparity, 'ncc', MaskWidth, MaskHeight, TextureThresh, MinDisparity, MaxDisparity, NumLevels, ScoreThresh, 'left_right_check', 'interpolation')
拟合平面区域
dev_set_color ('green')
gen_circle (Circle, [65,145,455], [50,590,210], [15,15,15])
union1 (Circle, RegionDefiningReferencePlane)
dev_set_color ('red')
消除相机坐标系对物体表面倾斜的影响
* 缩小给定区域,该区域将参考平面定义为距离图像的域
get_domain (DistanceImage, Domain)
intersection (RegionDefiningReferencePlane, Domain, RegionDefiningReferencePlane)
* 确定参考平面的参数
moments_gray_plane (RegionDefiningReferencePlane, DistanceImage, MRow, MCol, Alpha, Beta, Mean)
* 生成参考平面的距离图像
get_image_pointer1 (DistanceImage, Pointer, Type, Width, Height)
area_center (RegionDefiningReferencePlane, Area, Row, Column)
gen_image_surface_first_order (ReferencePlaneDistance, Type, Alpha, Beta, Mean, Row, Column, Width, Height)
* 减去参考平面的距离图像从对象的 distance 图像
sub_image (DistanceImage, ReferencePlaneDistance, DistanceImageWithoutTilt, 1, 0)
* 确定减少距离值的比例因子
CosGamma := 1.0 / sqrt(Alpha * Alpha + Beta * Beta + 1)
* 减少距离值
scale_image (DistanceImageWithoutTilt, DistanceImageCorrected, CosGamma, 0)
获得最小最大高度
MinHeight := -0.0005
MaxHeight := 0.05
将深度图转为参考平面以上的高度 ,如果参考平面是对象的地平面,则此过程可能很有用。然后,反转的校正距离值对应于地平面以上的高度。
invert_image (DistanceImageCorrected, HeightAboveReferencePlane)
* 将高度图像的域缩小到给定的高度范围。
threshold (HeightAboveReferencePlane, Region, MinHeight, MaxHeight)
reduce_domain (HeightAboveReferencePlane, Region, HeightAboveReferencePlaneReduced)
dev_display (ImageRectifiedL)
dev_set_color ('blue')
threshold (HeightAboveReferencePlaneReduced, Range1,0.0004, 0.0015)
dev_display (Range1)
dev_set_color ('green')
threshold (HeightAboveReferencePlaneReduced, Range2, 0.0015, 0.0025)
dev_display (Range2)
dev_set_color ('red')
threshold (HeightAboveReferencePlaneReduced, Range3, 0.0025, 0.004)
dev_display (Range3)
标签:set,双目,image,dev,Halcon,立体,图像,视觉
From: https://blog.csdn.net/2202_75557553/article/details/143198745