基于ARM9的便攜式內窺鏡系統設計與實現
1921年,以色列人George S.Crampton在美國加利福尼亞研制出世界上第一臺工業內窺鏡,用來檢測蒸汽渦輪轉子的內部裂縫。從此,內窺技術逐漸被工業界所重視,并得到不斷發展。1990年以來,工業內窺鏡經歷了第一代硬桿式、第二代軟管式和第三代電子鏡式的逐步發展過程,內窺技術也逐步發展成為一門嶄新的科學技術,成為遠距離可視監測RVI(Remote Visual Inspection)技術。
目前,工業內窺鏡廣泛應用于工業制造和維修領域。它延長了人眼的距離,拓寬了人類觀察的視野,可以在不拆除或不破壞機器設備的前提下清晰準確地觀察內部人眼無法到達的位置,實現機器設備或零件內部的無損檢測,盡可能節省維修時間,這在武器裝備外場檢修應用中相當重要。為了實現內窺鏡系統的小型化和便攜性,本文設計實現了一種基于ARM9的便攜式內窺鏡系統。
1 ARM嵌入式系統及其攝像頭接口
嵌入式系統是以應用為中心,以計算機技術為基礎,且軟硬件可裁剪,適用于應用系統對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統。通常由嵌入式CPU、外圍硬件設備、嵌入式操作系統及應用程序四部分組成,用于實現對其他設備的控制、監視或管理等功能。該系統是將先進的計算機技術、半導體技術和電子技術結合后應用到各個具體行業的產物。IP 級、芯片級和模塊級是嵌入式系統的三種主要的體系結構形式。其中,模塊級的形式就是把已成熟的X86處理器構成的計算機系統模塊嵌入到應用系統中, 充分利用目前常用的PC架構的通用性和便利性。
SAMSUNG S3C2440嵌入式微處理器的內核采用ARM公司的ARM920T處理器核。它是目前世界上主頻最快的嵌入式移動CPU之一,內核電壓為1.3V,采用16/32位ARM920T RISC核心,提供的接口支持數碼攝像頭、TFT/STN液晶屏、USB、HOST/DEVICE、SD/MMC/SDIO存儲卡以及觸摸屏等。
S3C2440嵌入式微處理器的攝像頭接口(CAMIF)支持ITU-RBT.601/656 YCbCr8比特標準的圖像數據輸入,最大可采樣4 096×4 096像素的圖像。攝像頭接口可以有兩種模式與DMA控制器進行數據傳輸:一種是P端口模式,把從攝像頭接口采樣到的圖像數據轉為RGB數據,并在DMA控制下傳輸到SDRAM(一般這種模式用來提供圖像預覽功能);另一種是C端口模式,把圖像數據按照YCbCr4:2:0或4:2:2的格式傳輸到SDRAM(這種模式主要為MPEG4、H.263等編碼器提供圖像數據的輸入)。上述兩種工作模式都允許設置一個剪輯窗口,只有進入這個窗口的圖像數據才能夠傳輸到SDRAM。攝像頭工作模塊如圖1所示。

2 基于ARM9的便攜式內窺鏡系統設計
2.1 總體框架設計
工業內窺鏡系統主要包括CMOS(CCD)傳感器、傳導纖維、導光束、光源、電源和監視器等,結構如圖2所示。由于監視器和冷光源體積及其對電源的要求導致了整個系統體積大、不便攜帶,且不能將圖像按要求保存,不便于后期缺陷信號處理。基于ARM9的便攜式內窺鏡系統在工業內窺鏡檢測系統的基礎上,引入嵌入式系統,充分發揮嵌入式系統體積小、輸入電壓低、觸摸屏顯示、利用編程可以實現圖像處理和存儲的優點,很好地滿足了檢測系統對微型化、易攜帶的要求。其結構如圖3所示。

2.2 便攜式內窺鏡系統組成
該系統裝置分為照明系統、CMOS 攝像頭、嵌入式系統三部分。所設計的傳感器探頭結構如圖4所示。

2.2.1 照明系統
一般內窺鏡均采用獨立冷光源,并由光纖把光線傳至檢查位置上。為達到較好的照明效果,對光源和光纖的要求都很高。由于基于ARM9嵌入式系統及對體積的要求,不能再按照以前采用獨立冷光源。在便攜式內窺鏡系統設計過程中,巧妙應用一種功率較低的高亮度發光二極管(LED)進行照明,以解決光源問題。該高亮度發光二極管工作電壓3.3V,光色白色,亮度很強,與電位器相連,實現亮度可調,端部上下各固定一只,保證視場內光照均勻。試驗證明完全可行。
2.2.2 CMOS攝像頭
便攜式內窺鏡系統所采用的攝像頭為OmniVision公司生產的OV7660。該類型CMOS sensor目前廣泛應用于便攜式手持設備。其特點是:靈敏度高,低電壓工作,標準串行攝像頭控制總線(SCCB)控制,可輸出窗口尺寸可調的UXGA/SVGA/VGA/QVGA等不同像素的圖像、且圖像格式可以是原始RGB/RGB(4:2:2)/YUV(4:2:2)/YCbCr(4:2:2),圖像處理可編程等。
嵌入式開發沒有通用的驅動程序。具體針對OV7660,需要進行相應驅動設計。對攝像頭進行驅動程序設計,除了實現設備的注冊注銷外, 按照功能還應分為實現攝像頭打開模塊、攝像頭控制模塊(初始化在該模塊中實現)和攝像頭關閉模塊。在WinCE系統啟動的過程中即調用攝像頭驅動程序,實現攝像頭與2440攝像頭接口參數設置及一系列初始化。下面就驅動的各個模塊做具體介紹。
(1)攝像頭打開模塊
在應用程序中,通過調用CreateFile()打開CIS1口。
hCam=CreateFile(TEXT(“CIS1:”),GENERIC_WRITE |
GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
if(hCam==INVALID_HANDLE_VALUE)
{
AfxMessageBox(L”無法打開!”);
}
else
{
AfxMessageBox(L”攝像頭已打開!”);
}








評論