1921年,以色列人George S.Crampton在美國(guó)加利福尼亞研制出世界上首臺(tái)工業(yè)內(nèi)窺鏡,用來(lái)檢測(cè)蒸汽渦輪轉(zhuǎn)子的內(nèi)部裂縫。從此,內(nèi)窺技術(shù)逐漸被工業(yè)界所重視,并得到不斷發(fā)展。1990年以來(lái),工業(yè)內(nèi)窺鏡經(jīng)歷了一代硬桿式、二代軟管式和三代電子鏡式的逐步發(fā)展過(guò)程,內(nèi)窺技術(shù)也逐步發(fā)展成為一門嶄新的科學(xué)技術(shù)。
目前,廣泛應(yīng)用于工業(yè)制造和維修領(lǐng)域。它延長(zhǎng)了人眼的距離,拓寬了人類觀察的視野,可以在不拆除或不破壞機(jī)器設(shè)備的前提下清晰準(zhǔn)確地觀察內(nèi)部人眼無(wú)法到達(dá)的位置,實(shí)現(xiàn)機(jī)器設(shè)備或零件內(nèi)部的無(wú)損檢測(cè),盡可能節(jié)省維修時(shí)間,這在武器裝備外場(chǎng)檢修應(yīng)用中相當(dāng)重要。為了實(shí)現(xiàn)內(nèi)窺鏡系統(tǒng)的小型化和便攜性,本文設(shè)計(jì)實(shí)現(xiàn)了一種基于ARM9的便攜式內(nèi)窺鏡系統(tǒng)。
1. ARM嵌入式系統(tǒng)及其攝像頭接口
嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),且軟硬件可裁剪,適用于應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗有嚴(yán)格要求的主要用于計(jì)算機(jī)系統(tǒng)。通常由嵌入式CPU、硬件設(shè)備、嵌入式操作系統(tǒng)及應(yīng)用程序四部分組成,用于實(shí)現(xiàn)對(duì)其他設(shè)備的控制、監(jiān)視或管理等功能。該系統(tǒng)是將先進(jìn)的計(jì)算機(jī)技術(shù)、半導(dǎo)體技術(shù)和電子技術(shù)結(jié)合后應(yīng)用到各個(gè)具體行業(yè)的產(chǎn)物。IP 級(jí)、芯片級(jí)和模塊級(jí)是嵌入式系統(tǒng)的三種主要的體系結(jié)構(gòu)形式。其中,模塊級(jí)的形式就是把已成熟的X86處理器構(gòu)成的計(jì)算機(jī)系統(tǒng)模塊嵌入到應(yīng)用系統(tǒng)中, 充分利用目前常用的PC架構(gòu)的通用性和便利性。
SAMSUNG S3C2440嵌入式微處理器的內(nèi)核采用ARM公司的ARM920T處理器核。它是目前世界上主頻十分快的嵌入式移動(dòng)CPU之一,內(nèi)核電壓為1.3V,采用16/32位ARM920T RISC主要,提供的接口支持?jǐn)?shù)碼攝像頭、TFT/STN液晶屏、USB、HOST/DEVICE、SD/MMC/SDIO存儲(chǔ)卡以及觸摸屏等。
S3C2440嵌入式微處理器的攝像頭接口(CAMIF)支持ITU-RBT.601/656 YCbCr8比特標(biāo)準(zhǔn)的圖像數(shù)據(jù)輸入,大可采樣4 096×4 096像素的圖像。攝像頭接口可以有兩種模式與DMA控制器進(jìn)行數(shù)據(jù)傳輸:一種是P端口模式,把從攝像頭接口采樣到的圖像數(shù)據(jù)轉(zhuǎn)為RGB數(shù)據(jù),并在DMA控制下傳輸?shù)絊DRAM(一般這種模式用來(lái)提供圖像預(yù)覽功能);另一種是C端口模式,把圖像數(shù)據(jù)按照YCbCr4:2:0或4:2:2的格式傳輸?shù)絊DRAM(這種模式主要為MPEG4、H.263等編碼器提供圖像數(shù)據(jù)的輸入)。上述兩種工作模式都允許設(shè)置一個(gè)剪輯窗口,只有進(jìn)入這個(gè)窗口的圖像數(shù)據(jù)才能夠傳輸?shù)?/span>SDRAM。
工業(yè)內(nèi)窺鏡系統(tǒng)主要包括CMOS(CCD)傳感器、傳導(dǎo)纖維、導(dǎo)光束、光源、電源和監(jiān)視器等,結(jié)構(gòu)如圖2所示。由于監(jiān)視器和冷光源體積及其對(duì)電源的要求導(dǎo)致了整個(gè)系統(tǒng)體積大、不便攜帶,且不能將圖像按要求保存,不便于后期缺陷信號(hào)處理?;贏RM9的便攜式內(nèi)窺鏡系統(tǒng)在工業(yè)內(nèi)窺鏡檢測(cè)系統(tǒng)的基礎(chǔ)上,引入嵌入式系統(tǒng),充分發(fā)揮嵌入式系統(tǒng)體積小、輸入電壓低、觸摸屏顯示、利用編程可以實(shí)現(xiàn)圖像處理和存儲(chǔ)的優(yōu)點(diǎn),很好地滿足了檢測(cè)系統(tǒng)對(duì)微型化、易攜帶的要求。
該系統(tǒng)裝置分為照明系統(tǒng)、CMOS 攝像頭、嵌入式系統(tǒng)三部分。
2.2.1 照明系統(tǒng)
一般內(nèi)窺鏡均采用自己冷光源,并由光纖把光線傳至檢查位置上。為達(dá)到較好的照明效果,對(duì)光源和光纖的要求都很高。由于基于ARM9嵌入式系統(tǒng)及對(duì)體積的要求,不能再按照以前采用自己冷光源。在便攜式內(nèi)窺鏡系統(tǒng)設(shè)計(jì)過(guò)程中,巧妙應(yīng)用一種功率較低的高亮度發(fā)光二極管(LED)進(jìn)行照明,以解決光源問(wèn)題。該高亮度發(fā)光二極管工作電壓3.3V,光色白色,亮度很強(qiáng),與電位器相連,實(shí)現(xiàn)亮度可調(diào),端部上下各固定一只,保證視場(chǎng)內(nèi)光照均勻。試驗(yàn)證明完全可行。
2.2.2 CMOS攝像頭
便攜式內(nèi)窺鏡系統(tǒng)所采用的攝像頭為OmniVision公司生產(chǎn)的OV7660。該類型CMOS sensor目前廣泛應(yīng)用于便攜式手持設(shè)備。其特點(diǎn)是:靈敏度高,低電壓工作,標(biāo)準(zhǔn)串行攝像頭控制總線(SCCB)控制,可輸出窗口尺寸可調(diào)的UXGA/SVGA/VGA/QVGA等不同像素的圖像、且圖像格式可以是原始RGB/RGB(4:2:2)/YUV(4:2:2)/YCbCr(4:2:2),圖像處理可編程等。
嵌入式開(kāi)發(fā)沒(méi)有通用的驅(qū)動(dòng)程序。具體針對(duì)OV7660,需要進(jìn)行相應(yīng)驅(qū)動(dòng)設(shè)計(jì)。對(duì)攝像頭進(jìn)行驅(qū)動(dòng)程序設(shè)計(jì),除了實(shí)現(xiàn)設(shè)備的注冊(cè)注銷外, 按照功能還應(yīng)分為實(shí)現(xiàn)攝像頭打開(kāi)模塊、攝像頭控制模塊(初始化在該模塊中實(shí)現(xiàn))和攝像頭關(guān)閉模塊。在WinCE系統(tǒng)啟動(dòng)的過(guò)程中即調(diào)用攝像頭驅(qū)動(dòng)程序,實(shí)現(xiàn)攝像頭與2440攝像頭接口參數(shù)設(shè)置及一系列初始化。下面就驅(qū)動(dòng)的各個(gè)模塊做具體介紹。
(1)攝像頭打開(kāi)模塊
在應(yīng)用程序中,通過(guò)調(diào)用CreateFile()打開(kāi)CIS1口。
hCam=CreateFile(TEXT(“CIS1:”),GENERIC_WRITE |
GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
if(hCam==INVALID_HANDLE_VALUE)
{
AfxMessageBox(L無(wú)法打開(kāi)!);
}
else
{
AfxMessageBox(L攝像頭已打開(kāi)!);
}
(2)攝像頭控制模塊
調(diào)用Cam_Init()實(shí)現(xiàn)攝像頭接口以及攝像頭模塊的初始化,為本驅(qū)動(dòng)程序的主要部分。在正確執(zhí)行這個(gè)函數(shù)后,攝像頭就可以正常工作,開(kāi)始采集數(shù)據(jù)。
攝像頭接口的初始化包括五個(gè)方面:①設(shè)置寄存器CIGCTRL軟件重啟;②設(shè)置寄存器CISRCFMT確定輸入源格式;③設(shè)置寄存器CIWDOFST溢出標(biāo)識(shí)位復(fù)位并使能窗口偏移;④設(shè)置寄存器CIGCTRL,反轉(zhuǎn)CAMVSYNC極性與攝像頭保持一致;⑤設(shè)置YCBCR開(kāi)始地址寄存器。
Cam_Init()函數(shù)如下:
BOOL Cam_Init()
{
CamGpioInit();/camera IO初始化
CAM_IF_Reset();/camera接口初始化
CamClockOn(TRUE);/設(shè)置camera時(shí)鐘
Camera_Module_Reset();/camera模塊重啟
Camera_Initialize();/通過(guò)I2C總線設(shè)置
/camera模塊的寄存器
s2440IOP->rGPGCON &=~(0x3<<24);
s2440IOP->rGPGCON |=(0x1<<24);
if(image_size==1)
{
CamInit(QCIF_XSIZE,QCIF_YSIZE,QCIF_XSIZE,
QCIF_YSIZE,0,0,COPIFRAMEBUFFER_B,
COPIFRAMEBUFFER_A);
/設(shè)置輸出圖像格式、起始位置
}
else
{
CamInit(CIF_XSIZE,CIF_YSIZE,QCIF_XSIZE,
QCIF_YSIZE,0,0,COPIFRAMEBUFFER_B,
COPIFRAMEBUFFER_A);
}
RETAILMSG(1,(_T(“CamInit(). donern”)));
return TRUE;
}
在攝像頭驅(qū)動(dòng)設(shè)計(jì)中,對(duì)OV7660寄存器組的設(shè)置至關(guān)重要。通過(guò)函數(shù)void Wr_CamIIC(U32 slvAddr,U32 addr,U8 data)對(duì)OV7660寄存器組進(jìn)行寫操作,其中slvAddr為OV公司的SCCB總線寫地址(默認(rèn)值為0x42),addr為寄存器偏移地址,data為設(shè)置值。具體參數(shù)設(shè)置請(qǐng)參考OmniVision公司提供的OV7660 Setting文獻(xiàn)。
2.2.3 嵌入式系統(tǒng)模塊
嵌入式系統(tǒng)模塊預(yù)裝系統(tǒng)為Windows CE.net 4.2,驅(qū)動(dòng)程序形式為流接口驅(qū)動(dòng),基本框架是dll動(dòng)態(tài)鏈接庫(kù),使用Embedded Visual C++ 4.0或者Platform Builder 4.2編譯。推薦使用EVC(Embedded Visual C++),因?yàn)镋VC速度比較快。在便攜式內(nèi)窺鏡系統(tǒng)中該模塊主要功能為接收camera圖像信號(hào),并通過(guò)觸摸屏同步顯示圖像。為實(shí)現(xiàn)該功能,要利用EVC編程,通過(guò)USB同步下載至嵌入式系統(tǒng),實(shí)現(xiàn)對(duì)視頻圖像信號(hào)的處理,主要包括圖像處理去噪、特征提取、缺陷尺寸估計(jì)、腐蝕缺陷成像等。
3 試驗(yàn)驗(yàn)證
用本系統(tǒng)裝置檢測(cè)零件內(nèi)部孔徑為φ5.2mm的孔,在孔的邊緣有一微小裂紋。圖6為圖像信號(hào)在采集到嵌入式系統(tǒng)后未經(jīng)過(guò)圖像處理的視頻截圖,圖7為采集到嵌入式系統(tǒng)后經(jīng)過(guò)圖像處理的視頻截圖。
處理后的圖像清晰,裂紋明顯,較好地實(shí)現(xiàn)了原定目標(biāo)。試驗(yàn)證明該系統(tǒng)完全可以用于儀器裝備內(nèi)表面微小缺陷的檢測(cè)判定。
本文主要針對(duì)目前通用工業(yè)內(nèi)窺鏡存在的體積大、重量重、不便于外場(chǎng)檢測(cè)的缺點(diǎn),在基于ARM9嵌入式系統(tǒng)的基礎(chǔ)上,設(shè)計(jì)實(shí)現(xiàn)了便攜式內(nèi)窺鏡系統(tǒng)。系統(tǒng)在檢測(cè)零件上做了試驗(yàn),結(jié)果表明該裝置系統(tǒng)在徹底解決通用工業(yè)內(nèi)窺鏡缺點(diǎn)的基礎(chǔ)上,還具有高清晰、高保真的特點(diǎn),完全可以用于儀器裝備內(nèi)表面微小缺陷的檢測(cè)判定。
復(fù)制成功
×