图像处理 Halcon 应用Blob分析识别水表指针

图像处理 Halcon 应用Blob分析识别水表指针

处理方法:Blob分析(解决函数orientation_region 方向不确定性)

  将图像转化为三通道图像,选取图像的Saturation(颜色强度对比明显),进行灰度处理,
  去掉其中的噪点,选择主要特征,应用connection分成不同的连通域(关键)
  求中心求角度,显示指针与水平方向的角度

水表的图像

dev_update_window ('off')
dev_close_window ()
dev_open_window (0, 0, 800, 600, 'black', WH)
read_image (Image, 'watermeter2.jpg')
decompose3 (Image, Image1, Image2, Image3)
*分成三通道图像
trans_from_rgb (Image1, Image2, Image3, ImageResult1, ImageResult2, ImageResult3, 'hsv')
*转化为hsv
threshold (ImageResult2, Regions1, 150, 255)
*对显著图像进行灰度处理
erosion_circle (Regions1, RegionErosion1, 2)
*去噪点
connection (RegionErosion1, ConnectedRegions)
*分割
select_shape (ConnectedRegions, SelectedRegions, ['area','row'], 'and', [0,297.22], [4120.37,415.74])
*选取特征
shape_trans (SelectedRegions, RegionTrans, 'convex')
*平滑连通域
sort_region ( RegionTrans, SortedRegions, 'first_point', 'true', 'column')
*排列各个连通域
count_obj (SortedRegions, Number1)
*计数

dev_display (Image)
for i := 1 to  Number1 by 1
    select_obj (SortedRegions, ObjectSelected, i)
    area_center ( ObjectSelected, Area, Row, Column)
    *计算区域面积中心坐标
    orientation_region (ObjectSelected, Phi)
    *区域的方向
    shape_trans (ObjectSelected, RegionTrans1, 'outer_circle')
    area_center (RegionTrans1, Area1, Row1, Column1)
     if (Row1>Row)
        Phi:=-abs(Phi)
     elseif(Row1<Row)
        Phi:=abs(Phi)   
    endif
    *orientation_region产生的角度,有正负两个方向,不能确定哪个方向,用if语句对正负做个判断
    dev_set_color ('green')
    set_display_font (WH, 15, 'mono', 'true', 'false')
    set_tposition (WH, Row, Column)  
    write_string (WH,deg(Phi) )
    *与X轴正向的夹角,指针在上为正,指针在下为负
endfor
count_obj (ObjectSelected, Number)
dev_update_window ('on')

在实际运行过程中,orientation_region算子产生的区域方向存在不确定性,如下图中(1)所示 ,可能产生方向1,也有可能方向2.
因此需要结合区域特征作一次方向判定,如下图中(2),区域特征的中心为(2)中的3,对区域最大外接圆产生圆心4,最终通过3与4 的关系来判断区域特征最终的方向。

在这里插入图片描述

最终运行结果:
precessed image
与X轴正向的夹角,指针在上为正,指针在下为负

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值