图像的预处理与图像分割都是图像识别的基础。图像识别技术在不同领域的应用,对图像的预处理和图像分割有着不同的技术要求。在现有的实际应用中,数字图像处理技术往往所需处理的图像信息量巨大,同时图像采集装置在采集图像时,受到多种因素的影响,如环境条件、视觉性能、光照强度、温度等。所以图像识别技术更好的应用依然是多学科领域研究的重点。
本节将以图像识别技术在工业包装领域对药丸进行计数的应用实例,介绍如何通过图像识别技术识别给定图像中药品的个数,从而实现药品包装计数的功能。
1.使用MATLAB工具箱函数进行图像处理
(1)读入图像。在MATLAB命令窗口输入如下代码:
>> clear;
>> close all
>> I=imread('pill.png');
>> figure,imshow(I);
运行程序结果,读取的原始图像如图12.7所示。
(2)由于该图像为彩色RGB格式图像,而将图像转换为灰度图像进行处理,才能充分发挥MATLAB语言进行图像分析的特长。可以通过以下程序代码将图像进行格式转换,原始灰度图像如图12.8所示,转换后图像显示效果如图12.9所示。在MATLAB命令窗口中输入如下程序代码:
>> i=rgb2gray(I);
>> figure, imshow(i);
>> figure,imhist(i);title('直方图');
程序运行结果如图12.8和图12.9所示。
(3)从灰度图像以及直方图可以判断,图像的灰度值在范围[30
140]之间,灰度值所属区域不到整个范围的一半。为调整图像清晰度,提高图像质量,对图像进行中值滤波处理。在MATLAB命令窗口输入如下指令代码:
>> F0=imadjust(i,stretchlim(i),[0 1]);
>> Ft=medfilt2(F0,[5 5]);
>> figure,imshow(Ft);
>> figure, imhist(Ft);title('直方图');
程序运行,处理后的图像如图12.10和图12.11所示。