图像中值滤波方法

文档序号:34024302发布日期:2023-05-05 08:02阅读:164来源:国知局
图像中值滤波方法

本发明涉及一种图像中值滤波方法。


背景技术:

1、图像在采集、离散化和传输等过程中会受到各种信号的干扰,形成噪声。这些噪声的存在导致图像的像素值不能准确地反映出真实物体的辐射信息,降低了成像质量。为了还原目标物体真实的成像效果,需要对图像进行降噪处理。

2、在现有的非线性降噪方法中,中值滤波是较为有效且被广泛应用的方法。它通过对滤波窗口内统计排序,选取中值来代替窗口中心像素的方法对图像去噪。其优点在于它不仅可以有效地滤除噪声信号,还可以完整地保留图像的边缘细节,不会损失图像的视觉效果。

3、然而,传统的图像中值滤波方法在处理高空间分辨率的图像时速度过慢,实时性较差。主要原因在于传统算法的处理速度主要依赖于统计排序的速度,而统计排序的速度由滤波窗口的尺寸和排序算法的时间复杂度共同决定。例如假设滤波窗口尺寸为n,在采用冒泡排序算法时,窗口一次滤波的时间复杂度为o(n2/2),在采用快速排序算法时,窗口一次滤波的时间复杂度为o(nlogn)。可见在排序算法固定的情况下,窗口尺寸越大,算法的时间复杂度会大幅度增加。因此,如何快速地对图像进行滤波运算,缩短图像预处理时间,是图像处理中迫切需要解决的难题。

4、现阶段中值滤波的加速方法主要通过减少参与排序的像素个数来实现,大致包括两种方式。第一种为随机抽取的方法:只选择滤波窗口内子窗口的一些像素进行排序。然而抽取操作选取的像素值并不一定是滤波窗口内真正灰度级的中间值,因此这种方法在提高速度的同时也带来了误差,降低了滤波效果。另一种方法为均值加速的方法:以窗口内像素的均值为界,将像素分成大于和小于均值的两个集合,再对元素个数大于窗口内像素总个数一半的集合重复上述操作,直至分解后两个集合的个数均小于总个数的一半,再对子集排序选取中间值。这种使参与排序的像素个数逐渐收敛的方法,在保证滤波效果的同时提升了处理速度。然而在嵌入式系统中,均值运算是十分困难的,用到的加法和除法运算需要消耗较多资源,算法在这个问题上没有考虑完备,因此在嵌入式系统的图像处理中,这种方法不能保证它的处理速度一定优于传统算法,且给处理器的底层设计带来了较多困难。

5、综上分析,现有图像中值滤波方法依然存在较多亟待解决的技术瓶颈。


技术实现思路

1、有鉴于此,有必要提供一种图像中值滤波方法。

2、本发明提供一种图像中值滤波方法,该方法包括如下步骤:a.输入待滤波图像i(x,y),并定义一个与滤波窗口同样大小的临时排序数组x;b.在待滤波图像i(x,y)中取出滤波窗口内的像素,进行滤波运算;c.对滤波窗口内最右侧的列像素由大到小排序,并存入临时排序数组x的最右列;d.判断临时排序数组x是否已经存满;如果x已经存满,则执行步骤e;否则执行步骤g;e.提取x中的疑似中值元素,剔除x中冗余元素;f.对提取出的疑似中值元素集合进行排序,直至找到所述元素的中间值,将其作为该窗口中值滤波的结果输出;g.如果滤波窗口没有位于最右侧,则滤波窗口向右移动一列像素,临时排序数组依据先入先出原则,向左移动一列像素用于下一次迭代运算,跳转至步骤b,直至整幅图像滤波完成;否则,进入步骤h;h.如果滤波窗口已经位于图像最后一行的最后一列,则流程结束;否则,进入步骤i;i.滤波窗口移动至下一行像素的最左侧,清空临时排序数组x,并跳转至步骤b,直至整幅图像滤波完成。具体地,所述的步骤c具体包括:

3、将临时排序数组x最右侧的列像素从大到小排序,并将结果存储到临时排序数组的最右侧,记为x·,n:x·,n=sort{i(i+ind,j)|ind=0:n-1};

4、其中,x·,n表示矩阵x中第n列元素,(i,j)为滤波窗口的中心像素,sort为从大到小的排序运算符。

5、具体地,所述的步骤c还包括:

6、采用冒泡排序算法,具体排序操作包括:

7、步骤s31:记num=0;

8、步骤s32:令ind=num+1;

9、步骤s33:比较i(i+num,j)和i(i+ind,j)的大小:

