基于双边滤波的改进型Canny算法边缘检测冠状动脉CT图像

<--!(源码资源****有常(注意目前是有常哦)私我vx:xdsqczkyqs713**,**仅源码80r,带
一份两万字论文讲解100r报告仅供参考,可以就着写,节省时间,但宝儿你可千万别傻乎乎的直接
拿去上交鸭! **非诚勿扰/<->认真脸**)-->

基于双边滤波的改进型Canny算法边缘检测冠状动脉CT图像_第1张图片

基于双边滤波的改进型Canny算法边缘检测冠状动脉CT图像_第2张图片

先上一个效果对比图,说明本文大概意图:
左上至右下四张图片以此为原图,canny算法边缘,原图双边滤波效果以及改进型Canny算法边缘。可以看出双边滤波在平滑图像的同时,对图像原本的边缘没有影响,因此利用双边滤波的改进型canny算法可以检测到更多的图像边缘(图中鼻子部分),同时对图像内部的纹理(假边缘)平滑效果更好,(图像肩膀内部)。
基于双边滤波的改进型Canny算法边缘检测冠状动脉CT图像_第3张图片
对图像内部纹理的平滑在冠状动脉图片中表现更加明显,原始canny虽然能够实现图像边缘检测的效果,但是同时检测到大量的内部假边缘,而改进型canny算法得到的结果则更加符合预期,轮廓边缘检测完整,内部纹理平滑抑制明显。

基于双边滤波的改进型Canny算法边缘检测冠状动脉CT图像_第4张图片

在图像边缘检测领域,与传统边缘检测算法相比,Canny算法在解决抑制噪声与保留边缘上效果更好,但在保留边缘细节和减少伪边缘方面仍存在不足。针对这些问题,本文提出一种改进型Canny算子边缘检测算法,采用具有在去噪的同时保持边缘特性的双边滤波器代替高斯滤波器对图像平滑,并结合冠状动脉CT图像的特点,在传统Canny算法的非极大值抑制和阈值选取方面做出改进,增强其对冠状动脉CT图像处理的适应性。在MATLAB平台上与传统Canny算法边缘检测效果进行对比,实验结果表明,本文提出的方法在冠状动脉CT图像的边缘检测处理效果上更好。

边缘概述

边缘是图像中像素值发生剧烈变化而不连续的结果,它存在于目标与背景、目标与目标、区域与区域之间。图像边缘是图像最基本的特征,边缘反映了图像局部强度特性的不连续性。强度变化有这两种情况:阶跃变化和屋顶变化。

基于双边滤波的改进型Canny算法边缘检测冠状动脉CT图像_第5张图片
图像的边缘检测技术的实质是采用某种算法来提取出图像中对象与背景间的交界线。边缘部分就是图像中强度容易产生剧烈变化的像素点的集合。然而图像的边缘检测技术就能够大幅度地减少数据量,并且进一步地剔除了计算机可以认为不相关的信息,只保留了图像中重要的组织结构属性。边缘检测的一般步骤有:
1.滤波:边缘检测的算法是要基于图像强度的一阶导数和二阶导数求取,但是一般情况下导数通常会对噪声及其敏感,因此通常会采用滤波器去改善增强与噪声有关的边缘检测器的性能,达到平滑噪声的目的;
2.增强:边缘能够增强的基础是首先将图像中各点邻域的变化值确定,然后再将图像的灰度点强度值有明显变化的像素点增强,利用阈值化对这些像素带点进行取舍,区分梯度幅值较为显著的像素点,最后判断该点究竟是不是属于图像的边缘部分。
图像的边缘有方向和幅度两种属性。边缘通常可以通过一阶导数或二阶导数检测得到。一阶导数是以最大值作为对应的边缘的位置,而二阶导数则以过零点作为对应边缘的位置。
图像的边缘部分就是图像局部强度变化最明显的地方,它是图像特征提取和图像分割识别的关键之处。因此,研究图像边缘检测算子是数字图像处理技术十分重要的部分,在经典的边缘检测算法中Roberts算子,Prewitt算子,Sobel算子属于一阶差分算子,Log算子,Canny算子属于二阶差分算子。一阶差分算子,就是求图像灰度变化曲线的导数,从而可以突出图像中的对象边缘,而二阶差分算子,求图像灰度变化导数的导数,对图像中灰度变化强烈的地方很敏感,从而可以突出图像的纹理结构。即一阶导数对强边缘具有很高的识别度,二阶导数不仅检测出强边缘边缘还可检测出弱边缘(纹理)。

边缘检测算子

除了Canny算法,其他算子的算法见这篇

Canny算法实现见这篇(附源代码)

边缘检测预处理----图像滤波

