近期学习了冈萨雷斯关于数字图像处理的经典教材,刚刚学习完第三章图像空间增强,遂作此博客以记录之。
本章大致内容为:
- 基本灰度变换
- 直方图处理
- 算术/逻辑处理
- 空间滤波
下面开始逐项介绍相关内容。
基本灰度变换
主要包含了幂次变换,对数变换,指数变换等数学变换。不同的变换具有特性,对灰度的影响也各有区别。
变换 | 表达式 | 性质 |
---|---|---|
幂次变换 | s = c r γ s=cr^\gamma s=crγ | L − 1 = c ( L − 1 ) γ L-1=c(L-1)^\gamma L−1=c(L−1)γ |
对数变换 | s = c ∗ l o g ( 1 + r ) s=c*log(1+r) s=c∗log(1+r) | c ∗ l o g ( L ) = L − 1 c*log(L)=L-1 c∗log(L)=L−1 |
反转变换 | s = L − 1 − r s=L-1-r s=L−1−r | 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
T:a1→a2,数组长度均为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=0∑knn[j](k=0,1,2,3,,,,L−1)
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:a1→a3
G
:
a
2
→
a
3
G:a2\to a3
G:a2→a3
所以经过
T
G
−
1
:
a
1
→
a
2
TG^{-1}:a1\to a2
TG−1:a1→a2,可以实现灰度分布的规定化。
算术/逻辑处理
算术运算 | 表达式 | 效果 |
---|---|---|
加减法 | 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),n为均值等于0的噪声信号 | 去噪 |
平均运算的核心在于,叠加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=1∑Kgi(x,y)=Kf(x,y)+i=1∑Kni(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)=K∑i=1Kgi(x,y)=f(x,y)+K∑i=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)
K→∞limG(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)=(x−min)∗255max−min
逻辑运算 | 表达式 | 效果 |
---|---|---|
与 | y = x 1 ⋂ x 2 y=x_1\bigcap x_2 y=x1⋂x2 | 截取图像 |
或 | y = x 1 ⋃ x 2 y=x_1\bigcup x_2 y=x1⋃x2 | 截取图像 |
非 | y = L − 1 − x y=L-1-x y=L−1−x | 翻转 |
空间滤波
用一个子图像,对原图像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)+...
注意:在进行滤波处理时,会经过原图像的边缘。而原图像的边缘是不存在数值的。有以下两种解决办法:
- 限制中心点的位置在距离边缘一个像素的位置(将导致p2比p1要小一部分)。(最佳)
- 对原图形的边缘灰度,补零或者补某一个常数。
平滑空间滤波
常见的模板:
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}
91∗⎝⎛111111111⎠⎞
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}
161∗⎝⎛121242121⎠⎞
注意:要满足系数归一化的条件。
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=−aa∑j=−bbω(x,y)∑i=−aa∑j=−bbω(x,y)∗f(x,y)
模板越大,模糊作用越强。
统计排序滤波器
一种非线性的空间滤波器。利用统计值(中值,最大值,最小值作为输出)。
当选取中值作为输出时,可以有效克服椒盐噪声。(黑白点噪声)。
锐化空间滤波
一阶微分:
∂
y
∂
x
=
f
(
x
+
1
)
−
f
(
x
)
\frac{\partial y}{\partial x}=f(x+1)-f(x)
∂x∂y=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)
∂x2∂2y=f(x+1)+f(x−1)−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=∂x2∂2f+∂y2∂2f
∇
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(x−1,y)+f(x,y−1)+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}
⎝⎛0101−41010⎠⎞
二阶微分算子的作用:强调了图像中灰度的突变及降低灰度慢变化的区域。对细节有较强的响应,例如细线,突变点等。相当于求二阶导数。对山峰或者低谷,响应明显。
拉普拉斯增强(掩模中心为正号):
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=[(∂x∂f)2+(∂y∂f)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=∂x∂f,Gy=∂y∂f,于是
∇
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}
⎝⎛−101−202−101⎠⎞
或
(
−
1
0
1
−
2
0
2
−
1
0
1
)
\begin{pmatrix} -1&0 &1\\ -2 & 0 &2\\ -1& 0& 1 \end{pmatrix}
⎝⎛−1−2−1000121⎠⎞
注意所有掩模系数和均为0。
注意:一阶微分算子对灰度梯度有较强的响应。对山坡,响应明显。
图像增强的空间法介绍基本结束了,欢迎各位学习指正。
QQ:1290085777、邮箱:U201614384@hust.edu.cn