10、如果i(i+ind,j)>i(i+num,j),则交换两个元素;否则,不进行操作;

11、步骤s34:ind=ind+1;如果ind>n-1,则执行步骤s35;否则重复步骤s33和s34;

12、步骤s35:num=num+1;如果num>n-1,则表示完成步骤s3的排序操作,执行步骤s4;否则重复步骤s32、s33、s34及s35。

13、具体地,所述的步骤e具体包括如下步骤:

14、步骤s51:提取x中前n↓行元素相应的极小值;

15、步骤s52:剔除x中间行的最大值和最小值,保留其余元素;

16、步骤s53:提取x中后n↓行元素相应的极大值。

17、具体地,所述的步骤s51具体包括如下步骤:

18、步骤s511:记n=1;

19、步骤s512:记i=1;

20、步骤s513:令ind=i+1;

21、步骤s514:判断xn,i和xn,i+ind的大小;如果xn,i>xn,i+ind,则交换两个元素,并将xn,i+ind存入集合否则,不进行操作;

22、步骤s515:ind=ind+1;如果ind>n,则执行步骤s516;否则重复步骤s514和s515;

23、步骤s516:i=i+1;如果i>n↓+n-1,则执行步骤s517;否则重复步骤s513、s514、s515及s516;

24、步骤s517:n=n+1;如果n>n↓,则表示前n↓行的极小值提取已经完成,执行步骤s52;否则重复步骤s512、s513、s514、s515、s516及s517。

25、具体地,所述的步骤s52具体包括如下步骤:

26、步骤s521:记n=n↑;

27、步骤s522:记i=1,ind=i+1;

28、步骤s523:判断xn,i和xn,i+ind的大小:如果xn,i>xn,i+ind,则交换两个元素;否则,不进行操作;

29、步骤s524:ind=ind+1;如果ind>n,则执行步骤s525;否则重复步骤s523和s524;

30、步骤s525:记i=2,ind=i+1;

31、步骤s526:判断xn,i和xn,i+ind的大小;如果xn,i<xn,i+ind,则交换两个元素;否则,不进行操作;

32、步骤s527:ind=ind+1,如果ind>n,则执行步骤s528;否则重复步骤s526和s527;

33、步骤s528:将第n行中第3个元素至最后一个元素存入即将xn,3:n存入

34、具体地,所述的步骤s53具体包括如下步骤:

35、步骤s531:记n=n↑+1;

36、步骤s532:记i=1;

37、步骤s533:令ind=i+1;

38、步骤s534:判断xn,i和xn,i+ind的大小;如果xn,i<xn,i+ind,则交换两个元素,并将xn,i+ind存入集合否则,不进行操作;

39、步骤s535:ind=ind+1;如果ind>n,则执行步骤s536;否则重复步骤s534和s535;

40、步骤s536:i=i+1;如果i>n+n↓-n,则执行步骤537;否则重复步骤s533,s534,s535和s536;

41、步骤s537:n=n+1;如果n>n,则表示后n↓行的极大值提取已经完成,执行步骤f;否则重复步骤s532,s533,s534,s535,s536和s537。

42、具体地,所述的步骤f具体包括如下步骤:

43、步骤s61:记i=1;

44、步骤s62:令ind=i+1;

45、步骤s63:判断和的大小;如果则交换两个元素;否则,不进行操作;

46、步骤s64:ind=ind+1,如果ind>n2-(1+n↑)n↑,则执行步骤6-5;否则重复步骤s63和s64;

47、步骤s65:i=i+1,如果i>[n2-(1+n↑)n↑]/2+1,则记为当前滤波结果;否则重复步骤s62,s63,s64和s65。

48、具体地,所述的步骤g具体包括:

49、步骤s81:记i=1;

50、步骤s82:x·,i=x·,i+i;

51、步骤s83:i=i+1;如果i>n-1,则返回步骤b;否则重复步骤s82和步骤s83。

52、本技术与现有技术相比,有益效果主要在于:首先,排序操作只对窗口内最右侧的列像素进行;其次,根据像素在临时排序数组内的位置,通过极值判定的方法剔除了大量一定会不处于中间位置的冗余像素,为中值排序时间复杂度的降低提供了帮助;最后,只对筛选出的疑似中值像素集合提取中值,参与运算的像素数量远小于窗口内所有像素的个数。综上所述,本技术用部分像素的排序、行像素的极值滤波和疑似像素集合的中值滤波三次分解的方法,取代了传统方法直接对所有像素提取中值的复杂方法。本技术在保证原有中值滤波效果的基础上降低了时间复杂度,提升了算法的实时性,为图像处理速率的提升和系统资源消耗的降低提供了保障。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1