数字图像处理之图像增强的空间法

近期学习了冈萨雷斯关于数字图像处理的经典教材,刚刚学习完第三章图像空间增强,遂作此博客以记录之。
本章大致内容为:

  • 基本灰度变换
  • 直方图处理
  • 算术/逻辑处理
  • 空间滤波

下面开始逐项介绍相关内容。

基本灰度变换

主要包含了幂次变换,对数变换,指数变换等数学变换。不同的变换具有特性,对灰度的影响也各有区别。

变换表达式性质
幂次变换 s = c r γ s=cr^\gamma s=crγ L − 1 = c ( L − 1 ) γ L-1=c(L-1)^\gamma L1=c(L1)γ
对数变换 s = c ∗ l o g ( 1 + r ) s=c*log(1+r) s=clog(1+r) c ∗ l o g ( L ) = L − 1 c*log(L)=L-1 clog(L)=L1
反转变换 s = L − 1 − r s=L-1-r s=L1r N o n e None None
分段线性变换 N o n e None None N o n e None None

上述变换主要用于使某一段的灰度级(受关注的,受重视的),映射到更大的灰度范围,同时压缩了(不受关注,不受重视的)灰度级,体现了一种“选择性”。
而分段线性变换则使这种“选择性”更为突出,明显。但同样由于表达式的复杂,将导致执行的开销加大。

直方图处理

直方图是一个概率论中的概念,是一个直观描述某个变量的概率分布情况的工具。在DIP中,主要用于描述灰度的分布情况,哪一个灰度值的像素数量最多,哪一个灰度值的像素数量最少,可以通过直方图直观得到。

直方图处理主要有两种:

  • 均衡化
  • 规定化(匹配)

均衡化

预先知识:图像均为8位灰度图,即灰度值范围(0~255):0、1、2、、、、L-1
令原图像为p1,灰度分布数组为a1,目标图像为p2,灰度分布数组为a2,变化的函数为 T : a 1 → a 2 T:a1\to a2 Ta1a2,数组长度均为256,每一位的数值代表像素数。
做图像的空间处理中的直方图处理,最为直观的理解是,T是一个映射关系,将a1的第n位与a2的第m位相互链接,从而实现直方图变换。
数学迭代关系
s [ k ] = ∑ i = 0 k n [ j ] n ( k = 0 , 1 , 2 , 3 , , , , L − 1 ) s[k]=\sum_{i=0}^k\frac{n[j]}{n} (k=0,1,2,3,,,,L-1) s[k]=i=0knn[j]k=0,1,2,3,,,,L1
n n n为像素点数总和。
上面为原图形,及其直方图,下面为均衡化后的结果
上述结果由Matlab自带的histeq函数得出。也可以自己编写相关的运算程序,下面是笔者的源码。可以观察得到,均衡化后的直方图,灰度分布的概率趋于一致(相等),但仍存在一些毛刺,这是因为灰度值本身是离散的,并不连续。

%统计灰度值分布
function [R]=count(I)
R=[];
R(256)=0;
[row,col]=size(I);
for i=[1:1:row]
    for j=[1:1:col]
        temp=I(i,j);
        R(temp+1)=R(temp+1)+1;
    end
end
end
%均衡化处理
function [ I_1 ] = o_average( I )
%UNTITLED2 此处显示有关此函数的摘要
%此处显示详细说明
s=[];
r=[];
r(256)=0;
s(256)=0;
[row,col]=size(I);
n=row*col
r=count(I); %灰度值计次

for k=[1:1:256]
     for i=[1:1:k]
         s(k)=s(k)+r(i);    %对应灰度值为k-1
     end
     s(k)=s(k)/n;
end
for i=[1:1:row]
    for j=[1:1:col]
        temp=s(I(i,j)+1);
        I_1(i,j)=temp;
    end
end
end
I=imread('moon.tif');       %黑白
%I=imread('office_1.jpg');  %彩色    
subplot(2,2,1);
I_1=o_average(I);
imshow(I_1);
I_2=histeq(I);
subplot(2,2,3);
imshow(I_2);
subplot(2,2,2);
imhist(I_1);
subplot(2,2,4);
imhist(I_2);

规定化

目的是将原图像直方图(p1,a1)转换成目标直方图(p2,a2)(均衡化(p3,a3)就是规定化的特例)
T : a 1 → a 3 T:a1\to a3 T:a1a3
G : a 2 → a 3 G:a2\to a3 G:a2a3
所以经过 T G − 1 : a 1 → a 2 TG^{-1}:a1\to a2 TG1:a1a2,可以实现灰度分布的规定化。

