基于CMOS圖像通道在超聲診斷儀中的應(yīng)用
1 引言
本文引用地址:http://2s4d.com/article/201706/350313.htm隨著醫(yī)療診斷儀器小型化、便攜化的進程,高性能32位微處理器正在越來越多地應(yīng)用于各類小型醫(yī)療影像設(shè)備中,但是如何利用這些微處理器傳送和處理實時圖像,卻是一個丞待解決的問題。從ARM 7系列開始,ARM處理器就集成了CMOS(Complementary Metal Oxide SemiConductor)圖像傳感器接口,這為解決上述問題提供了可能。處理器可以通過CMOS圖像傳感器接口適應(yīng)不同的CMOS圖像傳感器。通過CMOS接口,圖像數(shù)據(jù)將被送入到系統(tǒng)的CMOS圖像通道中。CMOS圖像通道為CMOS圖像傳感器接口與系統(tǒng)AHB(Advanced High peRFormanceBus)總線之間的連接通路,由CSI (CMOS Sensor Interface)和PRP(Pre-Processor)組成。該通道專門用于高速圖像傳輸,提供了多種圖像格式輸入和傳輸方式,并能在通道內(nèi)進行顏色空間變換、窗體調(diào)整等多種操作,是診斷圖像以及其他圖像應(yīng)用傳輸?shù)睦硐胪ǖ馈?/p>
本文討論了一種基于32位微處理器ARM9E和嵌入式Linux的便攜式超聲診斷儀的解決方案。系統(tǒng)以CMOS圖像通道為診斷網(wǎng)像的傳輸通道,將采集的超聲圖像信息送人系統(tǒng)總線,在嵌入式Ijnux操作系統(tǒng)平臺上,實現(xiàn)了診斷圖像的實時顯示和靜態(tài)圖像的大容量非易失性存儲,所實現(xiàn)的診斷系統(tǒng)不僅功能強大、擴展容易,而且還兼顧了小型化的需求。
2 系統(tǒng)構(gòu)架
本文設(shè)計的便攜式超聲診斷儀系統(tǒng)結(jié)構(gòu)如圖l所示。用戶通過輸入設(shè)備向系統(tǒng)輸入控制命令,完成超聲圖像的采集、顯示、保存等相關(guān)處理。當(dāng)執(zhí)行掃描命令時,系統(tǒng)通過串口向以FPGA為核心的超聲圖像采集模塊發(fā)送圖像采集命令,控制超聲探頭掃描驅(qū)動電路和信號發(fā)射接收電路同步動作。接收的超聲信號在超聲圖像采集模塊中經(jīng)放大、模數(shù)轉(zhuǎn)換后送人FPGA,完成數(shù)字掃描變換(DCS)和插值運算后,得到二維的B超圖像信息。將該圖像信息進行格式轉(zhuǎn)換后通過ARM芯片CMOS接13送人控制系統(tǒng),經(jīng)圖像通道傳輸后,完成在LCD(Liquid Crystal Display)上的實時顯示,同時可拔插的大容量SD(Secure Digital Memory Card)卡可對所需的圖像進行保存。保存的圖像信息可以進行離線處理,比如打印、電影回放、遠(yuǎn)程瀏覽等。
3 系統(tǒng)硬件設(shè)計
3.1硬件框圖
本設(shè)計選用以ARM926EJ-S為內(nèi)核的Freescale i.MX21作為處理器,控制系統(tǒng)的硬件框俐如圖2所示,系統(tǒng)是以ARM處理器為核心,外加兼容的硬件外設(shè)。超聲采集模塊完成圖像的采集和傳入,LCD把傳人的圖像信息實時的顯示出來,通過SD卡把大量的圖像數(shù)據(jù)保存起來以便后期處理。通過外加USB HUB??蓪⑹髽?biāo)、鍵盤、打印機接入系統(tǒng)。本地儲存的診斷圖像數(shù)據(jù)可以通過快速以太網(wǎng)控制處理器DM9000送入網(wǎng)口,通過以太網(wǎng)實現(xiàn)遠(yuǎn)程瀏覽。
3.2 CMOS圖像通道
本控制系統(tǒng)CMOS圖像通道框圖如圖3所示,超聲圖像數(shù)據(jù)的傳入利用i.MX21芯片的CMOS圖像傳感器接口來實現(xiàn)。該接口支持的圖像數(shù)據(jù)類型包括RGB565、RGB888、YUV422、YUV444等。不同類型的圖像數(shù)據(jù)在CMOS口經(jīng)過CSI 8位采樣后,封裝成32位圖像數(shù)據(jù)送人CSI RxFIFO。CSI RxFIFO中的圖像數(shù)據(jù)根據(jù)類型的不同,送顯和存儲的硬件和軟件實現(xiàn)方法也是不同的。
(1)若類型為RGB565,且圖像窗體不需要調(diào)整(顯示設(shè)備單一)。圖像數(shù)據(jù)可以通過DMA通道直接傳送到顯示緩沖區(qū),如圖3中通道①;
(2)若類型為RGB565,且圖像窗體需要調(diào)整(顯示設(shè)備多樣化),圖像數(shù)據(jù)則需要經(jīng)過前處理器(PRPl,在PRP中調(diào)整圖像大小送入顯示緩沖區(qū),如圖3中通道②;
(3)若類型為YUV422,圖像數(shù)據(jù)則需要經(jīng)過PRP,在PRP中調(diào)整圖像大小并轉(zhuǎn)換成合適的顏色空間后送人顯示緩沖區(qū),如圖3中通道②;
(4)若類型為YUV444、RGB888,圖像數(shù)據(jù)則需通過軟件編程實現(xiàn)圖像數(shù)據(jù)的顏色處理和轉(zhuǎn)換后送入PRP調(diào)整窗體,最后送入顯示緩沖區(qū),如圖3中通道③。
本設(shè)計為使LCD接口輸出的圖像兼容QVGA、VGA、SVGA、XGA等尺寸的顯示屏,且兼顧圖像傳輸?shù)乃俾?、圖像顯示的質(zhì)量,我們使用RGB565格式,選用罔3中通道②。因此需將超聲圖像采集模塊所采集的圖像信息構(gòu)造為RGB565格式,故CMOS接口輸入的罔像信息時序圖如圖4所示。
圖中Vsync是場I司步信號,Hsync是水平同步信號,Pixelk是象素數(shù)據(jù)輸入同步信號,D [7:0]為象素數(shù)據(jù)信號。Vsync和Hsync為低電平時即可開始有效圖像數(shù)據(jù)的輸入,Pixelk上升沿的到來則表明進行數(shù)據(jù)輸入,Pixelk的一個周期將完成一個圖像數(shù)據(jù)字節(jié)的輸入。在傳輸一幀圖像過程中,即Vsync的一個周期內(nèi),Hsync會出現(xiàn)H次(H為行數(shù))高電平。在Hsync的一個周期內(nèi),Pixelk將出現(xiàn)W*Pixelbytes次(W為列數(shù),Pixelbytes為每象素占用字節(jié)數(shù))高電平。而下一個Vsync信號上升沿的到來則表明一幀分辨率為W*H的圖像輸入過程的結(jié)束。
CSI RxFIFO中的圖像數(shù)據(jù)送入PRP進行窗體調(diào)整后,通過AHB(Advanced High peRFormance Bus)進入內(nèi)存,PRP窗體的調(diào)整通過設(shè)置PRP控制寄存器實現(xiàn)。
3.3圖像顯示及保存
FrameBuffer是Linux為顯示設(shè)備提供的一個接口,它是顯存抽象后的一種設(shè)備.對該設(shè)備進行讀/寫則可直接對顯存進行操作。通過驅(qū)動程序可為FrameBuffer在文件系統(tǒng)中創(chuàng)建一個設(shè)備文件fb0,用戶要完成對FrameBuffer的圖像輸入,只需完成對fb0圖像的寫入操作。當(dāng)LCDC(LCD Controller)中的Pixel FIFO為空或者部分為空時,LCDC要求從基于突發(fā)傳輸模式的FrameBuffer中取要顯示的圖像數(shù)據(jù)。當(dāng)LCDC的傳輸請求被存儲控制器中過的總線仲裁器接收并確認(rèn)后,F(xiàn)rameBuffer中的圖像數(shù)據(jù)將通過專用的DMA通道送入Pixel FIFO,然后經(jīng)過字節(jié)翻轉(zhuǎn)、背景前景圖像合成后通過LCDC邏輯接口直接送入LCD顯示屏接口。
通過MMC/SD接口可將SD卡接入控制系統(tǒng),利用驅(qū)動程序?qū)D卡掛載在文件系統(tǒng)中。用戶可以編寫應(yīng)用程序?qū)?nèi)存中的圖像數(shù)據(jù)保存在SD卡中,也可將SD卡中的圖像數(shù)據(jù)讀入到內(nèi)存中。
4 系統(tǒng)軟件設(shè)計
本控制系統(tǒng)是基于上述硬件平臺和嵌入式Linux操作系統(tǒng)開發(fā)設(shè)計的。首先在硬件平臺上實現(xiàn)嵌入式Linux操作系統(tǒng)內(nèi)核和文件系統(tǒng)的移植,并實現(xiàn)對外設(shè)硬件的底層驅(qū)動。應(yīng)用程序采用模塊化設(shè)計,其中功能模塊設(shè)計主要包括GUI(Graphical User Interface)和WebServer程序設(shè)計,應(yīng)用模塊主要包括采集模塊子程序,LCD顯示模塊子程序,打印模塊子程序,SD卡存儲子程序,以太網(wǎng)傳輸子程序等。本文重點對罔像通道相關(guān)程序做出論述。
如圖3,設(shè)計CSI RxFIFO中的圖像數(shù)據(jù)通過專用總線通道②送人PRP,DMA通道①被內(nèi)部邏輯控制器關(guān)斷。因此在CSI和PRP的驅(qū)動程序中,CSI和PRP的初始化代碼應(yīng)作如下修改:
CSI初始化:
* (uint32_t *)GPIOB_GIUS = ~0x3FFC00; //關(guān)斷DMA通道
*(uint32_t *) CSI_CSICR1 |= 0x2; //圖像數(shù)據(jù)上升沿觸發(fā)
*(uint32_t *) CSI_CSICR1 |= 0x80; //大端格式
*(uint32_t *) CSI_CSICR1 |= 0x10000000; //PRP使能
PRP初始化:
*(uint32_t *)CRM_PCCR0 |= 0x8008000; //PRP時鐘使能
*(uint32_t *)EMMA_PRP_CNTL |=0x10000; //PRP復(fù)位
*(uint32_t *)EMMA_PRP_INTRCTRL = 0x00000000; //關(guān)中斷
*(uint32_t *)EMMA_PRP_SPIX_FMT = 0x2CA00565; //RGB565格式數(shù)據(jù)輸入
*(uint32_t *)EMMA_PRP_SFRM_SIZE = 0x028001E0; //輸入圖像窗體為640 x 480
*(uint32_t *)EMMA_PRP_DISIZE_CH1=0 x028001E0; //輸出圖像窗體為640 x 480
*(uint32_t *)EMMA_PRP_DPIX_FMT = 0x2CA00565; //RGB565格式數(shù)據(jù)輸出
*(uint32_t *)EMMA_PRP_DLST_CH1 = 0x00000280; //行步為640
本設(shè)計初始安裝分辨率為640 x 480的LCD.如上設(shè)置初始化后,圖像數(shù)據(jù)將由CSI RxFIFO進入PRP處理。為了使上層用戶在不改變設(shè)備文件的前提下,直接利用CSI設(shè)備文件描述符,采用如下代碼將CSI設(shè)備文件的虛擬地址映射為PRP輸出的物理地址,用戶就可以直接從CSI設(shè)備文件中讀取經(jīng)PRP處理后的圖像數(shù)據(jù)。
if ((csi_data_buf = (U32 *)__get_free_pages(GFP_KERNEL, 8))) {
prp_buf_phy_addr = virt_to_phys((void *) csi_data_buf);
printk(Buffer start: 0x%08x, PRP addr: 0x%08x , (int) csi_data_buf, (int)prp_buf_phy_addr);
} else {
printk (ERROR: cannot allocate buffer memory for driver ! );
return -1; }
通過如上驅(qū)動程序的修改,用戶就可以編寫應(yīng)用程序?qū)崿F(xiàn)對PRP處理后的圖像數(shù)據(jù)進行送顯和存儲。應(yīng)用程序的程序概圖如圖5所示:
5 測試結(jié)果
本文設(shè)計的控制系統(tǒng)經(jīng)測試,診斷圖像實時顯示的幀率可以達(dá)到20‰,大于便攜式B超圖像10幀/s的幀率要求.且LCD觀察圖像畫面清晰。采用RGB565格式的標(biāo)準(zhǔn)位圖保存診斷圖像信息,每張圖片的數(shù)據(jù)大小為:
640 * 480 * (5+6+5)/8=614400 bytes
使用1G的SD卡作為外部存儲設(shè)備,可以存儲1747張診斷圖片。完全滿足便攜式診斷設(shè)備的要求和實際診斷情況的需要。
6 結(jié)論
本設(shè)計采用ARM9E為核心的Freescale i.MX21芯片作為便攜式超聲診斷儀中央處理器,利用其內(nèi)置的CMOS圖像傳感器通道,將超聲圖像采集模塊輸入的圖像信息實時的顯示出來,并根據(jù)需要對顯示的圖像進行保存。經(jīng)測試,該控制系統(tǒng)工作穩(wěn)定可靠,滿足了常規(guī)的診斷需要,具有較高的實用價值。
本文作者創(chuàng)新點:本文采用的專用高速CMOS圖像傳輸通道將超聲診斷圖像輸入控制系統(tǒng)并進行處理。在軟硬件都滿足需求的基礎(chǔ)上給出了詳細(xì)的設(shè)計實現(xiàn),說設(shè)計的系統(tǒng)在診斷圖像的顯示幀率、顯示畫面清晰度方面都達(dá)到了很好的效果。為同類系統(tǒng)設(shè)計、升級和改進打下了良好的基礎(chǔ)。
本項目產(chǎn)業(yè)化后投入市場,年經(jīng)濟效益可達(dá) 1000 萬元。
評論