图像滤波是非常常见且必要的图像预处理方式,由于图像采集设备的成像技术有限,原始图像都包含一些视觉噪音。噪声的存在使图像具有斑驳,颗粒状,纹理或雪花的外观。如下面两幅图像所示第一张图是左旋支动脉血管,图中的血管在根部有一定程度的狭窄;第二张图是右冠状动脉,狭窄程度良好。两幅CT图像的连续区域均有一些纹理状的噪声,一些区域包含小的颗粒状的离散噪点,如下图所示。

基于双边滤波的改进型Canny算法边缘检测冠状动脉CT图像_第6张图片
内部连续区域的纹理在边缘检测中有被识别为伪边缘的风险,而离散噪点也会干扰到边缘检测的准确性,这就需要对图像进行一定的平滑滤波处理以减小这些缺陷带来的影响,对滤波处理的要求有两条:一是不能损坏图像轮廓及边缘等重要信息;二是使图像清晰,视觉效果好。常见的图像滤波算法有均值滤波、方框滤波、中值滤波和高斯滤波等。
这些滤波方法网络上总结很多,代码也比较简单,这里不多赘述,贴一个别人的帖子的总结

双边滤波

双边滤波(Bilateral Filters)是一种非线性滤波器,它可以达到保持边缘、降噪平滑的效果。双边滤波是在高斯滤波的基础上改进而来,一般的高斯模糊在进行采样时主要考虑了像素间的空间距离关系,但是却并没有考虑像素值之间的相似程度,因此这样我们得到的模糊结果通常是整张图片一团模糊。双边滤波的改进就在于在采样时不仅考虑像素在空间距离上的关系,同时加入了像素间的相似程度考虑,因而可以保持原始图像的大体分块进而保持边缘。
基于双边滤波的改进型Canny算法边缘检测冠状动脉CT图像_第7张图片
从图中可以看出双边滤波加入了相似程度分部以后可以将源图像左侧那些跟当前像素差值过大的点给滤去,这样就很好地保持了边缘。为了更加形象地观察两者间的区别,使用Matlab将该图在两种不同方式下的梯度图3D绘制出来,如下:
基于双边滤波的改进型Canny算法边缘检测冠状动脉CT图像_第8张图片
上述三图从左到右依次为:双边滤波,原始图像,高斯滤波。从高度图中可以明显看出双边滤波和高斯滤波两种方法的区别,前者较好地保持了边缘处的梯度,而在高斯滤波中,由于其在边缘处的变化是线性的,因而就使用连累的梯度呈现出渐变的状态,而这表现在图像中的话就是边界的丢失。因此相对于高斯滤波,双边滤波平滑效果在边缘保持上效果更佳,更加适合用作边缘检测的预处理来平滑噪声。

改进型Canny算法自适应阈值设置

Canny算法实现见这篇(附源代码)
这里希望先能明白Canny算法的原理,方便理解下边的改进思路:
Canny算法的第三步非极大值抑制,是Canny算法能够比其他经典的边缘检测算法得到更加细腻,更加精准的边缘位置的核心所在,然而Canny算法的进行非极大值抑制时采用的双阀值是全局固定的,即阈值等于图像中的最大像素值与阈值系数相乘,一般取高阈值系数为0.3或0.2,而低阈值系数为0.1。这是一种经验参数,阀值的确定仍然很难决定一个最优值。
针对此本文采用了一种局部自适应阈值的设置方法。改进的局部阈值自适应的图像边缘检测算法的具体处理方式如下:对于一幅M×N数字图像,产生一个在数字图像里进行平滑移动的3×3矩阵,通过计算图像中平滑移动的3×3矩阵内的像素点灰度平均值作为自适应阈值,其计算公式如式(3-7)所示,由于3×3矩阵领域是随着图像像素进行平滑移动,所以3×3矩阵中的图像像素灰度值是不断地变化着,从而阈值也不断地变化,并且每个阈值都是根据该3x3矩阵中的平均值与该3×3矩阵中心点的梯度幅度值进行比较,如果计算的中心像素点的梯值小于自适应的阈值的一半,那么该点不是边缘点,即输出的值是0,如果计算的中心像素点的梯度幅度值大于自适应的阈值Threshold,那么该点就是边缘点,即输出的值是1,如果计算的中心像素点的梯度幅度值介于0.5*Threshold 与 Threshold之间,如果前一个中心像素点是边缘点,那么该点也是边缘点,即输出的值是1,否则不是边缘点,输出的值是0。
具体阈值计算的公式如下:
基于双边滤波的改进型Canny算法边缘检测冠状动脉CT图像_第9张图片

你可能感兴趣的:(数字图像处理,图像处理)