Halcon之计算距离算子

*读取一张图像
read_image(Image,'Circle.jpg')
*画生成区域
draw_region(Region, 3600)
*区域->图像
reduce_domain(Image, Region, ImageReduced)
*阈值分割
threshold(ImageReduced, Region1, 0, 35)
*区域连通->将区域分开
connection(Region1, ConnectedRegions)
*区域排序
sort_region(ConnectedRegions, SortedRegions, 'first_point', 'true', 'column')
*输出第几个区域(区域1区域2)
select_obj(SortedRegions, ObjectSelected, 1)
select_obj(SortedRegions, ObjectSelected1, 2)
*区域面积,得到区域面积及中心点坐标
area_center(ObjectSelected,Area, Row, Column)
area_center(ObjectSelected1, Area1, Row1, Column1)
*区域转轮廓(gen_region_contour_xld轮廓转区域)
gen_contour_region_xld(ObjectSelected1,Contours, 'border')
***************点到点距离
distance_pp(Row,Column,Row1, Column1, Distance)
***************点到区域距离
distance_pr(ObjectSelected1,Row,Column,DistanceMin, DistanceMax)
***************点到轮廓距离
distance_pc(Contours,Row,Column,DistanceMin1, DistanceMax1)
draw_region(Region2, 3600)
reduce_domain(Image, Region2, ImageReduced1)
*提取亚像素边缘
edges_sub_pix(ImageReduced1, Edges, 'sobel_fast', 82, 30, 50)
count_obj(Edges, Number)
*轮廓排序
sort_contours_xld(Edges, SortedContours, 'upper_left', 'true', 'row')
*选择轮廓(直线1直线2)
select_obj(SortedContours, ObjectSelected2, 1)
select_obj(SortedContours, ObjectSelected3, 2)
*轮廓拟合(直线1直线2)
fit_line_contour_xld(ObjectSelected2,'tukey', -1, 0, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)
fit_line_contour_xld(ObjectSelected3, 'tukey', -1, 0, 5, 2, RowBegin1, ColBegin1, RowEnd1, ColEnd1, Nr1, Nc1, Dist1)
*将输入行存储为区域
*gen_region_line(RegionLines, RowBegin, ColBegin, RowEnd, ColEnd)
*从区域中提取XLD轮廓
*gen_contour_region_xld(RegionLines, Contours1, 'border')
*******************点到直线距离
distance_pl(Row,Column,RowBegin,ColBegin,RowEnd,ColEnd,Distance1)
*******************线段到线段距离
distance_ss(RowBegin1,ColBegin1,RowEnd1,ColEnd1,RowBegin,ColBegin,RowEnd,ColEnd,DistanceMin2, DistanceMax2)
*******************直线到区域距离
distance_lr(ObjectSelected,RowBegin1,ColBegin1,RowEnd1,ColEnd1,DistanceMin3, DistanceMax3)
*******************线段到区域距离
distance_sr(ObjectSelected,RowBegin1,ColBegin1,RowEnd1,ColEnd1,DistanceMin4, DistanceMax4)
  • 9
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HALCON 是一款广泛应用于工业视觉应用的软件工具包,它包含了一系列用于图像处理、分析以及机器视觉任务的算法。在 HALCON 中,“生成视差图”算子通常是指用于从立体成像系统获取的两幅图像(左视图和右视图)中计算并创建深度信息的过程。 ### 视差图的原理 视差图是一种显示深度信息的二维图像,其中每个像素代表了对应场景中该点与观察者的距离。当两个摄像头(或其他成像设备)从不同位置同时捕捉到同一场景时,由于它们之间的相对位置差异,会得到两张略有偏移的图像。这种偏移量称为“视差”,它与物体在空间中的深度有关。更远的物体看起来移动得比近处的物体慢,因此,通过比较这两张图像中对应像素的位置差异,可以计算出每一点的实际深度。 ### 使用HALCON生成视差图的步骤 在 HALCON 中,生成视差图的基本流程包括: 1. **图像采集**:首先需要使用相机捕获两幅图像,通常是一个立体成像系统的左右两个相机。 2. **图像预处理**:对捕获的图像进行必要的预处理,例如去噪、灰度化等,以便更好地识别特征。 3. **特征匹配**:找到两幅图像中对应点的匹配,这通常涉及使用特征检测和描述符匹配技术。HALCON 提供了多种功能强大且高效的特征匹配算法。 4. **视差计算**:基于匹配到的点对,计算其在两幅图像间的相对位移,即视差值。HALCON 可以利用各种数学模型来进行这个计算,比如双线性插值、四角插值等。 5. **深度图构建**:将计算出的视差值转换为深度信息,形成深度图。在这个过程中,通常会使用标定矩阵和内参矩阵来校正和映射视差值,使之符合实际世界中的物理尺寸。 6. **结果可视化**:最后,可以将深度图渲染出来作为视差图进行可视化展示,或者是进一步加工用于其他目的,如机器人导航、物体定位等。 ### 相关问题: 1. 在HALCON中如何优化特征匹配过程以提高视差图的质量? 2. 为什么需要在生成视差图之前对图像进行预处理? 3. 在哪些情况下生成的视差图可能会有误差或不准确?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值