发明内容
本发明的目的是提供基于方向加权中值滤波的超声图像处理方法,该处理方法在去噪的同时有效地保护了超声图像的边缘细节信息,而且本处理方法采用的基础算法是中值滤波,算法简单,时间复杂度低。
为达到上述目的,本发明采用了以下技术方案:基于方向加权中值滤波的超声图像处理方法,包括以下步骤:
(1)计算所述超声图像中每个像素点的边缘幅度和边缘方向;
(2)取所述图像中的一像素点作为当前点;
(3)根据所述当前点的边缘幅度或边缘方向判断该当前点是否为边缘点,如果不是边缘点,则对该当前点进行自适应加权中值滤波处理;如果是边缘点,则对该当前点进行下面步骤(4)(5)(6)的处理;
(4)取该当前点的M*N邻域,选择该M*N邻域中与该当前点的边缘方向相关的点作为处理点;
(5)取所述处理点的像素值和边缘幅度值,对所述处理点的像素值用相应的边缘幅度值加权,对加权后的值进行排序,找出中间值;
(6)用所述中间值对应的像素值替换该当前点的像素值;
(7)取下一个像素点作为当前点进行步骤(3)的处理,直到处理完所述图像中的所有像素点,最后输出处理后的图像。
步骤(1)的一种具体实施方式,所述像素点的边缘幅度和边缘方向的计算方法包括:
(1a)计算该像素点的水平方向和垂直方向的梯度,设定该像素点的位置为(i,j),该像素点的像素值为I(i,j),则该像素点的水平方向的梯度Gx(i,j)、垂直方向的梯度Gy(i,j)的计算方式如下:
Gx(i,j)=I(i,j+1)-I(i,j-1) Gy(i,j)=I(i+1,j)-I(i-1,j);
(1b)计算该像素点的梯度幅度GradientAm和梯度方向GradientAn,计算方式如下:
GradientAn=atan(Gy/Gx)
(1c)判断该像素点的梯度幅度GradientAm是否大于预先设定的阈值,如果该梯度幅度GradientAm大于或等于所述阈值,则取该梯度幅度GradientAm、该梯度方向GradientAn为该像素点的边缘幅度和边缘方向,表示该像素点为边缘点;如果该梯度幅度GradientAm小于所述阈值,则设定该像素点的边缘幅度和边缘方向均为负值,表示该像素点不是边缘点。
步骤(1)的另一种具体实施方式,所述像素点的边缘幅度和边缘方向的计算方法包括:
(1a)选取不同方向的边缘检测算子;
(1b)将每个方向的边缘检测算子中的数值与该像素点的邻域中的对应像素值相乘后求和,求和后取绝对值作为输出值;
(1c)在不同方向的输出值中,将最大值减去最小值得差值,如果该差值大于或等于预先设定的阈值,则取所述不同方向的输出值中的最大值为该像素点的边缘幅度值,取该最大值对应的边缘检测算子的方向为该像素点的边缘方向,表示该像素点为边缘点;如果该差值小于所述阈值,则设定该像素点的边缘幅度和边缘方向均为负值,表示该像素点不是边缘点。
步骤(4)的第一种具体实施方式,从所述M*N邻域中选择与所述当前点的边缘方向相关的点作为处理点的方法包括:
(4a)选取不同方向的取点模板;
(4b)从所述不同方向的取点模板中,取与所述当前点的边缘方向最接近的方向对应的取点模板;
(4c)在所述M*N邻域中,取被所述最接近的方向对应的取点模板击中的点作为处理点。
步骤(4)的第二种具体实施方式,从所述M*N邻域中,选择边缘方向与所述当前点的边缘方向的差值小于预先设定的阈值的点作为处理点。
步骤(5)具体实施时,所述处理点的像素值用相应的边缘幅度值进行加权处理指得是该像素值与相应的边缘幅度值进行相乘处理。
由于上述技术方案的运用,本发明与现有技术相比具有下列优点:本发明的基于方向加权中值滤波的超声图像处理方法,在中值滤波的基础上,考虑了图像的边缘方向和边缘幅度信息,针对某个具体的当前像素点,只选取邻域窗口中与当前点边缘方向相近的点做中值滤波,而且中值的排序选取是在用边缘幅度加权后的像素值上进行的,本发明的方法能够很好的区分超声图像的噪声和边缘信息,使得在去噪的同时有效地保护了超声图像的边缘细节信息,更加有利于后期的诊断与分析。而且本发明采用的基础算法是中值滤波,算法简单,时间复杂度低,处理耗时少,更加符合超声成像***实时处理显示图像的要求。
具体实施方式
下面结合附图来进一步阐述本发明。
本发明提出了一种方向加权中值滤波算法,该算法的基本思路如图1所示,以超声图像为背景,在中值滤波的基础上,考虑了图像的边缘方向和边缘幅度信息,针对某个具体的当前点,只选取滤波窗口中与当前点边缘方向相近的点做中值滤波,而且中值的排序选取是在用边缘幅度加权后的像素值上进行的。方向加权中值滤波算法考虑到边缘不同于背景,其灰度分布存在明显的差异,而且这种差异具有方向性,因此采用边缘幅度和边缘方向结合的方法。
基于方向加权中值滤波算法,用于超声图像的去噪和增强。该算法的流程图参见图1,首先计算图像I中每个像素点的边缘幅度和边缘方向;然后在此基础上,逐点处理,针对每一像素点,根据边缘方向选择其M*N邻域中方向相关的点作为处理点;最后,针对邻域中选出的处理点,用边缘幅度进行加权中值滤波处理。在导入超声图像数据后,主要包括以下步骤:
(1)计算超声图像中每个像素点的边缘幅度EdgeAm和边缘方向EdgeAn;
(2)取图像中的一像素点作为当前点;
(3)根据当前点的边缘幅度或边缘方向判断该当前点是否为边缘点,如果不是边缘点,则对该当前点进行自适应加权中值滤波处理,该自适应加权中值滤波处理的方法采用的是现有技术,具体参见“背景技术”;如果是边缘点,则对该当前点进行下面步骤(4)(5)(6)的处理;
(4)取该当前点的M*N邻域,选择该M*N邻域中与该当前点的边缘方向相关的点作为处理点;
(5)取上述处理点的像素值和边缘幅度值,对处理点的像素值用相应的边缘幅度值加权,对加权后的值进行排序,找出中间值;
(6)用上述中间值对应的像素值替换当前点的像素值;
(7)取下一个像素点作为当前点进行步骤(3)的处理,直到处理完图像中的所有像素点,最后输出处理后的图像。
该算法中,通过边缘幅度控制减少了噪声对中值滤波的影响,边缘方向信息的加入又使得该算法对边缘方向特别敏感,保留细节能力强,减少了边缘模糊的程度。因此,这种改进的中值滤波算法,在去除散斑噪声能力、保持边缘能力以及处理速度等指标上均取得了比较好的效果。
上述算法中,步骤(1)计算图像I中每点的边缘幅度和方向,有很多种方法能够实现。这里给出两种具体的实施方法:1.通过图像的梯度幅度和方向得到图像的边缘幅度和方向;2.用不同方向的边缘检测算子得到图像的边缘幅度和方向。但不仅限于这两种方法。
方法1:通过图像的梯度幅度和方向得到图像的边缘幅度和方向的方法,其流程图参见图2。首先,根据水平方向的梯度Gx(i,j)和垂直方向的梯度Gy(i,j)计算图像的梯度幅度GradientAm和梯度方向GraditenAn,计算方式如下:
设定图像像素点的位置为(i,j),该像素点的像素值为I(i,j),则该像素点的Gx(i,j)、Gy(i,j):
Gx(i,j)=I(i,j+1)-I(i,j-1) Gy(i,j)=I(i+1,j)-I(i-1,j)
则该像素点的梯度幅度GradientAm和梯度方向GraditenAn:
GradientAn=atan(Gy/Gx)
其次,判断该像素点的梯度幅度值是否大于预先设定的阈值GradientAmThresh。如果大于或等于阈值,则表示该像素点为边缘点,把梯度幅度看作是边缘幅度,梯度方向看作是边缘方向;如果小于阈值,则认为无边缘(表示该像素点不是边缘点),把边缘幅度和方向都设成负值(比如-1),以便在后面处理中区分像素点是否为边缘点。即:
对图像I的所有像素点逐点进行上述处理,则得到每个像素点的边缘幅度EdgeAm和边缘方向EdgeAn。
方法2:通过不同方向的边缘检测算子得到图像边缘幅度和方向的方法,参见图3,首先选取一组有不同方向的边缘检测算子;其次把这组算子分别作用于图像上的一像素点的邻域上,得到每个方向上算子的输出;比较各个方向上的输出,如果差别比较大,选取最大的输出作为当前像素点的边缘幅度,最大输出对应的算子的方向为边缘方向;如果差别不大,则认为当前像素点不是边缘点。
举例说明,选取如图5所示的四个方向(90度,0度,45度,135度)上的边缘检测算子,使用该组边缘检测算子计算图像上每点的边缘幅度和方向,参见图3,首先,针对图像中的一像素点(i,j),取如图4所示的2*2邻域上的点;然后,把图5所示的四个方向的边缘检测算子分别作用于图4的2*2邻域,取每个算子模板与邻域模板中的对应数值相乘后求和的绝对值,作为输出值0peratorAm=[am90,am0,am45,am135],相应的方向0peratorAn=[90,0,45,135];接着,比较四个方向上的输出值,如果差别比较大,也就是四个方向的输出值中最大值减去最小值的差大于或等于预先设定的阈值0peratorAmThresh,则表示该像素点为边缘点,当前像素点(i,j)的边缘幅度为输出的最大值,边缘方向为最大值对应的边缘检测算子的方向,假设输出的最大值为am45,则边缘幅度为am45,边缘方向为45。如果输出差别很小,也就是最大值减去最小值的差小于阈值,则认为无边缘(表示当前像素点不是边缘点),当前像素点的边缘幅度和方向都设成负值(比如-1)。用公式表示如下:
其中,index为max(OperatorAm)对应的序号。
对图像的所有像素点都按照上述步骤处理,就能得到每个像素点的边缘幅度EdgeAm和方向EdgeAn。
上述基于方向加权中值滤波算法的步骤(4)中,如何选择M*N邻域中与当前点(i,j)的边缘方向相关的点作为处理点,这里也给出了两种具体实现方法:1.以当前点的边缘方向为准,选择邻域中这个方向上的点为处理点;2.选择与当前点的边缘方向差小于预设阈值的点为处理点。但不仅限于这两种方法。
方法1:以当前点的边缘方向为准,选择邻域中这个方向上的点为处理点,方法1的流程图如图6所示。首先选取不同方向的取点模板,如图7,图7显示了四个方向(90度,0度,45度,135度)的取点模板,判断当前点(i,j)的边缘方向EdgeAn(i,j)与哪个方向(90度,0度,45度,135度)最接近,也就是说EdgeAn(i,j)落在如下哪个角度区间里面:[67.5,112.5],[0,22.5]U[157.5,180],[22.5,67.5],[112.5,157.5];然后,按照如下规则选取邻域中沿着这个方向上的点:
如果与90度最接近,也就是落在角度区间[67.5,112.5]中,选择图7中模板2a)或者2b)击中的点作为处理点;
如果与0度最接近,也就是落在区间[0,22.5]U[157.5,180]中,选择图7中模板3a)或者3b)击中的点作为处理点;
如果与45度最接近,也就是落在区间[22.5,67.5]中,选择图7中模板4a)或者4b)击中的点作为处理点;
如果与135度最接近,也就是落在区间[112.5,157.5]中,选择图7中模板5a)或者5b)击中的点作为处理点。
假设选出的处理点的个数为k,边缘幅值为
LocalEdgeAm=[ea1,ea2,ea3,…,eak],像素值为
LocalPixel=[p1,p2,p3,…,pk]。
需要说明的是,为了直观起见,图7中只给出了5*5大小的取点模板2a)-5a)或者2b)-5b),实际上这里的模板大小应该是M*N大小的。其中,2a)-5a)是针对边缘宽度是单点的情况下的取点模板,2b)-5b)是针对边缘宽度比较宽的情况下的取点模板。如果选择模板2a)-5a),容易出现误把噪声点增强,如果选择模板2b)-5b),容易把一些细小的边缘抹掉,所以要根据具体脏器的边缘宽窄情况,选择合适的取点模板。
方法2:选择与当前点(i,j)的边缘方向的差小于预设阈值的点为处理点,方法2的流程图如图8所示。在当前点(i,j)的邻域中的N*M个点中,选择边缘方向EdgeAn与当前点(i,j)边缘方向EdgeAn(i,j)的差小于设定的阈值EdgeAnThresh的点为处理点。假设选中的处理点有k个,它们的边缘幅度值为LocalEdgeAm=[ea1,ea2,ea3,…,eak],像素值为LocalPixel=[p1,p2,p3,…,pk]。
上述基于方向加权中值滤波算法中,步骤(5)(6)中涉及到的,在选出了处理点并拿到了它们的边缘幅度值和像素值后,进行加权中值滤波处理,首先,用边缘幅度对像素值加权,即:LEAP=[ea1*p1,ea2*p2,ea3*p3,…,eak*pk];其次,把加权后的值LEAP排序,取中间值median(LEPA)所对应的像素值px代替当前点(i,j)处的像素值,如果中间值为ea2*p2,则用p2代替点(i,j)的像素值。
本发明的基于方向加权中值滤波的超声图像处理方法,能够很好的区分超声图像的噪声和边缘信息,使得在去噪的同时有效地保护了超声图像的边缘细节信息,更加有利于后期的诊断与分析。而且本发明采用的基础算法是中值滤波,算法简单,时间复杂度低,处理耗时少,更加符合超声成像***实时处理显示图像的要求。