关于halcon深度图转灰度图

近期测试一个电容测高的项目,对电容两端测高。

每次需要对电容两端测高,求得高度差,进行管控

遇到一下问题:

1、原图为32位的深度图,通过halcon打开,因为高度信息太小,图像一片黑

2、将深度图转为灰度图后,如何能自动识别电容,并在两端创建ROI区域

先解决第一个问题:

思路本质在于将深度图信息数据进行拉伸,然后将拉伸信息后的图像转为byte

第一种:基于线性变换将高度信息进行变换,高度信息低时拉高,过高时降低

              然后将其格式转为byte,最后将对比度拉伸。

scale_image (Image, ImageScaled, 20, -100)
convert_image_type (ImageScaled, ImageConverted, 'byte')
scale_image_max (ImageConverted, ImageScaleMax)

第二种思路:将高度信息内(lowValue, highValue)拉伸成0-255,对应第一种思路第一个和第三个算子,然后将其转为byte。

scale_image_range (Image, ImageScaled, lowValue, highValue)

convert_image_type (ImageScaled, ImageConverted, 'byte')

上述两种效果实测,效果提升明显。

再解决第二个问题:

1)设置阈值分割出电容、驱动器和背景,再临近分割

threshold (ImageReduced, Region, lowThreshold, highThreshold)
connection (Region, ConnectedRegions)

2)电容和驱动器高度类似,转为灰度后,也相近,剔除干扰项

select_shape (ConnectedRegions, SelectedRegions, ['area','anisometry'], 'and', [MINArea,MINRab], [MAXArea,MAXRab])

基于区域面积和长短轴比值筛选,区域面积可过滤噪声,长短轴比值过滤电路板上的驱动器(电容为长方形,驱动器为正方形,长短轴比值不一样)

3)定位到电容区域两端并生成ROI

*输入区域、输出矩形区域宽高
*输出区域outputRegion1、outputRegion2
inputRegion:=ObjectSelected
width:=2
height:=2
*获得电容的中心点
area_center (inputRegion, Area, Row, Column)
*计算电容与水平方向的夹角
orientation_region (ObjectSelected, Phi)
*知道区域中心点和到中心点距离
*求出电容两端自动生成区域的中心点
tanx:=sin(Phi)/cos(Phi)
roiX1:=Row+(distance*tanx/sqrt(1+(tanx*tanx)))
roiX2:=Row-(distance*tanx/sqrt(1+(tanx*tanx)))
resXTuple[Index]:=roiX1
resXTuple[Index+1]:=roiX2
roiY1:=Column+(distance/sqrt(1+(tanx*tanx)))
roiY2:=Column-(distance/sqrt(1+(tanx*tanx)))
resYTuple[Index]:=roiY1
resYTuple[Index+1]:=roiY2
gen_rectangle2 (outputRegion1, roiX1, roiY1, rad(Phi), width, height)
gen_rectangle2 (outputRegion2, roiX2, roiY2, rad(Phi), width, height)

4)对两端区域进行测高,高度做差返回两端极差,对标极差,进行管控。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beyond951

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值