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是zui常用的彩色系統,計算機系統通常使用RGB系統,是使用紅色(RED)、綠色(GREEN)和藍色(BLUE)三原色彩疊加得到各種顏色,這三種顏色被分為256級(當然還可以分成更多的級別,如512,1024等),經組合可得1600萬種顏色。而CMY為減色系統,分別為青色(Cyan)、品紅(Magenta)、黃色(Yellow)三種顏色,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設備馬達控制的后續展開內容。
圖像讀取就是從CCD中采集出圖像的灰度信號值,并zui終被存儲在CameraData*buffer的緩沖區內。對于一次采集,我們在工作臺上要采集6幀圖像,為此系統建立一個結構Capture來控制圖像信號的讀取,該結構會控制幀圖像在工作臺上的位置,以及行列信號值。
我們將馬達的驅動和信號的讀取,這兩部分肯機地結合起來,就完成了AOI設備的圖像采集模塊的設計,并實現了該模塊的功能。
相關產品
免責聲明
客服熱線: 13199863987
加盟熱線: 13199863987
媒體合作: 0571-87759945
投訴熱線: 0571-87759942
下載儀表站APP
Ybzhan手機版
Ybzhan公眾號
Ybzhan小程序