彭先生

咨询电话:13600190181

AOI产品海报
当前位置:主页 > 技术资料 >

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

文章出处:AOI官方责任编辑:admin人气:发表时间:2016-05-16 15:38
  图像的采集设备
 
  图像采集设备,完成的任务是将光信号转化成可以记录的电信号,能完成这类光电转换功能的有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采集的图像信号。
RGB、CMY关系图
 
  图像系统及灰度图
 
  普通的图像都是由各种的点构成的,这些点被称为像素(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设备的图像采集模块的设计,并实现了该模块的功能。
此文关键字: AOI设备