数字图像处理第三章-----灰度变换与空间滤波

文章目录

  • 1、图像增强
  • 2、灰度变换
    • 2.1 定义
    • 2.2线性灰度变换
      • 2.2.1 线性灰度变换
      • 2.2.2 分段线性灰度变换
      • 2.2.3 图像分割
    • 2.3 非线性灰度变换
      • 2.3.1 对数变换
      • 2.3.2 指数变换
      • 2.3.3 幂函数变换(伽马变换)
    • 2.3 应用
      • 2.3.1 对比度拉伸
      • 2.3.2 直方图均衡
  • 3、空间滤波
    • 3.1 图像平滑
      • 3.1.1 中值滤波
      • 3.1.2 均值滤波
    • 3.2 图像锐化
      • 3.2.1 微分运算
      • 3.2.2 梯度锐化
      • 3.2.3 边缘检测
  • 4 总结

1、图像增强

目的:将图像中自己想要的部分突出,不想要的部分抑制
图像增强是图像预处理部分最基础的处理手段,也是最基础的技术

数字图像处理第三章-----灰度变换与空间滤波_第1张图片

2、灰度变换

2.1 定义

灰度变换按一定的变换关系,逐点改变原图像中每一个像素值
也被称为图像的点运算(只针对图像的某一像素点)
其变换形式如下: s=T(r)
其中,T是灰度变换函数;r是变换前的灰度;s是变换后的像素。

2.2线性灰度变换

2.2.1 线性灰度变换

加减常数
g(x,y)=f(x,y)+c

I=imread('greens.jpg');
J=rgb2gray(I);
[M,N]=size(J);
x=1;y=1;
for x=1:M
  for y=1:N          
      H(x,y)=J(x,y)-100;
  end
end
subplot(121),imshow(J);
subplot(122),imshow(H);

数字图像处理第三章-----灰度变换与空间滤波_第2张图片

图像反转
g(x,y)= - f(x,y)
乘常数
g(x,y)= cf(x,y)
反转及称常数操作与加减操作类似,大家可以自己尝试一下。

2.2.2 分段线性灰度变换

在线性灰度变换的基础上,将图像按灰度等级进行分段,不同段进行不同的操作。
削波:选定一个阈值,超出阈值的部分做一种处理,未超出的做另一种处理。
I=imread('greens.jpg');
J=rgb2gray(I);
[M,N]=size(J);
x=1;y=1;
for x=1:M
  for y=1:N
      if(J(x,y)>240);
            H(x,y)=J(x,y)-50;
      else
          H(x,y)=0;
      end
  end
end
subplot(121),imshow(J);
subplot(122),imshow(H);

数字图像处理第三章-----灰度变换与空间滤波_第3张图片

2.2.3 图像分割

目的:将图像分成若干个或不相交的小区域
依据:像素之间具有相似性和跳变性
原理:阈值化
阈值化:阈值化是削波的一个特殊案例,将超出阈值部分的像素的值改为1,低于阈值的改为0.

阈值选择

一般来说,若图像的直方图呈现明显的双峰,那么谷底对应的灰度值即为阈值。

图像阈值分割

直方图门限选择:画出直方图,选择阈值,大于阈值为白,小于阈值为黑。
              若有两个阈值,两阈值之间为黑,其他为白。
半阈值选择图像分割:画出直方图,选择阈值,大于阈值与小于阈值的部分一方不变,另一方
                  为黑或白
迭代阈值图像分割:选择一个阈值作为初始值,按照某种策略不断地进行改进。

原图及阈值化后的图像
数字图像处理第三章-----灰度变换与空间滤波_第4张图片

2.3 非线性灰度变换

2.3.1 对数变换

低灰度区扩展,高灰度区压缩

I=imread('circles.png');
J=double(I);
[M,N]=size(J);
x=1;y=1;
for x=1:M
  for y=1:N          
      H(x,y)=log(1+J(x,y));
  end
end
subplot(121),imshow(J);
subplot(122),imshow(H);

2.3.2 指数变换

 低灰度区压缩,高灰度区扩展
  H(x,y)=a.^J(x,y)+b;

2.3.3 幂函数变换(伽马变换)

 H(x,y)=J(x,y).^a+b;

数字图像处理第三章-----灰度变换与空间滤波_第5张图片

2.3 应用

那么现在我们已经可以对图像做一些基本的操作了,如对比度拉伸,直方图均衡

2.3.1 对比度拉伸

