石鑫华视觉 发表于 2019-9-12 11:54:10

LabVIEW实现VBAI中ROI二值化预览功能 将蓝色目标覆盖到原始图像上

LabVIEW实现VBAI中ROI二值化预览功能 将蓝色目标覆盖到原始图像上
我们知道,在NI LabVIEW VISION环境中,二值化时默认的函数IMAQ Threshold和IMAQ Color Threshold都是只能对全图进行二值化的。即使加上Mask等功能后,可以处理ROI中的内容,也是对二值化后的图像再进行处理,ROI外的背景已经被去掉了。但是在VBAI中的粒子分析中,可以看到,其在二值化时,是可以对ROI中区域进行预览的:彩色图像的检测目标-粒子分析功能ROI区域二值化预览灰度图像的检测目标-粒子分析功能ROI区域二值化预览这个功能,只在VBAI中有实现,即使视觉助手中也是没有的实现的。在VBAI的函数库中,可以看到有一个阈值颜色预览的函数:IVBThreshold Color Preview.vi如果可以,我们直接调用这个函数也是可以的。但是可惜,这个函数没有开放,打不开函数调用不了。那就只能自已想办法了。在视觉论坛中,早些年创作有一篇文章:LabVIEW中如何实现VBAI中的粒子分析二值化时灰度图像上覆盖蓝色目标http://visionbbs.com/thread-7854-1-1.html这个文章,可以大概的实现上面的要求。但是其有些问题,一个是当阈值下限为0时,ROI区域不起作用,阈值下限为0时,则变成整个图像二值化。只有当阈值范围从1-255范围内时,才可以对ROI中的值做预览功能。另一个问题是,只对灰度图像做了二值化预览功能的实现,没有对彩色图像进行处理。还有一个问题,就是不能对ROI外做处理。此次,再次进行思考,终于把上面的几个问题也解决了,完整的实现了VBAI中的ROI二值化预览功能,下面来看一下效果:灰度图像ROI内阈值0-128灰度图像ROI外阈值50-255非矩形ROI实现彩色图像-无ROI全图实现彩色图像ROI内阈值包含0彩色图像ROI外阈值包含255彩色图像徒手画ROI内二值化彩色图像示例调用代码灰度图像示例调用代码本功能实现时,为了效率,将需要的图像缓存放置在了外面。如果不需要效率(如果是预览,可以牺牲效率,一般只会在设置时使用),可以将必要的图像缓存放置到功能函数内部,调用结束后释放即可。示例代码版本LabVIEW2019+VISION2019。
页: [1]
查看完整版本: LabVIEW实现VBAI中ROI二值化预览功能 将蓝色目标覆盖到原始图像上

LabVIEW HALCON图像处理入门教程(第二版)
石鑫华机器视觉与LabVIEW Vision图像处理PDF+视频教程11种全套
《LabVIEW Vision函数实例详解》教程-NI Vision所有函数使用方法介绍,基于NI VISION2020,兼容VDM21/22/23