Halcon粘连图象分割与计数

作者: 晚晴风_ | 来源:发表于2018-10-21 13:53 被阅读17次

最近看到一个例子,来自一个论坛,提问者想要计算图中木头的数量,悬赏了分值但是没人回复,我看到的时候这帖子已经过去好几年了。作为一个肤浅的初学者,我觉得这问题很有趣,所以打算从这个例子入手,研究下Halcon中的图像处理。


wood.jpg

首先,从二值化开始,这张图在刚开始二值化之后出现一些问题。阈值设的高了,会弱化边角一些木头的局部区域,设的低了,会造成一些粘连。而且图像中还有一些干扰。如何在保留边角局部信息的情况下尽可能的防止粘连,是个问题。


bright.jpg

结合这个问题,我的思路是分两步走。先把边角一些小的木头区域提取出来,再专门解决粘连的问题,问题得到了解决。

提取较小区域

区分大小的依据主要是面积,在做了一些基本的预处理之后,可以把较小的一部分区域图像,如靠近四个边的部分木头,先分割出来了。这个过程中,需要对木头边缘做一些处理,去掉外圈的树皮,和一些干扰的区域,提取出木头截面的大块部分。

read_image (Image, 'G:/qing/Pic/wood.jpg')
get_image_size (Image, Width, Height)
rgb1_to_gray(Image,grayImage)
threshold (grayImage, Bright, 60, 255)
fill_up(Bright,fillRegion)
opening_circle (fillRegion, RegionOpening, 5.5)
select_shape (RegionOpening, SelectedRegions, 'area', 'and', 100, 200000)
intersection(SelectedRegions, Bright, RegionIntersection)
opening_rectangle1 (RegionIntersection, Cut, 1, 7)
connection (Cut, ConnectedRegions1)
select_shape (ConnectedRegions1, SelectedRegions2, 'area', 'and', 500, 10000)
count_obj(SelectedRegions2,number1)

得到下图:


cut.jpg
分割较大区域

这一步就比较简单了,没有小面积区域的顾虑,可以做下腐蚀,让边缘更加清晰。这样就分割开来了。

select_shape (ConnectedRegions1, BigRegions2, 'area', 'and', 10000, 1000000)
erosion_circle(BigRegions2,erisionRegion1,3.5)
connection (erisionRegion1, ConnectedRegions2)
select_shape (ConnectedRegions2, SelectedRegions3, 'area', 'and', 150, 200000)
erosion-connection.jpg
区域合并与计数

把上一部分割出的大小区域分别合并,即得到木头的总数了。

count_obj(ObjectsConcat,number3)
dev_display(ObjectsConcat)
set_display_font (WindowHandle,18, 'mono', 'true', 'true')
disp_message(WindowHandle, 'Number of logs : '+number3, 'image', 30, 50, 'blue', 'true')
result1.jpg

btw:这个例子我也做过分水岭算法的测试,但是效果不尽如人意,主要是分割出来的区域太多了,比如图中那片白色的干扰物、右小方的竹棍等,也分割出来了。而边角一些木头的边缘区域又很难顾及到。也可能是参数设置的不够好,所以这个算法我还在研究。
以上是我自己的一些浅薄的思路,希望随着学习的深入,能发现更好的方式。

相关文章

  • Halcon粘连图象分割与计数

    最近看到一个例子,来自一个论坛,提问者想要计算图中木头的数量,悬赏了分值但是没人回复,我看到的时候这帖子已经过去好...

  • 数字图像处理简答题

    1.图像锐化与图像平滑有何区别与联系? 答:图象锐化是用于增强边缘,导致高频分量增强,会使图象清晰;图象平滑用于去...

  • halcon视觉学习-基于halcon

    halcon简介 halcon在工业视觉中属于很棒的。学习halcon需要具备 软件、图像处理、光学 三个部分的知...

  • 图象与图像

    看见炊烟袅袅时,就看见母亲围着锅台转 我的念想在北方 “一座来了不想走的城市”,对于我来说 只是迫于生活的一次跳槽...

  • 案例二 图像分割

    基于连通域的图像分割案例 可以用于物体计数和区域分割码上 后期进行更改优化

  • opencv和halcon图像数据类型相互转换

    halcon转opencv需要1.7ms,opencv转halcon需要550ms。

  • Halcon视频教程|Halcon和C#实现机器视觉测量项目实战

    Halcon视频教程|Halcon和C#实现机器视觉测量项目实战视频教程手把手教学附送软件 HALCON是德国MV...

  • 计数排序

    计数排序伪代码: 计数排序流程图:

  • 2021-02-16

    治生札记--083 玩索图象以习易之二 易之为道,本气与数,而习易者,必求之象与图。 易言气数,纯本天地自然之象。...

  • halcon/C++模板匹配

    说明 参考网页 【Halcon】 模板匹配 create_template 与 fast_match_mg[htt...

网友评论

    本文标题:Halcon粘连图象分割与计数

    本文链接:https://www.haomeiwen.com/subject/qbdbzftx.html