I = imread('pout.tif');
J = imadjust(I);
subplot(121),imshow(I);
subplot(122),imshow(J); 

数字图像处理第三章-----灰度变换与空间滤波_第6张图片

2.3.2 直方图均衡

I = imread('pout.tif');
J = histeq(I);
subplot(121),imshow(I);
subplot(122),imshow(J); 

数字图像处理第三章-----灰度变换与空间滤波_第7张图片

3、空间滤波

3.1 图像平滑

因为图像在传输过程中会受到干扰,造成图像的失真,所以我们在接收到图像后要进行平滑处理。
目的:1)模糊:提取大目标前,将小的细节去除
      2)消除噪声

线性平滑:  用某一模板对每个像素及其邻域的所有像素进行处理
非线性平滑:设定一个阈值,求像素及其邻域的平均值,若该像素值超出阈值,则令该像素值为
           平均值,否则不做改变
卷积运算:  卷积其实就是按照模板作加权求和的过程

方法

图像平滑有中值滤波、均值滤波、高斯滤波、双边滤波等多种方法。

3.1.1 中值滤波

原理:对模板覆盖范围内的像素从小到大进行排序,位于中间的像素值作为滤波后的值。
在中值滤波时,我们采用matlab提供的函数medfilt2
I=imread('coins.png');
J=imnoise(I,'salt & pepper',0.02);%添加椒盐噪声
K=medfilt2(J);
figure;
subplot(131);imshow(I);
subplot(132);imshow(J);
subplot(133);imshow(K);

在这里插入图片描述

3.1.2 均值滤波

原理:取模板覆盖范围内所有像素的平均值作为滤波值
I=imread('coins.png');
J=imnoise(I,'salt & pepper',0.02);%添加椒盐噪声
h=ones(3,3)/5;%设置模板
K=imfilter(J,h);
figure;
subplot(131);imshow(I);
subplot(132);imshow(J);
subplot(133);imshow(K);

在这里插入图片描述

本次使用的是3*3的全为1的模板,大家可以对模板进行修改,看看其他的模板有什么效果

3.2 图像锐化

目的:突出图像细节,增强图像边缘

3.2.1 微分运算

1、用差分表示微分: 一阶微分:f(x+1)-f(x)
                  二阶微分:f(x+1)+f(x-1)-2f(x)
2、微分的方向有两个:横向与纵向
一阶横向微分运算:G(i,j)=f(i,j)-f(i,j-1)
一阶纵向微分运算:G(i,j)=f(i,j)-f(i-1,j)
纵横两方向都进行:
G(i,j)=sqrt{[f(i,j)-f(i,j-1)]*[f(i,j)-f(i,j-1)]+[f(i,j)-f(i-1,j)]*[f(i,j)-f(i-1,j)]}    
二阶横向微分运算:f(x+1)+f(x-1)-2f(x)
二阶纵向微分运算:f(y+1)+f(y-1)-2f(y)

3.2.2 梯度锐化

梯度是一个矢量,有分别沿x和y方向计算微分的结果构成。

一般来说,梯度的计算方法有以下三种:

数字图像处理第三章-----灰度变换与空间滤波_第8张图片

3.2.3 边缘检测

原理:边缘上灰度变化较平缓、而边缘两侧变化较快。

robert算子(交叉微分算子)

Gx=f(x+1,y+1)-f(x,y);
Gy=f(x+1,y)-f(x,y+1);
Roberts算子的边缘定位精度高,但它容易丢失一部分边缘,且不具备抑制噪声能力

数字图像处理第三章-----灰度变换与空间滤波_第9张图片
sobel算子

Gx=f(x-1,y+1)+2f(x,y+1)+f(x+1,y+1)-f(x-1,y-1)-2f(x,y-1)-f(x+1,y-1)
Gy=f(x-1,y-1)+2f(x-1,y)+f(x-1,y+1)-f(x+1,y-1)-2f(x+1,y)-f(x+1,y+1)
sobel算子抑制噪声的能力较好,但它对灰度的变化不敏感、定位不是特别准确

数字图像处理第三章-----灰度变换与空间滤波_第10张图片

prewitt算子

Gx=f(x+1,y-1)+f(x+1,y)+f(x+1,y+1)-f(x-1,y-1)-f(x-1,y)-f(x-1,y+1)
Gy=f(x-1,y-1)+f(x,y-1)+f(x+1,y-1)+f(x-1,y+1)-f(x,y+1)-f(x+1,y+1)
prewitt算子与sobel算子类似,都具有抗噪声能力,对图像边缘也都无法准确定位。

