基于ARM9的便攜式內(nèi)窺鏡系統(tǒng)設計與實現(xiàn)
調(diào)用Cam_Init()實現(xiàn)攝像頭接口以及攝像頭模塊的初始化,為本驅(qū)動程序的主要部分。在正確執(zhí)行這個函數(shù)后,攝像頭就可以正常工作,開始采集數(shù)據(jù)。
攝像頭接口的初始化包括五個方面:①設置寄存器CIGCTRL軟件重啟;②設置寄存器CISRCFMT確定輸入源格式;③設置寄存器CIWDOFST溢出標識位復位并使能窗口偏移;④設置寄存器CIGCTRL,反轉(zhuǎn)CAMVSYNC極性與攝像頭保持一致;⑤設置YCBCR開始地址寄存器。
Cam_Init()函數(shù)如下:
BOOL Cam_Init()
{
CamGpioInit();//camera IO初始化
CAM_IF_Reset();//camera接口初始化
CamClockOn(TRUE);//設置camera時鐘
Camera_Module_Reset();//camera模塊重啟
Camera_Initialize();//通過I2C總線設置
//camera模塊的寄存器
s2440IOP->rGPGCON =~(0x324);
s2440IOP->rGPGCON |=(0x124);
if(image_size==1)
{
CamInit(QCIF_XSIZE,QCIF_YSIZE,QCIF_XSIZE,
QCIF_YSIZE,0,0,COPIFRAMEBUFFER_B,
COPIFRAMEBUFFER_A);
//設置輸出圖像格式、起始位置
}
else
{
CamInit(CIF_XSIZE,CIF_YSIZE,QCIF_XSIZE,
QCIF_YSIZE,0,0,COPIFRAMEBUFFER_B,
COPIFRAMEBUFFER_A);
}
RETAILMSG(1,(_T(“CamInit().. donern”)));
return TRUE;
}
在攝像頭驅(qū)動設計中,對OV7660寄存器組的設置至關重要。通過函數(shù)void Wr_CamIIC(U32 slvAddr,U32 addr,U8 data)對OV7660寄存器組進行寫操作,其中slvAddr為OV公司的SCCB總線寫地址(默認值為0x42),addr為寄存器偏移地址,data為設置值。具體參數(shù)設置請參考OmniVision公司提供的OV7660 Setting文獻。
2.2.3 嵌入式系統(tǒng)模塊
嵌入式系統(tǒng)模塊預裝系統(tǒng)為Windows CE.net 4.2,驅(qū)動程序形式為流接口驅(qū)動,基本框架是dll動態(tài)鏈接庫,使用Embedded Visual C++ 4.0或者Platform Builder 4.2編譯。推薦使用EVC(Embedded Visual C++),因為EVC速度比較快。在便攜式內(nèi)窺鏡系統(tǒng)中該模塊主要功能為接收camera圖像信號,并通過觸摸屏同步顯示圖像。為實現(xiàn)該功能,要利用EVC編程,通過USB同步下載至嵌入式系統(tǒng),實現(xiàn)對視頻圖像信號的處理,主要包括圖像處理去噪、特征提取、缺陷尺寸估計、腐蝕缺陷成像等。其結(jié)構示意圖如圖5。
3 試驗驗證
用本系統(tǒng)裝置檢測零件內(nèi)部孔徑為φ5.2mm的孔,在孔的邊緣有一微小裂紋。圖6為圖像信號在采集到嵌入式系統(tǒng)后未經(jīng)過圖像處理的視頻截圖,圖7為采集到嵌入式系統(tǒng)后經(jīng)過圖像處理的視頻截圖。
由圖7可見,處理后的圖像清晰,裂紋明顯,較好地實現(xiàn)了原定目標。試驗證明該系統(tǒng)完全可以用于儀器裝備內(nèi)表面微小缺陷的檢測判定。
本文主要針對目前通用工業(yè)內(nèi)窺鏡存在的體積大、重量重、不便于外場檢測的缺點,在基于ARM9嵌入式系統(tǒng)的基礎上,設計實現(xiàn)了便攜式內(nèi)窺鏡系統(tǒng)。系統(tǒng)在檢測零件上做了試驗,結(jié)果表明該裝置系統(tǒng)在徹底解決通用工業(yè)內(nèi)窺鏡缺點的基礎上,還具有高清晰、高保真的特點,完全可以用于儀器裝備內(nèi)表面微小缺陷的檢測判定。
評論