
简介:opencv开源的计算机视觉库,halcon是商业的视觉库,opencv的一些算子在一般的生产环境下是够用的,但是在对算法速度、精度都要求更高的环境下就有些吃力了。最近在研究halcon,抽几个算子粗略测试一下,效果和速度确实很好,以后可能会在对算法速度要求比较高的地方部署,这里先记录一下opencv和halcon图像数据互转的方法。
参考:
图像边缘处理提取,这个能实现的软件可多的去了。NI VISION、VBAI、视觉助手,这NI的三款软件都能搞定;HALCON也能搞定;Vision Pro也能搞定;OPENCV也能搞定。最基本的函数,是一款图像处理软件,都能搞定这个。
最近看到一个例子,来自一个论坛,提问者想要计算图中木头的数量,悬赏了分值但是没人回复,我看到的时候这帖子已经过去好几年了。作为一个肤浅的初学者,我觉得这问题很有趣,所以打算从这个例子入手,研究下Halcon中的图像处理。
首先,从二值化开始,这张图在刚开始二值化之后出现一些问题。阈值设的高了,会弱化边角一些木头的局部区域,设的低了,会造成一些粘连。而且图像中还有一些干扰。如何在保留边角局部信息的情况下尽可能的防止粘连,是个问题。
结合这个问题,我的思路是分两步走。先把边角一些小的木头区域提取出来,再专门解决粘连的问题,问题得到了解决。
区分大小的依据主要是面积,在做了一些基本的预处理之后,可以把较小的一部分区域图像,如靠近四个边的部分木头,先分割出来了。这个过程中,需要对木头边缘做一些处理,去掉外圈的树皮,和一些干扰的区域,提取出木头截面的大块部分。
得到下图:
这一步就比较简单了,没有小面积区域的顾虑,可以做下腐蚀,让边缘更加清晰。这样就分割开来了。
把上一部分割出的大小区域分别合并,即得到木头的总数了。
btw:这个例子我也做过分水岭算法的测试,但是效果不尽如人意,主要是分割出来的区域太多了,比如图中那片白色的干扰物、右小方的竹棍等,也分割出来了。而边角一些木头的边缘区域又很难顾及到。也可能是参数设置的不够好,所以这个算法我还在研究。
以上是我自己的一些浅薄的思路,希望随着学习的深入,能发现更好的方式。
step1:准备数据
在图像选择区域作为训练集,可以是矩形,也可以是任意形状的区域。
step2:创建一个MLP
step3:添加训练数据
step4:查看训练样本数量(非必须)
step5:训练
step6:映射颜色表
step7:使用
step8:看效果
参考:classify_image_class_luthdev,texture_laws_mlphdev,segment_citrus_fruitshdev
参考:create_class_mlp (Operator)
1、将MLP模型写入文件
write_class_mlp( : : MLPHandle, FileName : )
2、从文件中读入一个MLP模型
read_class_mlp( : : FileName : MLPHandle)
3、清除MLP
clear_class_mlp( : : MLPHandle : )
以上就是关于halcon和opencv的图像互转(C/C++)全部的内容,包括:halcon和opencv的图像互转(C/C++)、图像边缘处理提取算法与实现用到哪些软件、Halcon粘连图象分割与计数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)