算术/逻辑处理

算术运算表达式效果
加减法 g ( x , y ) = h ( x , y ) + f ( x , y ) g(x,y)=h(x,y)+f(x,y) g(x,y)=h(x,y)+f(x,y)突出差异
平均运算 g ( x , y ) = f ( x , y ) + n ( x , y ) , n 为 均 值 等 于 0 的 噪 声 信 号 g(x,y)=f(x,y)+n(x,y),n为均值等于0的噪声信号 g(x,y)=f(x,y)+n(x,y),n0去噪

平均运算的核心在于,叠加K个 g i ( x , y ) = f ( x , y ) + n i ( x , y ) g_i(x,y)=f(x,y)+n_i(x,y) gi(x,y)=f(x,y)+ni(x,y)进行平均。
∑ i = 1 K g i ( x , y ) = K f ( x , y ) + ∑ i = 1 K n i ( x , y ) \sum_{i=1}^{K}g_i(x,y)=Kf(x,y)+\sum_{i=1}^{K}n_i(x,y) i=1Kgi(x,y)=Kf(x,y)+i=1Kni(x,y)
G ( x , y ) = ∑ i = 1 K g i ( x , y ) K = f ( x , y ) + ∑ i = 1 K n i ( x , y ) K G(x,y)=\frac{\sum_{i=1}^{K}g_i(x,y)}{K}=f(x,y)+\frac{\sum_{i=1}^{K}n_i(x,y)}{K} G(x,y)=Ki=1Kgi(x,y)=f(x,y)+Ki=1Kni(x,y)
σ G 2 = 1 K σ g 2 \sigma_G^2=\frac{1}{K}\sigma_g^2 σG2=K1σg2
故此 lim ⁡ K → ∞ G ( x , y ) = f ( x , y ) \lim_{K\to \infty}G(x,y)=f(x,y) KlimG(x,y)=f(x,y)
**注意:**一般默认规定灰度值的范围为[0,255],所以在进行加减法运算时,一定要注意到最终结果的范围的正确性。
例如生成图像的灰度范围为[min,max],一般做线性变换 T : y = f ( x ) T:y=f(x) T:y=f(x),将整个灰度范围映射到全体[0,255]。
y = f ( x ) = ( x − min ⁡ ) ∗ max ⁡ − min ⁡ 255 y=f(x)=(x-\min)*\frac{\max-\min}{255} y=f(x)=(xmin)255maxmin

逻辑运算表达式效果
y = x 1 ⋂ x 2 y=x_1\bigcap x_2 y=x1x2截取图像
y = x 1 ⋃ x 2 y=x_1\bigcup x_2 y=x1x2截取图像
y = L − 1 − x y=L-1-x y=L1x翻转

空间滤波

用一个子图像,对原图像p1,a1,进行滤波操作,得到图像p2,a2。子图像可以称之为==滤波器,掩模,核,窗口,模板。
假设子图像为3*3的模板, ω ( 3 , 3 ) \omega(3,3) ω(3,3)
a 2 = ω ( − 1 , − 1 ) a 1 ( − 1 , − 1 ) + ω ( − 1 , 0 ) a 1 ( − 1 , 0 ) + . . . a_2=\omega(-1,-1)a_1(-1,-1)+\omega(-1,0)a_1(-1,0)+... a2=ω(1,1)a1(1,1)+ω(1,0)a1(1,0)+...
注意:在进行滤波处理时,会经过原图像的边缘。而原图像的边缘是不存在数值的。有以下两种解决办法:

  1. 限制中心点的位置在距离边缘一个像素的位置(将导致p2比p1要小一部分)。(最佳)
  2. 对原图形的边缘灰度,补零或者补某一个常数。

平滑空间滤波

常见的模板:
1 9 ∗ ( 1 1 1 1 1 1 1 1 1 ) \frac{1}{9}* \begin{pmatrix} 1 &1 &1\\ 1 & 1 &1\\ 1& 1& 1 \end{pmatrix} 91111111111
1 16 ∗ ( 1 2 1 2 4 2 1 2 1 ) \frac{1}{16}* \begin{pmatrix} 1 &2 &1\\ 2 & 4 &2\\ 1& 2& 1 \end{pmatrix} 161121242121
注意:要满足系数归一化的条件。
g ( x , y ) = ∑ i = − a a ∑ j = − b b ω ( x , y ) ∗ f ( x , y ) ∑ i = − a a ∑ j = − b b ω ( x , y ) g(x,y)=\frac{\sum_{i=-a}^{a}\sum_{j=-b}^{b}\omega(x,y)*f(x,y)} {\sum_{i=-a}^{a}\sum_{j=-b}^{b}\omega(x,y)} g(x,y)=i=aaj=bbω(x,y)i=aaj=bbω(x,y)f(x,y)

