手機(jī)訪問(wèn)更快捷
更多流量 更易傳播
隨時(shí)掌握行業(yè)動(dòng)態(tài)
網(wǎng)絡(luò)課堂 行業(yè)直播
產(chǎn)品推薦:水表|流量計(jì)|壓力變送器|熱電偶|液位計(jì)|冷熱沖擊試驗(yàn)箱|水質(zhì)分析|光譜儀|試驗(yàn)機(jī)|試驗(yàn)箱
PCB圖像的采集是AOI設(shè)備進(jìn)行檢測(cè)的關(guān)鍵步驟之一,采集的圖像信息將會(huì)用在以后的圖像處理模塊中。
圖像采集設(shè)備,完成的任務(wù)是將光信號(hào)轉(zhuǎn)化成可以記錄的電信號(hào),能完成這類光電轉(zhuǎn)換功能的有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類器件相對(duì)于CMOS類器件,具有低噪聲和高靈敏度的特點(diǎn)。CCD分為面陣(Area Arrays)型CCD和線陣(Linear Arrays)型CCD,我們采用的是面陣型的。面陣型CCD圖像傳感器由感光區(qū)、信號(hào)存儲(chǔ)區(qū)和輸出轉(zhuǎn)移部分組成,感光區(qū)能夠感受對(duì)象物體的光源,并轉(zhuǎn)化成電荷,
然后通過(guò)移位寄存器輸出電信號(hào)。因?yàn)镃CD是面陣型的,所以需要通過(guò)水平和垂直兩個(gè)移位寄存器輸出電信號(hào)。
輸出的電信號(hào)就是CCD采集的圖像信號(hào)。
普通的圖像都是由各種的點(diǎn)構(gòu)成的,這些點(diǎn)被稱為像素(pix),這些點(diǎn)的集合就形成了一整幅圖像。對(duì)于彩色的圖像有RGB、CMY、YUV、YcbCr幾個(gè)系統(tǒng)。RGB是zui常用的彩色系統(tǒng),計(jì)算機(jī)系統(tǒng)通常使用RGB系統(tǒng),是使用紅色(RED)、綠色(GREEN)和藍(lán)色(BLUE)三原色彩疊加得到各種顏色,這三種顏色被分為256級(jí)(當(dāng)然還可以分成更多的級(jí)別,如512,1024等),經(jīng)組合可得1600萬(wàn)種顏色。而CMY為減色系統(tǒng),分別為青色(Cyan)、品紅(Magenta)、黃色(Yellow)三種顏色,CMY系統(tǒng)一般用于印刷工業(yè)。這兩個(gè)系統(tǒng)的其對(duì)應(yīng)關(guān)系如圖所示。
RGB、CMY關(guān)系圖
從上面的關(guān)系圖中,可以看到白色為(255,255,255),黑色為(0,0,0),這樣從白色到黑色的連線上的點(diǎn)是R=G=B,這些點(diǎn)只有亮度信息,可以成為灰度信號(hào)。我們把只含亮度信號(hào),沒(méi)有色彩信號(hào)的圖像,成為灰度圖,就是我們平時(shí)看到黑白照片。
在AOI設(shè)備中使用黑白CCD進(jìn)行圖像采集,得到的就是灰度圖。這是因?yàn)閷?duì)PCB上的瑕疵只需黑白信號(hào)就能表示,而且黑白CCD的解析度也遠(yuǎn)較彩色CCD高,同樣面積的CCD靶面上,黑白圖像的解析度是彩色圖像的三倍以上。這樣,我們以后提到的任何圖像信號(hào)都是灰度的黑白圖像。
從上述的描述可以得知,對(duì)于一個(gè)灰度點(diǎn),可以有三個(gè)元素(x,y,D)來(lái)表示,其中x和y為該點(diǎn)的平面坐標(biāo),D為該點(diǎn)的灰度值,在0到255之間.這樣,一幅數(shù)字圖像是一個(gè)二維的陣列,陣列元素值被稱為灰度值(亮度值)。對(duì)于陣列中的任意一個(gè)像素的可以用如下公式表示:
f (x y)=D(x y)
x,y表示點(diǎn)的坐標(biāo),D表示這一點(diǎn)的灰度值。我們采集的圖像通常用這種方式來(lái)存儲(chǔ)的。
圖像的計(jì)算方式是以像素(pix)來(lái)計(jì)算的,pix的換算關(guān)系為1mm=48pixes。我們?cè)O(shè)備采用的CCD攝像頭,采集到的一幀(frame)圖像的像素為4008pix×2672pix。
這樣編程時(shí),對(duì)一幀圖像的像素可以有這樣的定義:
#define XAXIS 4008
#define XAXIS 2672
在設(shè)備中工作臺(tái)上,要完成一次所有PCB板的圖像采集,共要采集6幀圖像,把這6幀圖像檢測(cè)完成后,即完成一次的PCB的檢測(cè)流程。
再來(lái)看一下,我們從攝像頭里,采集到的圖像信號(hào)是怎樣的格式。從攝像頭里,讀取到的圖像結(jié)構(gòu)為C鋤eraData幸bu膿,這是一個(gè)線性存儲(chǔ)的圖像單元。我們?cè)谝粠瑘D像中座標(biāo)(x,y)處的像素點(diǎn)的灰度值D,可以用公式來(lái)得到:
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來(lái)檢查是否有掃描到的圖像信號(hào),如果有則把圖像的基本信息放入Capture的結(jié)構(gòu)之中。
if (fcancapture){//檢查是否有圖像幀
num=getAvailFrame();//取可用的像素幀數(shù)
if (mum!=0){
Capture cp;//定義Capture類結(jié)構(gòu)cp,并開(kāi)始給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)狀態(tài)
Sleep(170);//延時(shí)等待CCD曝光
fcanmoveall=true;//恢復(fù)移動(dòng)
fcancapture=false;//停止捕捉下一幀
}
}
采集后得到一幀完整的PCB圖像(4008pix×2672pix)
AOI設(shè)備的圖像采集過(guò)程,可以分為硬件的馬達(dá)驅(qū)動(dòng)開(kāi)發(fā),和圖像讀取的兩個(gè)部分;這一章是上一個(gè)AOI設(shè)備馬達(dá)控制的后續(xù)展開(kāi)內(nèi)容。
圖像讀取就是從CCD中采集出圖像的灰度信號(hào)值,并zui終被存儲(chǔ)在CameraData*buffer的緩沖區(qū)內(nèi)。對(duì)于一次采集,我們?cè)诠ぷ髋_(tái)上要采集6幀圖像,為此系統(tǒng)建立一個(gè)結(jié)構(gòu)Capture來(lái)控制圖像信號(hào)的讀取,該結(jié)構(gòu)會(huì)控制幀圖像在工作臺(tái)上的位置,以及行列信號(hào)值。
我們將馬達(dá)的驅(qū)動(dòng)和信號(hào)的讀取,這兩部分肯機(jī)地結(jié)合起來(lái),就完成了AOI設(shè)備的圖像采集模塊的設(shè)計(jì),并實(shí)現(xiàn)了該模塊的功能。
相關(guān)產(chǎn)品
免責(zé)聲明
客服熱線: 15267989561
加盟熱線: 15267989561
媒體合作: 0571-87759945
投訴熱線: 0571-87759942
下載儀表站APP
Ybzhan手機(jī)版
Ybzhan公眾號(hào)
Ybzhan小程序