图像处理 边缘平滑_pil 图像边缘平滑处理 - CSDN
  • 图像平滑边缘检测

    千次阅读 2018-11-08 17:20:27
    使用Canny边缘检测算法作为例子,介绍图像平滑方法和边缘检测。 Canny边缘检测算法分为四步: step1:用高斯滤波器平滑图像; step2:用一阶偏导的有限差分来计算梯度的幅值和方向;(在横竖两个方向上计算边缘,再求...

    一、概要:

    使用Canny边缘检测算法作为例子,介绍图像的平滑方法和边缘检测。

    Canny边缘检测算法分为四步:

    step1:用高斯滤波器平滑图像;
    step2:用一阶偏导的有限差分来计算梯度的幅值和方向;(在横竖两个方向上计算边缘,再求平方和的开方)
    step3:对梯度幅值进行非极大值抑制;
    step4:用双阈值算法检测和连接边缘。 

    demo&效果:

    原图(lenna.bmp):



    高斯滤波后的图像:



    初步求边缘后的图像:



    非极大值抑制后的图像:



    双阈值检测后的图像:




    以下对这四步进行详细介绍:


    二、图像平滑与高斯滤波

    图像平滑的目的是消除或尽量减少噪声的影响,改善图像的质量。在假定加性噪声是随机独立分布的条件下,利用邻域的平均或加权平均可以有效的抑制噪声干扰。

    方法是做邻域计算,比如:



    高斯滤波:

    采用高斯函数作为加权函数。
    原因一:二维高斯函数具有旋转对称性,保证滤波时各方向平滑程度相同;
    原因二:离中心点越远权值越小。确保边缘细节不被模糊。




    设定σ2和n,确定高斯模板权值。如σ2 =2和n=5,整数化和归一化后得:




    代码:


    1.直接用系统函数的方法

    1. img=imread('lenna.bmp');
    2. imshow(img);
    3. [m n]=size(img);
    4. img=double(img);
    5. %高斯滤波
    6. w=fspecial('gaussian',[5 5]); %[ 5 5 ]是模板尺寸,默认是[ 3 3 ] 模板即上文所提的模板
    7. img=imfilter(img,w,'replicate');
    8. figure;
    9. imshow(uint8(img))

    2.自己实现的高斯滤波(使用上面的模板)

    1. img=imread('lenna.bmp');
    2. img=im2double(img);
    3. [m n]=size(img);
    4. h=zeros(m,n);
    5. for i=1:m
    6. for j=1:n
    7. if i<3 || i>(m-3) || j<3 || j>(n-3)
    8. h(i,j)=img(i,j);
    9. else %代码长度原因,分行相加。
    10. h(i,j)=h(i,j)+img(i-2,j-2)+img(i-2,j+2)+img(i+2,j-2)+img(i+2,j+2);
    11. h(i,j)=h(i,j)+(img(i-1,j-2)+img(i+1,j-2)+img(i-2,j-1)+img(i+2,j-1)+img(i-2,j+1)+img(i+2,j+1)+img(i-1,j+2)+img(i+1,j+2))*2;
    12. h(i,j)=h(i,j)+3*(img(i,j-2)+img(i,j+2)+img(i+2,j)+img(i-2,j));
    13. h(i,j)=h(i,j)+4*(img(i-1,j-1)+img(i-1,j+1)+img(i+1,j-1)+img(i+1,j+1));
    14. h(i,j)=h(i,j)+6*(img(i,j-1)+img(i,j+1)+img(i+1,j)+img(i-1,j));
    15. h(i,j)=h(i,j)+7*img(i,j);
    16. h(i,j)=h(i,j)/79;
    17. end
    18. end
    19. end
    20. imshow(h,[]);

    三、初步边缘检测

    对高斯平滑后的图像进行sobel边缘检测。这里需要求横的和竖的还有联合的,所以一共三个需要sobel边缘检测图像。


    代码:

    1. img=imread('lenna.bmp');
    2. [m n]=size(img);
    3. img=double(img);
    4. w=fspecial('gaussian',[5 5]);
    5. img=imfilter(img,w,'replicate');
    6. figure;
    7. %%sobel边缘检测
    8. w=fspecial('sobel');
    9. img_w=imfilter(img,w,'replicate'); %求横边缘
    10. w=w'; %转置矩阵
    11. img_h=imfilter(img,w,'replicate'); %求竖边缘
    12. img=sqrt(img_w.^2+img_h.^2); %平方和再开方 .^表示每一位都和自己乘,不清楚的自己百度
    13. figure;
    14. imshow(uint8(img))


    四、非极大值抑制以及双阈值检测边缘

    什么是非极大值抑制?

    非极大值抑制是在梯度方向上的极大值。


    代码:(觉得看看注释就差不多明白思路了)

    1. img=imread('lenna.bmp');
    2. imshow(img);
    3. [m n]=size(img);
    4. img=double(img);
    5. %%canny边缘检测的前两步相对不复杂,所以我就直接调用系统函数了
    6. %%高斯滤波
    7. w=fspecial('gaussian',[5 5]);
    8. img=imfilter(img,w,'replicate');
    9. figure;
    10. imshow(uint8(img))
    11. %%sobel边缘检测
    12. w=fspecial('sobel');
    13. img_w=imfilter(img,w,'replicate'); %求横边缘
    14. w=w';
    15. img_h=imfilter(img,w,'replicate'); %求竖边缘
    16. img=sqrt(img_w.^2+img_h.^2); %注意这里不是简单的求平均,而是平方和在开方。我曾经好长一段时间都搞错了
    17. figure;
    18. imshow(uint8(img))
    19. %%下面是非极大抑制
    20. new_edge=zeros(m,n);
    21. for i=2:m-1
    22. for j=2:n-1
    23. Mx=img_w(i,j);
    24. My=img_h(i,j);
    25. if My~=0
    26. o=atan(Mx/My); %边缘的法线弧度
    27. elseif My==0 && Mx>0
    28. o=pi/2;
    29. else
    30. o=-pi/2;
    31. end
    32. %Mx处用My和img进行插值
    33. adds=get_coords(o);%边缘像素法线一侧求得的两点坐标,插值需要
    34. M1=My*img(i+adds(2),j+adds(1))+(Mx-My)*img(i+adds(4),j+adds(3)); %插值后得到的像素,用此像素和当前像素比较
    35. adds=get_coords(o+pi);%边缘法线另一侧求得的两点坐标,插值需要
    36. M2=My*img(i+adds(2),j+adds(1))+(Mx-My)*img(i+adds(4),j+adds(3));%另一侧插值得到的像素,同样和当前像素比较
    37. isbigger=(Mx*img(i,j)>M1)*(Mx*img(i,j)>=M2)+(Mx*img(i,j)<M1)*(Mx*img(i,j)<=M2); %如果当前点比两边点都大置1
    38. if isbigger
    39. new_edge(i,j)=img(i,j);
    40. end
    41. end
    42. end
    43. figure;
    44. imshow(uint8(new_edge))
    45. %%下面是滞后阈值处理
    46. up=120; %上阈值
    47. low=100; %下阈值
    48. set(0,'RecursionLimit',10000); %设置最大递归深度
    49. for i=1:m
    50. for j=1:n
    51. if new_edge(i,j)>up &&new_edge(i,j)~=255 %判断上阈值
    52. new_edge(i,j)=255;
    53. new_edge=connect(new_edge,i,j,low);
    54. end
    55. end
    56. end
    57. figure;
    58. imshow(new_edge==255)


    get_coords.m:
    1. function re=get_coords(angle) %angle是边缘法线角度,返回法线前后两点
    2. sigma=0.000000001;
    3. x1=ceil(cos(angle+pi/8)*sqrt(2)-0.5-sigma);
    4. y1=ceil(-sin(angle-pi/8)*sqrt(2)-0.5-sigma);
    5. x2=ceil(cos(angle-pi/8)*sqrt(2)-0.5-sigma);
    6. y2=ceil(-sin(angle-pi/8)*sqrt(2)-0.5-sigma);
    7. re=[x1 y1 x2 y2];
    8. end


    connect.m:


    1. function nedge=connect(nedge,y,x,low) %种子定位后的连通分析
    2. neighbour=[-1 -1;-1 0;-1 1;0 -1;0 1;1 -1;1 0;1 1]; %八连通搜寻
    3. [m n]=size(nedge);
    4. for k=1:8
    5. yy=y+neighbour(k,1);
    6. xx=x+neighbour(k,2);
    7. if yy>=1 &&yy<=m &&xx>=1 && xx<=n
    8. if nedge(yy,xx)>=low && nedge(yy,xx)~=255 %判断下阈值
    9. nedge(yy,xx)=255;
    10. nedge=connect(nedge,yy,xx,low);
    11. end
    12. end
    13. end
    14. end





    参考资料:

    1.http://www.cnblogs.com/tiandsp/archive/2012/12/13/2817240.html
    2.南京大学软件学院数字图像处理课程PPT

    一些更详细的原理性的东西可以参考:
    http://blog.csdn.net/likezhaobin/article/details/6892176
    展开全文
  • 图像处理之图像平滑

    千次阅读 2018-05-30 22:07:35
    转载自https://www.cnblogs.com/luyaoblog/p/7160948.html一、何为图像噪声?噪声是妨碍人的感觉器官所接受信源信息理解的因素,是不可预测只能用概率统计方法认识的随机误差。 举个例子: 从这个图中,我们可以...

    转载自https://www.cnblogs.com/luyaoblog/p/7160948.html

    一、何为图像噪声?噪声是妨碍人的感觉器官所接受信源信息理解的因素,是不可预测只能用概率统计方法认识的随机误差。

      举个例子:

      

      从这个图中,我们可以观察到噪声的特点:1>位置随机 2>大小不规则。我们将这种噪声称为随机噪声(random noise),这是一种非常常见的噪声类型。

      二、噪声的类型

      噪声可以借用随机过程以及概率密度函数(Probability Density Function,PDF)来描述,通常可采用其数组特征,即均值,方差,相关函数等。按照概率密度函数分为高斯噪声、瑞利噪声、伽马噪声、指数分布噪声、均匀分布噪声、脉冲噪声、泊松噪声等。有的噪声与图像信号的强度不相关,如图像传输过程引入的信道噪声、摄像机扫描噪声等,这种噪声称为加性噪声(additive noise)。常见的加性噪声按照概率密度函数特征分为短拖尾加性噪声(如均匀分布噪声)、中拖尾加性噪声(高斯分布噪声)、长拖尾加性噪声(如指数分布噪声)、脉冲噪声(如椒盐噪声、随机数脉冲噪声等)。

      有的噪声与图像信号有关,往往随着图像信号的变化而变化,如光照变化引起的噪声、飞机扫描图像中的噪声、电视扫描光栅中的相干噪声、斑点噪声等。这种噪声称为乘性噪声(multiplicative noise)。

      matlab向图中添加噪声的指令:

      I1=imnoise(I,type,parameters);

      其中,当type为gaussian,所加入噪声是parameters为m(均值)、v(方差)的高斯噪声,这是最普通的噪声。

      当type为localvar时,所加入噪声是parameters为0(均衡)、v(方差)的高斯噪声。

      当type为poission时,所加入的是无参数的泊松噪声,在照度非常小时出现,或在高倍电子放大线路中出现。

      当type为salt&pepper时,所加入的噪声是parameters为d(密度)的椒盐噪声。

      当type为speckle时,所加入的噪声是parameters为0(均值)、v(方差)的均匀分布噪声(斑点噪声)。

      例子1:向图像中加入椒盐噪声matlab示例。

    1
    2
    3
    4
    I=imread('eight.tif'); 
    J=imnoise(I,'salt & pepper',0.02); 
    subplot(121),imshow(I),title('原始图像'); 
    subplot(122),imshow(J),title('加入椒盐噪声的图像'); 

       例子2:利用多帧图像平均法,对受零均值随机高斯噪声干扰的图像进行平滑处理

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    I=imread('eight.tif'); 
    [m,n]=size(I);
    I1=zeros(m,n);
    for i=1:16
        I2(:,:,i)=imnoise(I,'gaussian',0,0.01);%由原始图像叠加随机高斯噪声生成1-16帧图像
        I1=I1+double(I2(:,:,i));%多帧带有随机噪声的图像叠加
        if or(or(i==1,i==4),or(i==8,i==16));
            figure,imshow(uint8(I1/i))%取平均并显示结果
        end
    end

       

      分别显示施加噪声后的图像和叠加平均后的图像,可以发现叠加平均图像的数量级越多,噪声消除效果越好,对16帧图像取平均后几乎消除了所有噪声。

      三、图像平滑消除噪声

      对于只有一帧带有噪声的图像是无法用上述方法消除噪声的,此时又该怎么办呢?根据噪声的特点可以知道噪声的灰度与其周围的灰度之间有明显的灰度差,因此造成了视觉障碍。此时消除噪声的方法要利用图像平滑(image smoothing),简称平滑(smoothing),因此如何把边缘部分与噪声部分区分开,只消除噪声是图像平滑的关键所在。

      图像平滑的方法可分为频率域法(频率法)和空间域法(空域法)两类。频域法的处理基础是傅里叶变换和低通滤波技术,空域法的处理基础是模板卷积。

      (1)低通滤波(lowpass filter)

      低通滤波属于频域平滑滤波法,通过滤除高频成分,保留低频成分,在频域中实现平滑处理。其滤波公式为G(U,V)=H(U,V)F(U,V),其中F(U,V)是原始图像频谱,G(U,V)是平滑图像频谱,H(U,V)是传递(转移)函数。

      步骤:将原始图像f(x,y)进行傅里叶变换,把图像从空间域变换到频率域,得到图像频谱F(U,V),再通过传递函数H(U,V)用低通滤波公式改变F(U,V),最后对滤波处理后的频谱G(U,V)进行傅里叶反变换,即可得到过滤后的图像g(x,y)。

      1.理想低通滤波器(Ideal Low-Pass Filter,ILPF)的传递函数

      

      D0是截止频率,D(u,v)=(u^2+v^2)^(1/2)为频率平面原点到点(u,v)的距离。其特点是物理上不可实现,有抖动现象,滤除高频成分使图像变模糊。

      

      2.巴特沃斯低通滤波器(Butterworth Low-Pass Filter,BLPF)具有如下传递函数

      

      与理想低通滤波器不同,该滤波器的传递函数不是在D0处突然不连续,而是平滑过渡。当H(U,V)降为最大值的1/2时,D(U,V)=D0。n为阶数,阶数越大,传递函数越陡峭。

      

      3.指数形低通滤波器(Exponential Low-Pass Filter,ELPF)具有如下传递函数:

      

      当D(U,V)=D0时,H(u,v)降为最大值的1/(2^(1/2))时的频率可作为截止频率。

      

      4.梯形低通滤波器(Trapezoidal Low-Pass Filter,TLPF)具有如下传递函数:

      

      

      例子:巴特沃斯低通滤波器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    %巴特沃斯低通滤波器
    I=imread('eight.tif'); 
    I1=imnoise(I,'salt & pepper'); 
    figure,imshow(I1);
    f=double(I1);
    g=fft2(f);%傅里叶变换
    g=fftshift(g);%直流分量移到频谱中心
    [M,N]=size(g);%计算图像的高和宽
    d0=50;nn=2;%截止频率为50的二阶巴特沃斯低通滤波器
    m=round(M/2);n=round(N/2);%数据取整
    for i=1:M
        for j=1:N
            d=sqrt((i-m)^2+(j-n)^2);%计算频率平面原点到各点的距离
            h=1/(1+0.414*(d/d0)^(2*nn));%传递公式
            result(i,j)=h*g(i,j);%滤波公式
        end
    end
    result=ifftshift(result);%直流分量移回到左上角
    I2=ifft2(result);%傅里叶反变换
    I3=uint8(real(I2));%取幅值并转换成8位无符号整数
    figure,imshow(I3);

     

    展开全文
  • 图像处理-平滑和锐化

    万次阅读 2015-03-02 16:08:04
    图像平滑,锐化(转)" alt="数字图像处理学习笔记1- 图像平滑,锐化(转)" src="http://s10.sinaimg.cn/middle/6c083cdd495b316784ce9&690"> 可以看到,图2 比图1 柔和一些(也模糊一些)。是不是觉得很神奇?...

    1.平滑(smoothing)
    先举个例子说明一下什么是平滑,如下图所示:

    数字图像处理学习笔记1- <wbr>图像平滑,锐化(转)

    可以看到,图2 比图1 柔和一些(也模糊一些)。是不是觉得很神奇?其实实现起来很简单。我们将原图中
    的每一点的灰度和它周围八个点的灰度相加,然后除以9,作为新图中对应点的灰度,就能实现上面的效
    果。这么做并非瞎蒙,而是有其道理的。大概想一想,也很容易明白。举个例子,就象和面一样,先在中
    间加点水,然后不断把周围的面和进来,搅拌几次,面就均匀了。
    用信号处理的理论来解释,这种做法实现的是一种简单的低通滤波器(low pass filter)。在灰度连续变化
    的图象中,如果出现了与相邻像素的灰度相差很大的点,比如说一片暗区中突然出现了一个亮点,人眼能
    很容易觉察到。就象看老电影时,由于胶片太旧,屏幕上经常会出现一些亮斑。这种情况被认为是一种噪
    声。灰度突变在频域中代表了一种高频分量,低通滤波器的作用就是滤掉高频分量,从而达到减少图象噪
    声的目的。
    为了方便的叙述上面所说的"将原图中的每一点的灰度和它周围八个点的灰度相加,然后除以9,作为新图
    中对应点的灰度"这一操作,我们用如下的表示方法:
    数字图像处理学习笔记1- <wbr>图像平滑,锐化(转)
    这种表示方法有点象矩阵,我们称其为模板(template)。中间的黑点表示中心元素(此处用*表示),即,用哪
    个元素做为处理后的元素。例如(2* 1)表示将自身的2 倍加上右边的元素作为新值,而(2 1*)表示将自身加
    上左边元素的2 倍作为新值。通常,模板不允许移出边界,所以结果图象会比原图小,例如模板数字图像处理学习笔记1- <wbr>图像平滑,锐化(转)
    原图是数字图像处理学习笔记1- <wbr>图像平滑,锐化(转),经过模板操作以后的图像为数字图像处理学习笔记1- <wbr>图像平滑,锐化(转),数字代表灰度,x表示边界上无法进行模板操作的点,通常的做法是复制原图的灰度,不进行任何处理。
    模板操作实现了一种邻域运算(Neighborhood Operation),即,某个像素点的结果不仅和本像素灰度有关,
    而且和其邻域点的值有关。在以后介绍的细化算法中,我们还将接触到邻域运算。模板运算的数学涵义是
    一种卷积(或互相关)运算,你不需要知道卷积的确切概念,有这么一个概念就可以了。

    模板运算在图象处理中经常要用到,可以看出,它是一项非常耗时的运算,以数字图像处理学习笔记1- <wbr>图像平滑,锐化(转)为例,每个像素完成一次模板操作要用9个乘法,8个加法,1个除法。对于一幅N*N(宽度*高度)的图象,就是9N^2个乘法,8N^2个加法和N^2个除法,算法复杂度为 O(N^2),这对于大图象来说,是非常可怕的。所以,一般常用的模板并不大,如3*3,4*4。有很多专用的图象处理系统,用硬件来完成模板运算,大大提高了速度。另外,可以设法将2维模板运算转换成1维模板运算,对速度的提高也是非常可观的。例如,(2)式可以分解成一个水平模板和一个竖直模板,即,数字图像处理学习笔记1- <wbr>图像平滑,锐化(转)

    我们来验证一下,设图像为数字图像处理学习笔记1- <wbr>图像平滑,锐化(转),经过(3.2)式处理以后变为数字图像处理学习笔记1- <wbr>图像平滑,锐化(转),经过2.1处理以后结果相同,如果计算时不考虑周围一圈的像素,前者做了4*(9个乘法,8个加法,1个除法),共36个乘法,32个加法,4个除法;后者做了4*(3个乘法,2个加法)+4*(3个乘法,2个加法)+4个除法,共24个乘法,16个加法,4个除法,运算简化了不少,如果是大图,效率的提高将是非常客观的。

    平滑模板的思想是通过一点和周围8个点的平均来去除突然变化的点,从而滤掉一定的噪声,其代价是图象有一定程度的模糊。上面提到的模板(1),就是一种平滑模板,称之为Box模板。Box模板虽然考虑了邻域点的作用,但并没有考虑各点位置的影响,对于所有的9个点都一视同仁,所以平滑的效果并不理想。实际上我们可以想象,离某点越近的点对该点的影响应该越大,为此,我们引入了加权系数,将原来的模板改造为:

    数字图像处理学习笔记1- <wbr>图像平滑,锐化(转)
    可以看出,距离越近的点,加权系数越大。新的模板其实也是一个常用的平滑模板,称为高斯(Gauss)模板。为什么叫这个名字,这是因为这个模板是通过采样2维高斯函数得到的。

    下图中,从左到右分别是原图,经过高斯模板处理的图,和经过BOX模板处理的图。可以看出,采用高斯模板在平滑处理的过程中,效果要比Box模板清晰一些。

    数字图像处理学习笔记1- <wbr>图像平滑,锐化(转)

    2.中值滤波
    中值滤波也是一种典型的低通滤波器,它的目的是保护图象边缘的同时去除噪声。所谓中值滤波,就是指把以某点(x,y)为中心的小窗口内的所有像素的灰度按从大到小的顺序排列,将中间值作为(x,y)处的灰度值(若窗口中有偶数个像素,则取两个中间值的平均)。中值滤波是如何去除噪声的呢?举个例子就很容易明白了。

    数字图像处理学习笔记1- <wbr>图像平滑,锐化(转)

    上图中左边是原图,数字代表该处的灰度。可以看出中间的6和周围的灰度相差很大,是一个噪声点。经过3*1窗口(即水平3个像素取中间值)的中值滤波,得到右边那幅图,可以看出,噪声点被去除了。拿中值滤波和上面介绍的两种平滑模板做个比较,看看中值滤波有什么特点。

    1.中值滤波的特点是保护图象边缘的同时去除噪声。

    我们以一维模板为例,只考虑水平方向,大小为3*1(宽*高)。Box模板为数字图像处理学习笔记1- <wbr>图像平滑,锐化(转);Gauss模板为数字图像处理学习笔记1- <wbr>图像平滑,锐化(转)
    结果如下所示:

    数字图像处理学习笔记1- <wbr>图像平滑,锐化(转)

                    数字图像处理学习笔记1- <wbr>图像平滑,锐化(转)

    2.中值滤波对高斯噪声无效,高斯模板对高斯噪声非常有效。

                 数字图像处理学习笔记1- <wbr>图像平滑,锐化(转)

    3.中值滤波对脉冲噪声非常有效。

                 数字图像处理学习笔记1- <wbr>图像平滑,锐化(转)

    总结:中值滤波容易去除孤立点,线的噪声同时保持图象的边缘,它能很好的去除二值噪声,但对高斯噪声无能为力。要注意的是,当窗口内噪声点的个数大于窗口宽度的一半时,中值滤波的效果不好。这是很显然的。

    3.锐化

    锐化和平滑恰恰相反,它是通过增强高频分量来减少图象中的模糊,因此又称为高通滤波(high pass filter)。锐化处理在增强图象边缘的同时增加了图象的噪声。常用的锐化模板是拉普拉斯(Laplacian)模板。

                                        数字图像处理学习笔记1- <wbr>图像平滑,锐化(转)

    容易看出拉普拉斯模板的含义,先将自身与周围的8个像素相减,表示自身与周围像素的差别,再将这个差别加上自身作为新像素的灰度。可见,如果一片暗区出现了一个亮点,那么锐化处理的结果是这个亮点变得更亮,增加了图象的噪声.

    图1经过拉普拉斯模板处理后,如图4所示:

    数字图像处理学习笔记1- <wbr>图像平滑,锐化(转)

    展开全文
  • 图像处理——图像平滑

    万次阅读 2012-12-10 22:41:22
    图像噪声是在图像处理中经常会遇到的问题,它的存在会使图像的质量下降,因此解决图像噪声问题在图像处理过程中是不可忽视的。  根据噪声的性质不同,消除噪声的方法也有所不同。  随机噪声是一种线索最少却最...

            图像噪声是在图像处理中经常会遇到的问题,它的存在会使图像的质量下降,因此解决图像噪声问题在图像处理过程中是不可忽视的。

            根据噪声的性质不同,消除噪声的方法也有所不同。

            随机噪声是一种线索最少却最常见的噪声。

            对于多帧图像,取其平均值,帧数越多越接近实际值。对于单帧图像,随机噪声隐藏的像素的实际灰度值是不可知的,此时,只能尽量使噪声对图像的影响最小化。噪声的灰度与周围像素的灰度之间有明显的灰度差,正是这些明显的灰度差造成了视觉上的障碍。一般情况下,把利用噪声的性质来消除图像中噪声的方法称为图像平滑(image smoothing)。


    一、均值滤波器

            均值滤波器(averaging filter)是消除噪声的最简单的方法。原理:使用某像素周围mxn像素范围内的平均值来置换该像素值。通过使图像模糊,达到看不到细小噪声的目的。不良反应:使用这种方法,在噪声被消除的同时,目标图像也变模糊了。

    二、中值滤波

            消除噪声最好的结果是,在消除噪声的同时,图像边缘完好的保留。中值滤波能够比较好的实现这一点。原理:查看mxn邻域内的像素灰度,按照从小到大的顺序进行排列,结果取中间值。


    中值滤波器与均值滤波器比较的优势:在均值滤波器中,由于噪声成分被放入平均计算中,所以输出受到了噪声的影响,但是在中值滤波器中,由于噪声成分很难选上,所以几乎不会影响到输出。因此同样用3x3区域进行处理,中值滤波消除的噪声能力更胜一筹。中值滤波无论是在消除噪声还是保存边缘方面都是一个不错的方法。

    中值滤波器与均值滤波器比较的劣势:中值滤波花费的时间是均值滤波的5倍以上。


    二值图像的平滑

            二值图像中的椒盐噪声能够用中值滤波来消除,但是由于它只有二值,也可以采用膨胀和腐蚀的处理方法来消除。膨胀(dilation)是指在某像素的邻域内,只要有一个像素是白色像素则该像素就由黑变为白,其他保持不变。腐蚀(erosion)只是某像素的邻域内,只要有一个像素是黑色像素则该像素由白变黑,其他保持不变。


    3x3邻域

    smooth  求9个像素的平均值

    median  求9个像素的中间值

    erodible  9个像素中若有至少一个为黑,该像素为黑

    dilation  9个像素若有至少一个为白,该像素为白


    展开全文
  • 使用模板处理图像相关概念:   模板:矩阵方块,其数学含义是一种卷积运算。   卷积运算:可看作是加权求和的过程,使用到的图像区域中的每个像素分别于卷积核(权矩阵)的每个元素对应相 乘,
  • 就是对二值图像怎么样的操作 才能让边缘看起来平滑。 我用过 blur 函数。 int height = dstBw.rows; int width = dstBw.cols; blur(dstBw, hua, Size(3,3)); for (int i = 0; i ; i++) { uchar* p ...
  • 数字图像处理 平滑滤波

    千次阅读 2011-11-23 15:56:29
    分别采用均值、中值、最大值、最小值滤波器对下边两幅图像进行平滑处理,输出处理结果并进行比较。 实验程序 clear;clc; I1=imread('images\butterfly.bmp'); I2=imread('images\x.tif'); I1=rgb2gray(I1); I2...
  • //去除二值图像边缘的突出部  //uthreshold、vthreshold分别表示突出部的宽度阈值和高度阈值  //type代表突出部的颜色,0表示黑色,1代表白色  void delete_jut(Mat& src, Mat& dst, int uthreshold, ...
  • matlab图像处理——平滑滤波

    万次阅读 2018-11-01 20:52:00
    平滑滤波——matlab图像处理 平滑滤波的目的是消除或尽量减少噪声,改善图像的质量。假设加性噪声是随机独立分布,这样利用图像像素领域的平均或加权平均即可有效地抑制噪声干扰。从信号分析的观点来看,图像平滑...
  • MATLAB 图像平滑边缘检测

    万次阅读 2015-05-20 19:58:37
    使用Canny边缘检测算法作为例子,介绍图像平滑方法和边缘检测。 Canny边缘检测算法分为四步: step1:用高斯滤波器平滑图像; step2:用一阶偏导的有限差分来计算梯度的幅值和方向;(在横竖两个方向上计算边缘,再求...
  • 图像处理之图像的平滑与锐化概念:锐化就是通过增强高频分量来减少图象中的模糊,因此又称为高通滤波。锐化处理在增强图象边缘的同时增加了图象的噪声。平滑与锐化相反,就是滤掉高频分量,从而达到减少图象噪声,使...
  • 图像处理(一):平滑滤波

    千次阅读 2019-07-09 16:22:06
    平滑处理,有时也称模糊处理,是图像处理领域最常用的操作。平滑的目的主要是用来去除噪声。通常平滑操作是通过卷积操作(注:实际上是相关操作,后面的叙述对这两个操作不加区分)完成。下面介绍几种常用的平滑滤波...
  • 文章目录本次我们来谈一下图像处理的卷积基础(java语言)首先我们来接触一下卷积的基础理论下面我们来看一些常见的算子或效果的卷积核产生的效果吧 本次我们来谈一下图像处理的卷积基础(java语言) 多图预警 首先...
  • 本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程《数字图像处理》及课件进行讲解,主要通过MFC单文档视图实现显示BMP图像增强处理,包括图像普通平滑、高斯平滑、不同算子的图像锐化知识...
  • 图像边缘锯齿及处理方法

    万次阅读 2017-08-21 20:40:41
    图像边缘锯齿处理
  • 图像处理常用边缘检测算子总结

    千次阅读 2019-01-13 11:32:41
    图像处理常用边缘检测算子总结
  • 图像处理平滑与模糊

    千次阅读 2018-05-31 14:04:50
    参考链接:... 2D卷积低通滤波器用于去除噪音信息,模糊图像,高通滤波器用于寻找图像中的边缘信息。 Opencv提供的接口函数cv2.filter2D()来对图像做卷积。我们定义一个5x5的均值滤波器...
  • 2、利用MATLAB进行频率域滤波,观察图像平滑图像锐化的效果,加深对频率域滤波的理解; 3、掌握图像FFT变换与DCT变换后进行频率域滤波的不同; 4、掌握低通滤波与高通滤波原理,对DCT变换后的图像进行低通滤波和高通...
  • 目录 1 图像增强——图像平滑 1.1 图像增强简介 1.2 图像平滑 ...对于图像的某些特征如边缘、轮廓、对比度等,图像增强是进行强调或锐化,以便于显示、观察或进一步分析与处理图像增强主要是一...
  • 图像平滑处理(滤波)

    万次阅读 2016-04-05 20:03:15
    Author:胡健1、图像平滑(smooth)也称为“模糊处理”,最常见的smooth的用法是减少图像上的噪声或者失真。 2、图像滤波 什么是图像滤波呢?就是在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制。图像...
1 2 3 4 5 ... 20
收藏数 20,609
精华内容 8,243
关键字:

图像处理 边缘平滑