前面都是利用NI Vision Assistant提取汽车车牌,虽然可以达到提取汽车车牌的效果,但是每次修改时都要在NI Vision Assistant中修改。实际工程中,都是直接在labview中直接编程提取出汽车车牌。
利用labview提取汽车车牌的程序如下图:
因为图像处理都是对灰度图进行处理,且原图为彩色图像,所以在对灰度图进行二值化处理之前,将原图进行颜色平面提取,转换为灰度图。当然也可以直接对彩色图像直接进行二值化处理,后面再介绍方法。
IMAQ Create在电脑内存中创建一个数据区域对原图像进行存储, Image Name就是这块区域的名称。不同IMAQ Create的Image Name尽量不要相同,否则会遇到很多意想不到的错误。在导入原图时,可以直接在Read Image控件上创建图像文件夹路径,本人用的是IMAQ Load Image Dialog,可以在电脑中选择需要处理的图片,调试的时候可以用,自动运行时最好替换为文件夹路径。
上图几个控件的作用依次是对灰度图像进行二值化、移除边界粒子、填充粒子孔洞、 移除小粒子和边界齐整。
二值化处理的控件需要在Range中选择合适的阈值范围,如何判断二值范围是否合适呢?可以利用探针或者在控件后面连接一个Image显示控件。另外在利用探针或Image显示控件时,有时并没有图像显示,只有一片黑色,并不是程序有问题,而是需要选择正确的图像显示模式。右键点击显示图像区域,在Palette中选择Binary,就可以显示二值图像。
在处理完除车牌外其他干扰项后,就可以创建掩模(Mask),将车牌截取出来。主要用到的控件是IMAQ Mask,将提取颜色平面后的灰度图像复制一份后连接至Image Src,在将二值处理好的车牌图像连接至Image Mask,就可以把车牌提取出来。
除了对灰度图像进行二值化处理之外,还可以直接对原RGB图像直接进行二值化处理,利用IMAQ ColorThreshold设定Red、Green和Blue三个颜色通道阈值,直接将图像处理成二值图像。