医学影像在现代医疗诊断中具有重要的作用,许多疾病的早期诊断与确诊都离不开医学影像数据。医学影像的边缘蕴含重要的诊断信息,因此如何得到更准确的图像边缘对于疾病的早期诊断至关重要[1]。医学图像边缘提取算法有很多种,常见的有roberts算子、prewit算子、sobel算子以及Kirsch算子等[2]。这些算子的运算方法不同,处理效果各异。其中Kirsch算子运算过程最为复杂,但处理效果最为精确。
1 Kirsch算子Kirsch算子是Kirsch[3]提出来的,它是目前边缘检测算法中运算过程最复杂的。它采用8个方向的3×3模板与图像进行卷积,可以同时检测8个方向的边缘,并取最大值作为图像的边缘输出。不同于其他算子,Kirsch算子检测的边缘方向是最多的,因此在保持细节和抗噪声方面都有较好的效果,只是运算过程较复杂。3×3模板如图 1所示。
对于任意像素点p来说,在p点周围8个像素点的像素分别为a0、a1……a7, 则Kirsch算子可表示如式(1)[4]。
(1) |
从运算过程可知,Kirsch算子运算过程复杂,需要同时进行8个方向的卷积运算,并比较最大值。因此所需的运算量较大,影响运算速度,同时给设备增加了负担[5]。
2 FPGA编程设计Kirsch算子的实现有两种方式,一种是软件方式,一种是硬件方式[6]。由Kirsch算子的运算公式可知,软件实现方式需要同时计算出8个方向的结果后再进行比较得到最大值,将会大大影响运算速度,不能实时处理。因此软件方式实现起来运算效率较低。FPGA器件具有可并行运算、可集成化等特点,适合于进行并行运算,而且运算速度较快[7, 8]。因此可以采用FPGA器件进行编程设计,对Kirsch算子进行硬件实现,在同一时间进行8次并行运算,然后采用比较器进行比较。程序总体设计流程表述如下:
1) 同时计算8个方向的亮度卷积值;
2) 将数据两两分组比较大小,只保留较大的值;
3) 将第一轮比较的4个值再两两分组进行比较,得到2个较大值。再进行最终比较,得到最后的最大值。
整体程序流程图如图 2所示。
在对8个数据进行比较的过程中,为了进一步提高运算效率,可以采用三步走的方式,即先对8个数据进行两两分组,分成4组,进行第一步比较,得到4个较大值;然后再对这4个数据进行两两分组,比较后得到2个最大值;最后再进行最终比较,得到最终的最大值。这样一共用了3个时钟得到最大值,比起8个数据依次比较得到最大值可以节省4个时钟,因此可以大大提高运算效率,使图像边缘提取能够实时处理。比较器运算流程如图 3所示。
将Kirsch算法以及分步比较方法采用veri-log语言进行编程实现[9],并下载到QuartusⅡ软件中用modelsim软件进行仿真验证,得到仿真图如图 4所示。验证无误后将程序下载到FPGA芯片中进行硬件实现,并将芯片嵌入到医学影像学设备中,选择一幅医学图像进行边缘提取处理,得到最终结果如图所示, 图 5为原始图像,图 6为处理后的图像。通过对实验结果进行分析,表明该芯片边缘提取处理算法效果准确清晰,运算速度较快,能够对医学影像进行实时的图像分割边缘提取处理,并可以下载到FPGA芯片平台中进行实现,可为医学诊断提供重要的边缘数据[10]。
本文设计了一种利用FPGA器件进行图像边缘提取实现的优化算法,对Kirsch算子运算过程进行了优化,利用FPGA器件的并行处理能力,并在比较运算中采用分步比较的方式,节省了运算量,提高了运算速度。最后,将算法编程实现后在QuartusⅡ平台上进行了仿真验证,结果表明可以得到实时处理后的准确清晰的医学边缘图像,证实了该算法的准确性与可行性。
[1] |
施国勇. 数字信号处理FPGA电路设计[M]. 高等教育出版社, 2010: 112-115. Shi G Y. Digital Signal Processing Based on FPGA Circuit Design[M]. Beijing: Higher Education Press, 2010: 112-115. |
[2] |
包晗. FPGA器件的应用研究[D].大连: 大连海事大学, 2006. Bao H. Research on the application of FPGA devices[D]. Dalian: Dalian Maritime University, 2006. |
[3] |
Kirsch R. Computer determination of the constituent structure of biological images[J]. Computers and Biological Sciences, 1980, 207(1167): 187-217. |
[4] |
郑翔, 黄艺云. Kirsch边缘检测算子的快速算法[J]. 通讯学报, 1996, 17(1): 131-134. Zheng X, Huang Y Y. Kirsch's fast algorithm for edge detection operators[J]. Journal of China Institute of Communications, 1996, 17(1): 131-134. |
[5] |
康牧. Canny思想和Kirsch算法相结合的边缘检测算法[J]. 河南大学学报(自然科学版), 2017(1): 76-81. Kang M. Combination of Canny's thought and Kirsch's algorithm based on edge detection algorithm[J]. Journal of Henan University (Natural Science Edition), 2017(1): 76-81. |
[6] |
朱枫. 基于FPGA的Kirsch算法实时图像处理研究[J]. 安徽大学学报, 2015(4): 53-57. Zhu F. Research on real-time image processing of Kirsch algorithm based on FPGA[J]. Journal of Anhui University, 2015(4): 53-57. |
[7] |
姜勇. 基于FPGA的实时图像处理系统的研究[M]. 长春: 长春理工大学出版社, 2002: 141-144. Jiang Y. Research on Real Time Image Processing System Based on FPGA[M]. Changchun: Press of Changchun University, 2002: 141-144. |
[8] |
郭帅. 基于FPGA的高速图像处理研究[J]. 滤波技术, 2002(7): 56-59. Guo S. High speed image processing research based on FPGA[J]. Filtering technology, 2002(7): 56-59. |
[9] |
延明. FPGA在数字图像处理中的应用[J]. 电子技术, 2005(1): 32-35. Yan M. FPGA application in digital image processing[J]. Electronic Technology, 2005(1): 32-35. |
[10] |
李东玥. 一种新的Kirsch边缘检测算法[J]. 中国医学物理学杂志, 2017(7): 44-47. Li D Y. A new Kirsch edge detection algorithm[J]. Chinese Journal of Medical Physics, 2017(7): 44-47. |