王小東, 趙仁宏
(濰坊醫(yī)學(xué)院, 山東 濰坊 261053)
醫(yī)學(xué)影像在現(xiàn)代醫(yī)療診斷中具有重要的作用,許多疾病的早期診斷與確診都離不開醫(yī)學(xué)影像數(shù)據(jù)。醫(yī)學(xué)影像的邊緣蘊(yùn)含重要的診斷信息,因此如何得到更準(zhǔn)確的圖像邊緣對于疾病的早期診斷至關(guān)重要[1]。醫(yī)學(xué)圖像邊緣提取算法有很多種,常見的有roberts算子、prewit算子、sobel算子以及Kirsch算子等[2]。這些算子的運(yùn)算方法不同,處理效果各異。其中Kirsch算子運(yùn)算過程最為復(fù)雜,但處理效果最為精確。
Kirsch算子是Kirsch[3]提出來的,它是目前 邊緣檢測算法中運(yùn)算過程最復(fù)雜的。它采用8個(gè)方向的3×3模板與圖像進(jìn)行卷積,可以同時(shí)檢測8個(gè)方向的邊緣,并取最大值作為圖像的邊緣輸出。不同于其他算子,Kirsch算子檢測的邊緣方向是最多的,因此在保持細(xì)節(jié)和抗噪聲方面都有較好的效果,只是運(yùn)算過程較復(fù)雜。3×3模板如圖1所示。
圖1 3×3區(qū)域的像素亮度值Pixel brightness value for 3×3 area
對于任意像素點(diǎn)p來說,在p點(diǎn)周圍8個(gè)像素點(diǎn)的像素分別為a0、a1……a7,則Kirsch算子可表示如式(1)[4]。
(1)
從運(yùn)算過程可知,Kirsch算子運(yùn)算過程復(fù)雜,需要同時(shí)進(jìn)行8個(gè)方向的卷積運(yùn)算,并比較最大值。因此所需的運(yùn)算量較大,影響運(yùn)算速度,同時(shí)給設(shè)備增加了負(fù)擔(dān)[5]。
Kirsch算子的實(shí)現(xiàn)有兩種方式,一種是軟件方式,一種是硬件方式[6]。由Kirsch算子的運(yùn)算公式可知,軟件實(shí)現(xiàn)方式需要同時(shí)計(jì)算出8個(gè)方向的結(jié)果后再進(jìn)行比較得到最大值,將會大大影響運(yùn)算速度,不能實(shí)時(shí)處理。因此軟件方式實(shí)現(xiàn)起來運(yùn)算效率較低。FPGA器件具有可并行運(yùn)算、可集成化等特點(diǎn),適合于進(jìn)行并行運(yùn)算,而且運(yùn)算速度較快[7,8]。因此可以采用FPGA器件進(jìn)行編程設(shè)計(jì),對Kirsch算子進(jìn)行硬件實(shí)現(xiàn),在同一時(shí)間進(jìn)行8次并行運(yùn)算,然后采用比較器進(jìn)行比較。程序總體設(shè)計(jì)流程表述如下:
1)同時(shí)計(jì)算8個(gè)方向的亮度卷積值;
2)將數(shù)據(jù)兩兩分組比較大小,只保留較大的值;
3)將第一輪比較的4個(gè)值再兩兩分組進(jìn)行比較,得到2個(gè)較大值。再進(jìn)行最終比較,得到最后的最大值。
整體程序流程圖如圖2所示。
圖2 程序總體設(shè)計(jì)流程圖Overall program flow chart
在對8個(gè)數(shù)據(jù)進(jìn)行比較的過程中,為了進(jìn)一步提高運(yùn)算效率,可以采用三步走的方式,即先對8個(gè)數(shù)據(jù)進(jìn)行兩兩分組,分成4組,進(jìn)行第一步比較,得到4個(gè)較大值;然后再對這4個(gè)數(shù)據(jù)進(jìn)行兩兩分組,比較后得到2個(gè)最大值;最后再進(jìn)行最終比較,得到最終的最大值。這樣一共用了3個(gè)時(shí)鐘得到最大值,比起8個(gè)數(shù)據(jù)依次比較得到最大值可以節(jié)省4個(gè)時(shí)鐘,因此可以大大提高運(yùn)算效率,使圖像邊緣提取能夠?qū)崟r(shí)處理。比較器運(yùn)算流程如圖3所示。
圖3 比較器運(yùn)算流程圖Comparator operation flow chart
將Kirsch算法以及分步比較方法采用veri-log語言進(jìn)行編程實(shí)現(xiàn)[9],并下載到QuartusⅡ軟件中用modelsim軟件進(jìn)行仿真驗(yàn)證,得到仿真圖如圖4所示。驗(yàn)證無誤后將程序下載到FPGA芯片中進(jìn)行硬件實(shí)現(xiàn),并將芯片嵌入到醫(yī)學(xué)影像學(xué)設(shè)備中,選擇一幅醫(yī)學(xué)圖像進(jìn)行邊緣提取處理,得到最終結(jié)果如圖所示,圖5為原始圖像,圖6為處理后的圖像。通過對實(shí)驗(yàn)結(jié)果進(jìn)行分析,表明該芯片邊緣提取處理算法效果準(zhǔn)確清晰,運(yùn)算速度較快,能夠?qū)︶t(yī)學(xué)影像進(jìn)行實(shí)時(shí)的圖像分割邊緣提取處理,并可以下載到FPGA芯片平臺中進(jìn)行實(shí)現(xiàn),可為醫(yī)學(xué)診斷提供重要的邊緣數(shù)據(jù)[10]。
圖4 modelsim仿真圖 Modelsim simulation image
圖5 原始圖像Original image
圖6 邊緣提取圖像Edge extraction image
本文設(shè)計(jì)了一種利用FPGA器件進(jìn)行圖像邊緣提取實(shí)現(xiàn)的優(yōu)化算法,對Kirsch算子運(yùn)算過程進(jìn)行了優(yōu)化,利用FPGA器件的并行處理能力,并在比較運(yùn)算中采用分步比較的方式,節(jié)省了運(yùn)算量,提高了運(yùn)算速度。最后,將算法編程實(shí)現(xiàn)后在QuartusⅡ平臺上進(jìn)行了仿真驗(yàn)證,結(jié)果表明可以得到實(shí)時(shí)處理后的準(zhǔn)確清晰的醫(yī)學(xué)邊緣圖像,證實(shí)了該算法的準(zhǔn)確性與可行性。