数字图像处理第三章-----灰度变换与空间滤波_第11张图片

为了让大家有更直观的感受,我们将三种算子的效果进行对比
对于一个含噪声少的图像,使用三种算子对其进行检测
I=imread('rice.png');
[H1,t]=edge(I,'roberts','both');
[H2,t]=edge(I,'sobel','both');
[H3,t]=edge(I,'prewitt','both');
 figure;
 subplot(221);imshow(I);
 subplot(222);imshow(H1);
 subplot(223);imshow(H2);
 subplot(224);imshow(H3);

数字图像处理第三章-----灰度变换与空间滤波_第12张图片

当添加噪声后再对其进行检测 
I=imread('rice.png');
J=imnoise(I,'salt & pepper',0.02);%添加椒盐噪声
[H1,t]=edge(J,'roberts','both');
[H2,t]=edge(J,'sobel','both');
[H3,t]=edge(J,'prewitt','both');
figure;
 subplot(321);imshow(I);
 subplot(322);imshow(J);
 subplot(323);imshow(H1);
 subplot(324);imshow(H2);
 subplot(325);imshow(H3);

原图及加噪声后图:
数字图像处理第三章-----灰度变换与空间滤波_第13张图片

roberts算子
数字图像处理第三章-----灰度变换与空间滤波_第14张图片
sobel算子
数字图像处理第三章-----灰度变换与空间滤波_第15张图片

prewitt算子
数字图像处理第三章-----灰度变换与空间滤波_第16张图片

可以看出,roberts算子的抗干扰能力远远低于sobel和prewitt算子。

拉普拉斯算子

对阶跃型边缘定位准确,但抗噪声能力差
对拉普拉斯算子,我们要先求出他的梯度,然后根据它的模板的中心系数的正负判断加或减。

拉普拉斯算子常用的模板有:
数字图像处理第三章-----灰度变换与空间滤波_第17张图片
高斯-拉普拉斯算子

把高斯平滑器和拉普拉斯锐化结合,先滤掉噪声,再进行边缘检测。
优缺点:克服了拉普拉斯算子抗噪能力差的缺点,但在抑制噪声时,平滑掉了比较尖锐的边缘,故
无法检测到尖锐边缘

检测线段

检测图像中的线段时,常用下方的模板:

数字图像处理第三章-----灰度变换与空间滤波_第18张图片

I=imread('.png')
I=rgb2gray(I);%灰度化
h1=[-1,-1,-1;2,2,2;-1,-1,-1];%检测水平线段
h1=[-1,-1,2;-1,2,-1;2,-1,-1];%+45
h1=[-1,2,-1;-1,2,-1;-1,2,-1];%垂直
h1=[2,-1,-1;-1,2,-1;-1,-1,2];%-45
J1=imfilter(I,h1);
J2=imfilter(I,h2);
J3=imfilter(I,h3);
J4=imfilter(I,h4);
J=J1+J2+J3+J4;
figure;
subplot(321),imshow(I);
subplot(322),imshow(J);
subplot(323),imshow(J1);
subplot(324),imshow(J2);
subplot(325),imshow(J3);
subplot(326),imshow(J4);

数字图像处理第三章-----灰度变换与空间滤波_第19张图片

检测边缘

edge函数:[g,t]=edge(f, ‘边缘检测算子’, parameter)
其中,parameter可以为选定的阈值(在此使用的是roberts算子)

I=imread('rice.png');
I=im2double(I);
[J,thresh]=edge(I,'roberts',35/255);
figure;
subplot(121);imshow(I);
subplot(122);imshow(J);

数字图像处理第三章-----灰度变换与空间滤波_第20张图片

也可以为检测的方向,‘horizontal’(水平), ‘vertical’(垂直), ‘both’(两者都)
I=imread('rice.png');
I=im2double(I);
[J,t]=edge(I,'roberts','both');
figure;
subplot(121);imshow(I);
subplot(122);imshow(J);

数字图像处理第三章-----灰度变换与空间滤波_第21张图片

4 总结

本章主要讲述了在空间域上进行图像增强方法,主要包括灰度变换和空间滤波两种,其中,灰度
变换包括线性变换和非线性变换,空间滤波包括图像平滑和图像锐化。本文对它们的原理及应用
做了一些简单的介绍,对图像滤波及边缘检测等也进行了简单的实验。

你可能感兴趣的:(数字图像处理第三章-----灰度变换与空间滤波)