andyzhao
工程师
工程师
  • 最后登录2020-11-24
  • 发帖数478
  • 金币2506枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
阅读:237回复:6

边缘提取问题——如何把一个xld contour array中的两个参数分开并提取出来?

楼主#
更多 发布于:2020-11-20 02:03
——请大佬提供意见、建议或者相关问题的链接,非常感谢大佬
我用单目相机测量环形零件的内外径
用购买的Halcon标定板完成了标定,获得了相机的内参数和外参数,利用相机的内参数对待检测图像进行了畸变矫正。
标定后得到的相机内外参数

CameraParameters := ['area_scan_division',0.0168107,-1.898,2.39981e-006,2.4e-006,1515.93,1018.5,3088,2064]
CameraPose := [-0.00419203,0.00225051,0.31692,359.248,359.479,88.9519,0]





之前使用的笨办法:
     Step1.用亚像素算子获得内外圆的xld轮廓
     Step2.用【get_contour_xld】算子得到轮廓的点的横坐标和纵坐标;
     Step3.把轮廓的最上点、最下点、最左点、最右点的横纵坐标找出来,用算子【image_points_to_world_plane】把这四个点转换到真实的世界中,得到这四个点在世界坐标系中的真实坐标;
     Step4.利用两点间的距离公式求出最上点与最下点的距离,作为轮廓的直径值;
现在使用的办法:
       利用圆形卡尺工具测量出来了环形零件的内径和外径,内径和外径的结果是用像素直径表示的。我想直接得出该零件的真实世界中的内径和外径。这就需要求出“像素当量尺寸”(就是一个像素宽度代表真实世界中的多少mm)。
      思路1:用笨办法,把用卡尺拟合出来的内外圆的轮廓的坐标点找到,求出轮廓的最上点、最下点、最左点、最右点的横纵坐标,用算子【image_points_to_world_plane】把这几个坐标点转换到真实世界中,利用两点距离公式去求;
但是,这里遇到了问题,如图1所示,用圆形卡尺得到的“Contour1”变量包含了内圆和外圆的数据,它的变量类型是——Contour1-xld contour array2参数),如图1所示。
变量窗口的显示类型是这样的,能看懂意思,但不知道该如何把“2个参数”分离出来
{Contour1-xld contour array2参数)-第一个对象:xld contour 轮廓点:435150 长度:4351.53语意:xld contour array}。
无法通过选择“面积”、“行列特性”的特征分别筛选出来。想问问大佬怎么能够把“Contour1”包含的内圆和外圆的参数分别提取出来。


     思路2:用标定板的照片,已知标定板上最外侧的两条黑框的距离是56±0.01mm。标定板如图3所示。利用“直线卡尺”计算出两条黑框之间的像素距离dis,然后用56÷dis=pp (mm/pixel),pp的值即为像素当量。用pp×内外径的像素距离值=真实世界的内外径尺寸(mm)。之所以想用卡尺测量黑色外边框的距离是因为卡尺测量的距离更准确一些。希望大佬能够给出一个直线卡尺测量标定板最外边两个黑框的像素距离的例子,或者给出一个直线卡尺测量两条平行线直径的像素距离的例子,提供例子的链接就行。
     









图片

喜欢0

最新打赏:0人

Joey_zweihan
技术员
技术员
  • 最后登录2020-11-24
  • 发帖数147
  • 金币600枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
沙发#
发布于:2020-11-20 13:34
思路1 :如果想要提取边缘的单个Contour1最简单的方法建立两个卡尺,通过Index索引获得单个Contour,代码我就不写了
思路2 :我上次提供的代码只需要改几个参数就可以测量标定板的黑边。授人以鱼不如授人以渔,有空写这么多就多研究下卡尺这些工具。很多问题会迎刃而解
没错,我就是来水金币的
Joey_zweihan
技术员
技术员
  • 最后登录2020-11-24
  • 发帖数147
  • 金币600枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
板凳#
发布于:2020-11-20 13:36
研究下例程apply_metrology_model.hdev应该会有帮助
没错,我就是来水金币的
andyzhao
工程师
工程师
  • 最后登录2020-11-24
  • 发帖数478
  • 金币2506枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
地板#
发布于:2020-11-20 15:42
Joey_zweihan:研究下例程apply_metrology_model.hdev应该会有帮助回到原帖
谢谢大佬,你的建议很有帮助,非常感谢
zhangchun
初学者
初学者
  • 最后登录2020-11-24
  • 发帖数247
  • 金币3枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
4楼#
发布于:2020-11-20 20:39
感谢分享 学习学习。。。。
风景_你好
技术员
技术员
  • 最后登录2020-11-22
  • 发帖数210
  • 金币652枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
5楼#
发布于:2020-11-22 10:40
标题的问题,可以用select_shape_xld算子通过长度选出来
andyzhao
工程师
工程师
  • 最后登录2020-11-24
  • 发帖数478
  • 金币2506枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
6楼#
发布于:2020-11-22 16:39
风景_你好:标题的问题,可以用select_shape_xld算子通过长度选出来回到原帖
你好,大佬,我尝试了好多次,“select_shape_xld算子”用不了

{【Contour1-xld contour array(2参数)-第一个对象:xld contour 轮廓点:435150 长度:4351.53】语意:xld contour array}。
游客

返回顶部
支付

欢迎打赏,请选择打赏金额

  • 1元
  • 6元
  • 10元
  • 66元
  • 100元

支付即代表同意《本站支付协议》 有疑问请联系客服