LabVIEW实现VBAI中ROI二值化预览功能
我们知道,在NI LabVIEW VISION环境中,二值化时默认的函数IMAQ Threshold和IMAQ Color Threshold都是只能对全图进行二值化的。即使加上Mask等功能后,可以处理ROI中的内容,也是对二值化后的图像再进行处理,ROI外的背景已经被去掉了。但是在VBAI中的粒子分析中,可以看到,其在二值化时,是可以对ROI中区域进行预览的:
彩色图像的检测目标-粒子分析功能ROI区域二值化预览
灰度图像的检测目标-粒子分析功能ROI区域二值化预览
这个功能,只在VBAI中有实现,即使视觉助手中也是没有的实现的。在VBAI的函数库中,可以看到有一个阈值颜色预览的函数:
IVB Threshold Color Preview.vi
如果可以,我们直接调用这个函数也是可以的。但是可惜,这个函数没有开放,打不开函数调用不了。那就只能自已想办法了。
在视觉论坛中,早些年创作有一篇文章:
LabVIEW中如何实现VBAI中的粒子分析二值化时灰度图像上覆盖蓝色目标
http://labviewvision.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。
LabVIEW实现VBAI中ROI二值化预览功能 将蓝色目标覆盖到原始图像上
http://labviewvision.com/thread-22135-1-1.html?fromuid=9
(出处: 机器视觉论坛)