halcon培训-形态学分析三部曲--@龙熙视觉李杰## 龙熙视觉

10 篇文章 1 订阅
9 篇文章 0 订阅

在这里插入图片描述
halcon机器视觉之汉字识别-@龙熙视觉李杰## 龙熙视觉
*develop的知识点

  • 不初始化窗口 ,有一个默认窗口3600
  • 环境变量中涉及到的地址
    read_image(bond, ‘die/die_03’)
  • read_image(Image2, ‘zf4.png’)
    get_image_size(bond, Width, height)
  • get_image_size(Image2, Width2, height2)
    dev_close_window()
    *Width,height 比例比较协调. Width,height 特别大的时候,除以倍数 3 5
    dev_open_window(0, 0, Width,height, ‘black’, WindowHandle1)
    dev_display(bond)

*把第2个column 改为上个窗口的 宽度
dev_open_window(0,Width,Width, height, ‘black’, WindowHandle2)

  • dev_display(Image2)
    *有几个
  • dev_close_window()
    *关闭当前窗口

*这个有黑色区域 也有白色区域。、

*1.把白色区域 抠图 出来。 ----分割

*常规二值化。 灰度值 。在这个区间范围内 107, 230。挑选为 选中的区域。
*固定阈值 .二值化仅仅是分割的一种。
dev_set_window(WindowHandle1)
threshold (bond, Bright, 107, 230)

  • 点击窗口 —》delete —》 鼠标移动到 窗口上 ,右键选取regions。
    *后面图像比较多, ‘convex’, ‘ellipse’, ‘inner_center’, ‘inner_circle’, ‘inner_rectangle1’, ‘outer_circle’, ‘rectangle1’, ‘rectangle2’
    *‘outer_circle’ 外接圆
    *inner_circle’ 内接圆
    *‘rectangle2’ 带角度的矩形
    *形态学里面的一些算子
    dev_set_draw(‘fill’)
    *区域转为特定形状
    shape_trans(Bright,Die, ‘rectangle2’)
    *感兴趣区域的抠图操作
    reduce_domain(bond, Die, DieGray)

*1. 固定阈值 -方法1
threshold (DieGray, Wires, 0, 45)

*2. 第2种方法 自动阈值

read_image(Sheet, ‘pic08.png’)
*先做正态分布 RelativeHisto 比值 。
gray_histo (Sheet, Sheet, AbsoluteHisto, RelativeHisto)
*找到频率最高的灰度值
PeakGray := sort_index(AbsoluteHisto)[255]

  • 找亮色区域 PeakGray-25,255。 找黑色区域 0 -PeakGray-25
    threshold (Sheet, Region, PeakGray,255)

binary_threshold(Sheet, LightRegion, ‘max_separability’, ‘light’, UsedThreshold)

area_center(Region, Area, Row1, Column1)

k:=213656/(1280*1024)
*内部有孔洞 要填充。对1, 100像素面积孔洞进行填充。
fill_up_shape(Wires, RegionFillUp, ‘area’, 1, 100)

*做连通域 ,作用 拆分

  • 容易不稳定
  • connection(RegionOpening, ConnectedRegions)
  • select_shape (ConnectedRegions, SelectedRegions, [‘area’,‘circularity’], ‘and’, [497.82,0.14608], [2387.35,0.5109])
  • opening_circle( SelectedRegions, RegionOpening, 13)

*用特征去分选也是可以。

  • dev_set_window(WindowHandle2)
  • dev_display(bond)
    *腐蚀 收缩 一些像素
  • erosion_circle(RegionFillUp, RegionErosion, 11)

*膨胀 往外吞并一些像素

  • dev_set_window(WindowHandle1)

  • dev_display(bond)

  • dilation_circle(RegionErosion, RegionDilation, 11)
    *外部有噪点 要开运算
    *opening_circle = erosion_circle+dilation_circle
    dev_display(bond)
    opening_circle(RegionFillUp, RegionOpening, 14.5)

count_obj(RegionOpening, Number)
*做连通域 ,作用 拆分
connection(RegionOpening, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, [‘area’,‘circularity’], ‘and’, [505.09,0.81904], [5000,1])

  • 把1个区域 打散成碎片
  • 圆形度
    count_obj(ConnectedRegions, Number1)
  • select_shape (ConnectedRegions, SelectedRegions, [‘area’,‘circularity’], ‘and’, [497.82,0.14608], [2387.35,0.5109])
    dev_set_window(WindowHandle1)
    dev_display(bond)
    dev_display(SelectedRegions)
    count_obj(SelectedRegions, Number2)
    *特征提取

*2.把白色区域中的黑色区域提取出来。—二值化分割

*排序处理
sort_region(SelectedRegions, SortedRegions, ‘first_point’, ‘true’, ‘column’)

smallest_circle(SortedRegions, Row, Column, Radius)

for i:=1 to |Radius| by 1
dev_set_color(‘green’)
dev_display(SortedRegions)
dev_set_color(‘red’)
gen_cross_contour_xld(Cross, Row[i-1], Column[i-1], 26, 0.785398)
disp_message(WindowHandle1,Radius[i-1], ‘window’, Row[i-1]+20, Column[i-1], ‘yellow’, ‘flase’)

endfor

*3.把方块黑色区域 剔除掉,保留 圆形黑色区域。—特征提取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值