影像科学与光化学  2019, Vol. 37 Issue (4): 332-335  DOI: 10.7517/issn.1674-0475.190401   PDF    
基于Kirsch算子图像分割的FPGA设计与实现
王小东, 赵仁宏     
潍坊医学院, 山东 潍坊 261053
摘要: 医学影像是医疗诊断的重要手段。在一些疾病的早期诊断过程中,组织的边缘信息代表重要的特征数据,对疾病的确诊起着至关重要的作用。因此对医学影像进行准确清晰的图像分割对医疗诊断的准确性具有重要的促进作用。本文采用Kirsch算子对医学影像进行图像分割获得组织边缘。为了提高运算速度和分割效率,采用具有并行运算能力的FPGA器件进行设计实现。最后在QuartusⅡ平台上进行了仿真验证,得到了精确的图像边缘。
关键词: 图像分割    Kirsch    FPGA    
Design and Implementation of FPGA Based on Kirsch Operator Image Segmentation
WANG Xiaodong, ZHAO Renhong     
Weifang Medical College, Weifang 261053, Shandong, P. R. China
*Corresponding author: ZHAO Renhong, E-mail: zhaorh@163.com
Abstract: Medical imaging is an important means of medical diagnosis. In the early diagnosis of some diseases, tissue information represents important characteristic data and plays a crucial role in the diagnosis of diseases. Therefore, accurate and clear image segmentation of medical images has a great effect on the accuracy of medical diagnosis. In order to improve the efficiency and speed of computing, this ariticle use FPGA devices with parallel computing power to extract image edges. Finally, the simulation on the Quartus platform has been done and the precise image edges are obtained.
Key words: image segmentation    Kirsch    FPGA    

医学影像在现代医疗诊断中具有重要的作用,许多疾病的早期诊断与确诊都离不开医学影像数据。医学影像的边缘蕴含重要的诊断信息,因此如何得到更准确的图像边缘对于疾病的早期诊断至关重要[1]。医学图像边缘提取算法有很多种,常见的有roberts算子、prewit算子、sobel算子以及Kirsch算子等[2]。这些算子的运算方法不同,处理效果各异。其中Kirsch算子运算过程最为复杂,但处理效果最为精确。

1 Kirsch算子

Kirsch算子是Kirsch[3]提出来的,它是目前边缘检测算法中运算过程最复杂的。它采用8个方向的3×3模板与图像进行卷积,可以同时检测8个方向的边缘,并取最大值作为图像的边缘输出。不同于其他算子,Kirsch算子检测的边缘方向是最多的,因此在保持细节和抗噪声方面都有较好的效果,只是运算过程较复杂。3×3模板如图 1所示。

图 1 3×3区域的像素亮度值 Pixel brightness value for 3×3 area

对于任意像素点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所示。

图 2 程序总体设计流程图 Overall program flow chart

在对8个数据进行比较的过程中,为了进一步提高运算效率,可以采用三步走的方式,即先对8个数据进行两两分组,分成4组,进行第一步比较,得到4个较大值;然后再对这4个数据进行两两分组,比较后得到2个最大值;最后再进行最终比较,得到最终的最大值。这样一共用了3个时钟得到最大值,比起8个数据依次比较得到最大值可以节省4个时钟,因此可以大大提高运算效率,使图像边缘提取能够实时处理。比较器运算流程如图 3所示。

图 3 比较器运算流程图 Comparator operation flow chart
3 仿真验证

将Kirsch算法以及分步比较方法采用veri-log语言进行编程实现[9],并下载到QuartusⅡ软件中用modelsim软件进行仿真验证,得到仿真图如图 4所示。验证无误后将程序下载到FPGA芯片中进行硬件实现,并将芯片嵌入到医学影像学设备中,选择一幅医学图像进行边缘提取处理,得到最终结果如图所示, 图 5为原始图像,图 6为处理后的图像。通过对实验结果进行分析,表明该芯片边缘提取处理算法效果准确清晰,运算速度较快,能够对医学影像进行实时的图像分割边缘提取处理,并可以下载到FPGA芯片平台中进行实现,可为医学诊断提供重要的边缘数据[10]

图 4 modelsim仿真图 Modelsim simulation image

图 5 原始图像 Original image

图 6 边缘提取图像 Edge extraction image
4 结论

本文设计了一种利用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.