AOI设备检测图像的采集和转化

AOI设备检测图像的采集和转化

PCB图像的采集是AOI设备进行检测的关键步骤之一,采集的图像信息将会用在以后的图像处理模块中。

图像的采集设备

图像采集设备,完成的任务是将光信号转化成可以记录的电信号,能完成这类光电转换功能的有CCD(Charge Coupled Device,电荷耦合器件)类器件,CMOS(Complementary Metal-Oxide-Semiconductor,互补金属氧化物半导体)类设备和PSD(Position Sensitive Detector,半导体位置敏感检出器)设备等。我们设备选择CCD作为图像采集设备。

CCD类器件相对于CMOS类器件,具有低噪声和高灵敏度的特点。CCD分为面阵(Area Arrays)型CCD和线阵(Linear Arrays)型CCD,我们采用的是面阵型的。面阵型CCD图像传感器由感光区、信号存储区和输出转移部分组成,感光区能够感受对象物体的光源,并转化成电荷,然后通过移位寄存器输出电信号。因为CCD是面阵型的,所以需要通过水平和垂直两个移位寄存器输出电信号。

输出的电信号就是CCD采集的图像信号。

图像系统及灰度图

普通的图像都是由各种的点构成的,这些点被称为像素(pix),这些点的集合就形成了一整幅图像。对于彩色的图像有RGB、CMY、YUV、YcbCr几个系统。RGB是最常用的彩色系统,计算机系统通常使用RGB系统,是使用红色(RED)、绿色(GREEN)和蓝色(BLUE)三原色彩叠加得到各种颜色,这三种颜色被分为256级(当然还可以分成更多的级别,如512,1024等),经组合可得1600万种颜色。而CMY为减色系统,分别为青色(Cyan)、品红(Magenta)、黄色(Yellow)三种颜色,CMY系统一般用于印刷工业。这两个系统的其对应关系如图所示。

RGB、CMY关系图
RGB、CMY关系图

从上面的关系图中,可以看到白色为(255,255,255),黑色为(0,0,0),这样从白色到黑色的连线上的点是R=G=B,这些点只有亮度信息,可以成为灰度信号。我们把只含亮度信号,没有色彩信号的图像,成为灰度图,就是我们平时看到黑白照片。

AOI设备中使用黑白CCD进行图像采集,得到的就是灰度图。这是因为对PCB上的瑕疵只需黑白信号就能表示,而且黑白CCD的解析度也远较彩色CCD高,同样面积的CCD靶面上,黑白图像的解析度是彩色图像的三倍以上。这样,我们以后提到的任何图像信号都是灰度的黑白图像。

从上述的描述可以得知,对于一个灰度点,可以有三个元素(x,y,D)来表示,其中x和y为该点的平面坐标,D为该点的灰度值,在0到255之间.这样,一幅数字图像是一个二维的阵列,阵列元素值被称为灰度值(亮度值)。对于阵列中的任意一个像素的可以用如下公式表示:

f (x  y)=D(x  y)

x,y表示点的坐标,D表示这一点的灰度值。我们采集的图像通常用这种方式来存储的。

图像的采集

图像的计算方式是以像素(pix)来计算的,pix的换算关系为1mm=48pixes。我们设备采用的CCD摄像头,采集到的一帧(frame)图像的像素为4008pix×2672pix。

这样编程时,对一帧图像的像素可以有这样的定义:
#define XAXIS    4008
#define XAXIS    2672

在设备中工作台上,要完成一次所有PCB板的图像采集,共要采集6帧图像,把这6帧图像检测完成后,即完成一次的PCB的检测流程。

再来看一下,我们从摄像头里,采集到的图像信号是怎样的格式。从摄像头里,读取到的图像结构为C锄eraData幸bu脓,这是一个线性存储的图像单元。我们在一帧图像中座标(x,y)处的像素点的灰度值D,可以用公式来得到:

D=buffer[x+y*XAXIS]

了解图像像素的存储结构后,我们再看一下与图像采集相关的结构。
struct Capture{
int i;//X方向的位移
int j;//Y方向的位移
int rowC;//一幀图像的总的行数
int colC;//一幀图像的总的列数
int bufferNo;//存储图像的缓存编号
CameraData*buffer;//存储图像的结构
};

在CCD移动和拍摄时,首先要检查CCD的帧存储器里是否有图像信号可以读取,用布尔值fcancapture来检查是否有扫描到的图像信号,如果有则把图像的基本信息放入Capture的结构之中。
if (fcancapture){//检查是否有图像帧
num=getAvailFrame();//取可用的像素帧数
if (mum!=0){
Capture cp;//定义Capture类结构cp,并开始给cp的结构赋值
cp.buffer=buff[num-1];
cp.bufferNo=num;
cp.i=si;
cp.j=sj;
cp.colC=columnCount;
cp.rowC=rowCount;
cap[num]=cp;
int pxdst=pxd_goSnap(1,num);//取移动状态
Sleep(170);//延时等待CCD曝光
fcanmoveall=true;//恢复移动
fcancapture=false;//停止捕捉下一幀

采集后得到一帧完整的PCB图像(4008pix×2672pix)

aoi设备检测图像的采集和转化小结

AOI设备的图像采集过程,可以分为硬件的马达驱动开发,和图像读取的两个部分;这一章是上一个AOI设备马达控制的后续展开内容。

图像读取就是从CCD中采集出图像的灰度信号值,并最终被存储在CameraData*buffer的缓冲区内。对于一次采集,我们在工作台上要采集6帧图像,为此系统建立一个结构Capture来控制图像信号的读取,该结构会控制帧图像在工作台上的位置,以及行列信号值。

我们将马达的驱动和信号的读取,这两部分肯机地结合起来,就完成了AOI设备的图像采集模块的设计,并实现了该模块的功能。

发表评论