zoukankan      html  css  js  c++  java
  • 数字图像处理-图像增强

    1、空间域图像增强

      图像增强的目的是消除噪声,显示被模糊的细节或者突出感兴趣的特征区域。(增强效果受认为主观因素的影响)

      空间域图像增强奇数主要包括直方图修正、灰度变换增强、图像平滑化以及锐化等。在增强过程中可以采用单一的方法处理,但通常情况下需要采用几种方法联合处理以达到更好的增强效果。空间域增强是基于图像中每一个小范围(邻域)内的像素进行灰度变换,某个点在变换之后的灰度由该点邻域之内的点的灰度值共同决定,因此空间域增强也称为邻域运算或邻域滤波。空间域变换可以用下式描述:

     1.1 空间域滤波

      滤波是信号处理中的概念,是将信号中特定波段频率滤除的操作。在数字信号处理中通常采用傅里叶变换及其逆变换来实现。图像空间域滤波的操作和通过傅里叶变换实现的频域滤波是相似的,所以也称为滤波。空间域滤波主要基于邻域对图像中像素执行计算。

      对于更一般的情况即对于一个大小为mxn的模板(其中m=2a+1, n=2b+1, a,b均为正整数,即模板长宽均为奇数,且最小为3x3,不适用偶数尺寸模板是因为偶数模板在匹配时不具有对称性很少使用),滤波操作可以表示为:

     

     1.2 边界处理

      

     1.3 滤波操作Matlab实现

       相关函数:imfilter和fspecial:

    f=imread('cameraman.tif');
    imshow(f);
    w=[1 1 1;1 1 1;1 1 1] / 9;
    g=imfilter(f,w,'corr','replicate');
    figure,imshow(g);

     1.4 图像平滑(模糊)

      图像平滑是一种可以减少和抑制图像噪声的数字图像处理技术。在空间域中一般可以采用邻域平均来达到平滑的目的。均值滤波模板如下:

     

     

     1.5 高斯滤波(平滑)

      均值滤波领域内各个像素的权重是一样的,为例减少平滑处理中的模糊,得到更自然的平滑效果应该适当的加大模板中心的权重,随着中心向外权重应该减小,从而确保中心点看起来更接近与它距离更近的点。基于这种思想得到的模板即为高斯模板。常用的3x3高斯模板如下:

       高斯模板的名字来源于二维高斯函数,也就是二维正态分布密度函数。一个均值为0,标准差为σ的二维高斯函数为:

       当σ=1时,二维高斯函数的三位示意图如下:

      

      告诉模板时将连续的二维高斯函数离散化表示,因此任意大小的高斯模板都可以通过建立一个(2K+1)x(2K+1)的矩阵M得到,其(i, j)位置的元素值可以如下确定:

     

       Matlab实现如下:

    I=imread('E:MATImages1.PNG');
    figure,imshow(I);
    
    h3_5=fspecial('gaussian',3,0.5); % sigma=0.5 3x3
    I3_5=imfilter(I, h3_5);
    figure,imshow(I3_5);
    
    h3_8=fspecial('gaussian',3,0.8); % sigma=0.8 3x3
    I3_8=imfilter(I, h3_8);
    figure,imshow(I3_8);
    
    h5_8=fspecial('gaussian',5,0.8); % sigma=0.8 5x5
    I5_8=imfilter(I, h5_8);
    figure,imshow(I5_8);
    
    h7_12=fspecial('gaussian',7,1.2); % sigma=1.2 7x7
    I7_12=imfilter(I, h7_12);
    figure,imshow(I7_12);

      均值滤波和高斯滤波都是线性平滑滤波器,也叫低通滤波器。

    1.6 自适应平滑滤波

      利用平均模板的平滑消除噪声同时也会使图像变得模糊损失细节,高斯平滑在一定程度上有所缓解,但是由于平滑的机理可知这种模糊时不可避免的。自适应滤波的思想是选择性的进行平滑,即只在噪声局部区域进行平滑,而在无噪声的局部区域不进行平滑,将模糊的影响讲到最低。

      问题是怎么判断噪声局部区域?根据图像的局部连续性质,噪声的存在导致在噪声点处产生灰度跳跃,从而导致噪声点局部区域灰度跨度较大。因此可以选择如下2个标准之一来判定局部区域是否存在噪声:

    实现算法:
    按行扫描图像,对每一个像素,以该像素为中心计算其周围区域R的统计特征如最大值、最小值和方差等;
    如果区域R满足噪声判定标准,则用选定的模板计算邻域夹权和作为该点的响应,否则就不处理该点。

      使用场景:噪声位置具有随机性和局部性的图像

     1.7 中值滤波

       中值滤波对于某些类型的随机噪声有非常理想的降噪能力,对于线性平滑滤波而言在处理像素邻域之内的噪声点时,噪声的存在总会影响该点像素值的计算(高斯滤波影响程度与噪声点到中心点的距离成正比),但是在中值滤波中噪声点一般都是直接被忽略掉,而且与线性平滑滤波器相比,中值滤波在降噪同时引起的模糊效应较低。中值滤波的一种典型运用是消除椒盐噪声。

    如下是原图和添加椒盐噪声后的图像:

     

       中值滤波Matlab实现:

    I=imread('E:MATImagessrc.PNG');
    figure,imshow(I);
    J=imnoise(I, 'salt & pepper');
    % J=imread('E:MATImagesjiaoyan.PNG');
    J=rgb2gray(J);
    figure,imshow(J);
    w=[1 2 1;2 4 2;1 2 1]/16;
    J1=imfilter(J,w,'corr','replicate'); % 高斯滤波
    figure,imshow(J1);
    h=[1 1 1;1 1 1; 1 1 1]/9;
    J2=imfilter(J,h,'corr','replicate'); % 均值滤波
    figure, imshow(J2);
    J3=medfilt2(J, [3,3]); % 中值滤波,注意mdefilt2函数只能处理二维,对于彩色图像需要分通道处理再合并通道?
    figure,imshow(J3); 

       改善中值滤波边缘细节损失:

     

  • 相关阅读:
    r语言 包说明
    python中的map()函数
    Java打印整数的二进制表示(代码与解析)
    python 两个字典合并
    判断一个字符串中是否含有中文字符:
    Python字符串的encode与decode研究心得——解决乱码问题
    javac编译成功,用java运行class文件出现“找不到或无法加载主类” 的问题
    python读取剪贴板报错 pywintypes.error: (1418, 'GetClipboardData', 'xcfxdfxb3xccxc3xbbxd3xd0xb4xf2xbfxaaxb5x
    python openpyxl 2.5.4 版本 excel常用操作封装
    pycharm 设置文件编码的位置:Editor-->File Encodings
  • 原文地址:https://www.cnblogs.com/djh5520/p/13784810.html
Copyright © 2011-2022 走看看