模板越大,模糊作用越强。

统计排序滤波器

一种非线性的空间滤波器。利用统计值(中值,最大值,最小值作为输出)。
当选取中值作为输出时,可以有效克服椒盐噪声。(黑白点噪声)。

锐化空间滤波

一阶微分:
∂ y ∂ x = f ( x + 1 ) − f ( x ) \frac{\partial y}{\partial x}=f(x+1)-f(x) xy=f(x+1)f(x)
二阶微分:
∂ 2 y ∂ x 2 = f ( x + 1 ) + f ( x − 1 ) − 2 f ( x ) \frac{\partial ^2 y}{\partial x^2}=f(x+1)+f(x-1)-2f(x) x22y=f(x+1)+f(x1)2f(x)

二阶微分增强——拉普拉斯算子

∇ 2 f = ∂ 2 f ∂ x 2 + ∂ 2 f ∂ y 2 \nabla^2f=\frac{\partial ^2 f}{\partial x^2}+\frac{\partial ^2 f}{\partial y^2} 2f=x22f+y22f
∇ 2 f = f ( x + 1 , y ) + f ( x − 1 , y ) + f ( x , y − 1 ) + f ( x , y + 1 ) − 4 f ( x , y ) \nabla^2f=f(x+1,y)+f(x-1,y)+f(x,y-1)+f(x,y+1)-4f(x,y) 2f=f(x+1,y)+f(x1,y)+f(x,y1)+f(x,y+1)4f(x,y)
等效为: ( 0 1 0 1 − 4 1 0 1 0 ) \begin{pmatrix} 0&1 &0\\ 1 & -4 &1\\ 0& 1& 0 \end{pmatrix} 010141010
二阶微分算子的作用:强调了图像中灰度的突变及降低灰度慢变化的区域。对细节有较强的响应,例如细线,突变点等。相当于求二阶导数。对山峰或者低谷,响应明显。
拉普拉斯增强(掩模中心为正号):
g ( x , y ) = f ( x , y ) + ∇ 2 f ( x , y ) g(x,y)=f(x,y)+\nabla^2f(x,y) g(x,y)=f(x,y)+2f(x,y)
高提升滤波(提高亮度,掩模中心为正号):
g ( x , y ) = A f ( x , y ) + ∇ 2 f ( x , y ) g(x,y)=Af(x,y)+\nabla^2f(x,y) g(x,y)=Af(x,y)+2f(x,y)
A越大,锐化的效果越不明显,然而A的增大,可以提高亮度,使暗片变亮。

一阶微分增强——梯度算子

∇ f = [ ( ∂ f ∂ x ) 2 + ( ∂ f ∂ y ) 2 ] 1 2 \nabla f=[(\frac{\partial f}{\partial x})^2+(\frac{\partial f}{\partial y})^2]^\frac{1}{2} f=[(xf)2+(yf)2]21
G x = ∂ f ∂ x , G y = ∂ f ∂ y G_x=\frac{\partial f}{\partial x},G_y=\frac{\partial f}{\partial y} Gx=xf,Gy=yf,于是 ∇ f \nabla f f近似为 ∣ G x ∣ + ∣ G y ∣ |G_x|+|G_y| Gx+Gy
常用Sobel算子:
( − 1 − 2 − 1 0 0 0 1 2 1 ) \begin{pmatrix} -1&-2 &-1\\ 0 & 0 &0\\ 1& 2& 1 \end{pmatrix} 101202101

( − 1 0 1 − 2 0 2 − 1 0 1 ) \begin{pmatrix} -1&0 &1\\ -2 & 0 &2\\ -1& 0& 1 \end{pmatrix} 121000121
注意所有掩模系数和均为0。
注意:一阶微分算子对灰度梯度有较强的响应。对山坡,响应明显

图像增强的空间法介绍基本结束了,欢迎各位学习指正。
QQ:1290085777、邮箱:U201614384@hust.edu.cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值