基于图像处理的元器件个数识别
                                         
 
数字图像处理是实现图像增强、复原、编码、压缩等,其主要为改善图像的质量,以人为对象,且以改善人的视觉效果为目的。目前,图像处理系统应用领域广泛医学、军事、科研、商业等领域。因为数字图像处理技术易于实现非线性处理,处理程序和处理参数可变,故是一项通用性强,精度高,处理方法灵活,信息保存、传送可靠的图像处理技术。本设计的数字图像处理与识别技术系统以数字图像处理理论为基础,基于Matlab工具工作环境设计,能很好、快速的应用于识别本专业以后将要经常使用的电子元器件。主要作用为识别相同元器件的个数,相对于传统的机械识别具有安全性高,非接触性,高速度等特点。此种数字图像处理算法可以广泛应用于各个行业的相同或相近的物品识别,从而大大提高生产效率。进一步的工作是使用opencv实现图像处理,最终通过上下位机的联调最终在规定的时间内完成对采集图像的处理。
关键字: 数字图像;图像处理; 图像识别; Matlab; 元器件.
Abstract
Digital Image Processing is to realize the Image enhancement, recovery, coding, compression, its main for improving the quality of images, adhere to the object, and to improve the person for the purpose of visual effect. At present, image processing system is widely medicine, military and scientific research, business, etc. The design of the digital image processing and recognition technology in the digital image processing system based on the theory of the working environment, based on Matlab tool design, can be very good, rapid applied to identify the major often used electronic components. Main function for the same number of components, the identification of the traditional mechanical identification with a high level of security, non-contact, high speed, etc. The digital image processing algorithms can be widely used in various industries of the same or similar goods identification, which greatly improve the production efficiency.
KeywordsDigital image, Image processing, Image recognition, Matlab, Components.
0.绪论
数字图像处理又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。数字图像处理最早出现于20世纪50年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。数字图像处理作为一门学科大约形成于20世纪60年代初期。早期的图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。首次获得实际成功应用的是美国喷气推进实验室(JPL)。他们对航天探测器徘徊者7号在1964年发回的几千张月球照片使用了图像处理技术,如几何校正、灰度变换、去除噪声等方法进行处理,并考虑了太阳位置和月球环境的影响,由计算机成功地绘制出月球表面地图,获得了巨大的成功。随后又对探测飞船发回的近十万张照片进行更为复杂的图像处理,以致获得了月球的地形图、彩图及全景镶嵌图,获得了非凡的成果,为人类登月创举奠定了坚实的基础,也推动了数字图像处理这门学科的诞生。因为数字图像处理技术易于实现非线性处理,处理程序和处理参数可变,故是一项通用性强,精度高,处理方法灵活,信息保存、传送可靠的图像处理技术。
图像识别统计装置设计数字以数字图像处理理论为基础,基于Matlab工具工作环境设计,
能很好、快速的应用于识别本专业以后将要经常使用的电子元器件。主要作用为识别相同元器件的个数,相对于传统的机械识别具有安全性高,非接触性,高速度等特点。此种数字图像处理算法可以广泛应用于各个行业的相同或相近的物品识别,从而大大提高生产效率。
1.设计要求
主要运用图像处理的综合方法实现,把均值滤波增强,腐蚀运算和膨胀运算,开运算,灰度变换等相结合,来实现本次设计:
1) 设计一套符合应用场合的图像采集装置测量装置,下位机主要是嵌入式系统,这里面主要是设计上位机使用的环境。
2) 详细写出图像采集装置和测量装置的组成部件以及参数。
3) 详细列出图像采集和测量的使用环境。
4) 设计处理的流程。
5) 对实验使用的关键原理作以介绍。
2.功能介绍   
本设计为小功率的三极管元件图像识别统计装置,通过数码相机获取平铺无重叠堆积的三极管的图像,并通过Matlab工具处理后统计三极管的数目。通过控制控制数码相机的拍摄实现拍摄统计拍摄的过程。可以由MCU实现三极管的传送,上位机实现统计显示。本装置的统计方式为软件识别,与传统的机械清点相比具有速度快,损耗低等特点,目前的缺陷就是清点精度相对比较的低。
3.总体方案设计
3.1 功能模块划分
本装置有检测传送控制、图像拍摄、软件处理三部分组成,MCU主要负责三极管的取送,数码相机负责图像的获取;而具体的任务分配及数据处理则由处理能力强大的上位机(PC机)来完成。
总体功能可由下图表示:
3-1整体功能模块示意图
3.2 MCU传送控制流程
装置MCU控制传送的元件块分块及传送速度,这里主要介绍上位机图像处理部分,下位机的设计就不详细介绍。其与数码相机存在控制通讯接口,逻辑关系如下图所示:
3-2MCU传送控制
3.3数码相机拍摄
数码相机获取的图片是后续程序处理的基础,所以在得到的图片质量上要有好的保证。比
如图像的曝光度,解析度,对比度、调等,所以有必要调整光照,设定好元件放置处的背景。其中调整光照可以由MCU一并控制。数码相机的启停可由MCU控制,也可由PC控制,但图片所涉及的数据量大,要求失真度低,图像数据传输通讯接口可采用USB接口。这里使用imaging公司的摄像头和驱动进行上位机VC开发。
3.4软件处理流程
3-3    软件处理流程
                   
