PCB圖畫的收集是AOI設(shè)備進(jìn)行檢測(cè)的關(guān)鍵步驟之一,收集的圖畫信息將會(huì)用在今后的圖畫處理模塊中。
圖畫的收集設(shè)備
圖畫收集設(shè)備,完結(jié)的使命是將光信號(hào)轉(zhuǎn)化成能夠記載的電信號(hào),能完結(jié)這類光電變換功用的有CCD(Charge Coupled Device,電荷耦合器材)類器材,CMOS(Complementary Metal-Oxide-Semiconductor,互補(bǔ)金屬氧化物半導(dǎo)體)類設(shè)備和PSD(Position Sensitive Detector,半導(dǎo)體方位敏感檢出器)設(shè)備等。咱們?cè)O(shè)備選擇CCD作為圖畫收集設(shè)備。
CCD類器材相關(guān)于CMOS類器材,具有低噪聲和高靈敏度的特色。CCD分為面陣(Area Arrays)型CCD和線陣(Linear Arrays)型CCD,咱們選用的是面陣型的。面陣型CCD圖畫傳感器由感光區(qū)、信號(hào)存儲(chǔ)區(qū)和輸出搬運(yùn)部分組成,感光區(qū)能夠感觸目標(biāo)物體的光源,并轉(zhuǎn)化成電荷,然后通過移位寄存器輸出電信號(hào)。由于CCD是面陣型的,所以需要通過水平緩筆直兩個(gè)移位寄存器輸出電信號(hào)。
輸出的電信號(hào)就是CCD收集的圖畫信號(hào)。
圖畫體系及灰度圖
一般的圖畫都是由各種的點(diǎn)構(gòu)成的,這些點(diǎn)被稱為像素(pix),這些點(diǎn)的調(diào)集就形成了一整幅圖畫。關(guān)于五顏六色的圖畫有RGB、CMY、YUV、YcbCr幾個(gè)體系。RGB是最常用的五顏六色體系,核算機(jī)體系一般運(yùn)用RGB體系,是運(yùn)用紅色(RED)、綠色(GREEN)和藍(lán)色(BLUE)三原色彩疊加得到各種色彩,這三種色彩被分為256級(jí)(當(dāng)然還能夠分成更多的等級(jí),如512,1024等),經(jīng)組合可得1600萬種色彩。而CMY為減色體系,分別為青色(Cyan)、品紅(Magenta)、黃色(Yellow)三種色彩,CMY體系一般用于印刷工業(yè)。這兩個(gè)體系的其對(duì)應(yīng)聯(lián)系如圖所示。
RGB、CMY聯(lián)系圖從上面的聯(lián)系圖中,能夠看到白色為(255,255,255),黑色為(0,0,0),這樣從白色到黑色的連線上的點(diǎn)是R=G=B,這些點(diǎn)只有亮度信息,能夠成為灰度信號(hào)。咱們把只含亮度信號(hào),沒有色彩信號(hào)的圖畫,成為灰度圖,就是咱們平??吹绞欠钦掌?
在AOI設(shè)備中運(yùn)用是非CCD進(jìn)行圖畫收集,得到的就是灰度圖。這是由于對(duì)PCB上的瑕疵只需是非信號(hào)就能表明,并且是非CCD的解析度也遠(yuǎn)較五顏六色CCD高,相同面積的CCD靶面上,是非圖畫的解析度是五顏六色圖畫的三倍以上。這樣,咱們今后說到的任何圖畫信號(hào)都是灰度的是非圖畫。
從上述的描繪能夠得知,關(guān)于一個(gè)灰度點(diǎn),能夠有三個(gè)元素(x,y,D)來表明,其間x和y為該點(diǎn)的平面坐標(biāo),D為該點(diǎn)的灰度值,在0到255之間.這樣,一幅數(shù)字圖畫是一個(gè)二維的陣列,陣列元素值被稱為灰度值(亮度值)。關(guān)于陣列中的任意一個(gè)像素的能夠用如下公式表明:
f (x y)=D(x y)
x,y表明點(diǎn)的坐標(biāo),D表明這一點(diǎn)的灰度值。咱們收集的圖畫一般用這種方法來存儲(chǔ)的。
圖畫的收集
圖畫的核算方法是以像素(pix)來核算的,pix的換算聯(lián)系為1mm=48pixes。咱們?cè)O(shè)備選用的CCD攝像頭,收集到的一幀(frame)圖畫的像素為4008pix×2672pix。
這樣編程時(shí),對(duì)一幀圖畫的像素能夠有這樣的界說:
#define XAXIS 4008
#define XAXIS 2672
在設(shè)備中作業(yè)臺(tái)上,要完結(jié)一次一切PCB板的圖畫收集,共要收集6幀圖畫,把這6幀圖畫檢測(cè)完結(jié)后,即完結(jié)一次的PCB的檢測(cè)流程。
再來看一下,咱們從攝像頭里,收集到的圖畫信號(hào)是怎樣的格局。從攝像頭里,讀取到的圖畫結(jié)構(gòu)為C鋤eraData幸bu膿,這是一個(gè)線性存儲(chǔ)的圖畫單元。咱們?cè)谝粠瑘D畫中座標(biāo)(x,y)處的像素點(diǎn)的灰度值D,能夠用公式來得到:
D=buffer[x+y*XAXIS]
了解圖畫像素的存儲(chǔ)結(jié)構(gòu)后,咱們?cè)倏匆幌屡c圖畫收集相關(guān)的結(jié)構(gòu)。
struct Capture{
int i;//X方向的位移
int j;//Y方向的位移
int rowC;//一幀圖畫的總的行數(shù)
int colC;//一幀圖畫的總的列數(shù)
int bufferNo;//存儲(chǔ)圖畫的緩存編號(hào)
CameraData*buffer;//存儲(chǔ)圖畫的結(jié)構(gòu)
};
在CCD移動(dòng)和拍照時(shí),首先要查看CCD的幀存儲(chǔ)器里是否有圖畫信號(hào)能夠讀取,用布爾值fcancapture來查看是否有掃描到的圖畫信號(hào),如果有則把圖畫的基本信息放入Capture的結(jié)構(gòu)之中。
if (fcancapture){//查看是否有圖畫幀
num=getAvailFrame();//取可用的像素幀數(shù)
if (mum!=0){
Capture cp;//界說Capture類結(jié)構(gòu)cp,并開端給cp的結(jié)構(gòu)賦值
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);//取移動(dòng)狀況
Sleep(170);//延時(shí)等候CCD曝光
fcanmoveall=true;//康復(fù)移動(dòng)
fcancapture=false;//中止捕捉下一幀
}
}
收集后得到一幀完好的PCB圖畫(4008pix×2672pix)
aoi設(shè)備檢測(cè)圖畫的收集和轉(zhuǎn)化小結(jié)
AOI設(shè)備的圖畫收集進(jìn)程,能夠分為硬件的馬達(dá)驅(qū)動(dòng)開發(fā),和圖畫讀取的兩個(gè)部分;這一章是上一個(gè)AOI設(shè)備馬達(dá)操控的后續(xù)打開內(nèi)容。
圖畫讀取就是從CCD中收集出圖畫的灰度信號(hào)值,并最終被存儲(chǔ)在CameraData*buffer的緩沖區(qū)內(nèi)。關(guān)于一次收集,咱們?cè)谧鳂I(yè)臺(tái)上要收集6幀圖畫,為此體系樹立一個(gè)結(jié)構(gòu)Capture來操控圖畫信號(hào)的讀取,該結(jié)構(gòu)會(huì)操控幀圖畫在作業(yè)臺(tái)上的方位,以及隊(duì)伍信號(hào)值。
咱們將馬達(dá)的驅(qū)動(dòng)和信號(hào)的讀取,這兩部分肯機(jī)地結(jié)合起來,就完結(jié)了AOI設(shè)備的圖畫收集模塊的規(guī)劃,并完成了該模塊的功用。