4.图像处理
4.1 图像格式转换
取的图像格式为RGB彩图像,需要先将其转换为8256级的灰度图像。本程序采用Matlab的图像处理工具箱的函数rgb2gray来实现。
rgb2gray()   
功能:
  转换RGB图像或颜映像表为灰度图像。
语法:
I = rgb2gray(RGB)
newmap = rgb2gray(map)   
4.2 去噪及特征提取
                              4-1 灰度图及其直方图
上图4-1为三极管统计的局部图片,图中可见,三极管的主体部分很背景及管脚有着明显的区别,可以通过选取合适的阈值进行二值化,从而提取出每个三极管的特征。
4-2为此图像的直方图,从图中可见到比较明显的阈值分界点,但是并不是非常的明显,这是因为,图中有很多的三极管因为反光的缘故,导致主体部分有些发白,如图4-3所示。
                              4-2 需要进一步处理的地方
4.3灰度调整
对于这些发白部分,我们采用灰度调整及中值滤波进行处理,在matlab中,提供了两个函数进行相应的操作,其中imadjust进行灰度调整,其用法如下
Imadjst(f,[low_in high_in],[low_out high_out],gamma)
Gamma所表示的意义:
>1 -------- 凹曲线
<1 -------- 凸直线
=1 -------- 直线
medfilt2用于进行中值滤波处理,其用法如下
F=medfilt2(f,[m n]);
f为输入图像
[m n]为中值滤波模板
F是中值滤波后输出的图像。
4-1matlab直方图经过灰度调整及中值滤波后的图像如图4-4所示,可见,经过中值滤波后,三极管的主体部分有了较大的改善。
4-3灰度处理中值滤波后图像
4-4 灰度调整中值滤波后的直方图
4.4二值化处理
经过滤波后,即可对图像进行二值化处理,首先,我们采用人工选择阈值的方法进行二值化,由图可见,对于本幅图片,其合适的阈值在50~100之间,通过试验,我们选取的值为80
    对图像二值化处理的程序如下:
[M,N]=size(F);
for x=1:M
    for y=1:N
        if F(x,y)<80               
            F(x,y)=0;            %低于阈值的值黑
        else
            F(x,y)=255;        %高于阈值的值白
        end
    end
end
处理后的图像如图4-6所示:
4-5 二值化后结果
4.5阈值分割
当然仍有许多模糊的三极管管脚残影,但已经将三极管的主体很好的识别了出来,采用人工选择阈值的方法虽然可以成功分离出三极管的主体,但是这个阈值这是针对这张图片有效,对于获取的其它图片,这个阈值并不能正确地对图像进行二值化处理,因此我们决定采用自动阈值分割的方法来对图像进行二值化
我们所选用的自动阈值分割方法为Otsu法,它是一种使类间方差最大的自动确定阈值的方法,该方法具有简单、处理速度快的特点,是一种常用的阈值选取方法。
matlab中,提供了一个函数graythresh来实现Otsu法阈值分割,其用法如下:                     
    T=graythresh(f);
其中,f为待进行阈值分割的灰度图像,T为返回的分割灰度比例,将其乘于256即为Otsu法划定的分割阈值。
优化后的程序如下:
T=graythresh(F);
T=T*256;
[M,N]=size(F);
for x=1:M
    for y=1:N
        if F(x,y)<T           
            F(x,y)=0;          %%低于阈值的置黑
        else
            F(x,y)=255;    %%低于阈值的置白
        end
    end
end
采用Otsu法进行阈值二值化后的图像如图4-7所示:
4-6 Otsu法阈值分割后图像
由上可见,不管是采用人工阈值还是Otsu法自动阈值分割,仍然会残留很多的三极管管脚,它们将会严重干扰到对三极管的统计,对于这些噪声,我们采用图像形态学中的闭运算来进行处理,闭运算的原理是先对图像进行腐蚀后再进行膨胀,matlab提供了函数imclose来实现图像的闭运算。其格式为:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。