图像处理原彩图
为了改善图像的质量以及增强感兴趣部分。
如光线较暗的图像,需要增强图像的亮度;通过监测高速公路上的白线实现汽车自动驾驶时需要检测边线等。有针对单个像素点的点运算算法,也有针对像素局部领域的模板运算。
灰度级变换(自动对比度调整)
灰度级变换借助函数变换将输入的像素灰度值映射成一个新的输出值,通过改变像素的亮度值来增强图像
g(x,y)=T[f(x,y)]
其中,
f(x,y)是原图像,g(x,y)是处理后的图像,T是变换函数
线性灰度级变换
1)基本线性变换
g(x,y)=f(x,y)⋅tanα
I=im2double(rgb2gray(imread('099.jpg')));
figure;
imshow(I),title('原始图像');
figure,imshow(0.5*I),title('tan为0.5');
figure,imshow(2*I),title('tan为2');
2)窗口线性变换
一定范围内灰度值进行线性变换,范围外的灰度可以保持不变或者固定值
3)分段线性变换
灰度区间分成两段或多段分别进行线性变换
非线性灰度级变换
用某些非线性变换函数作为灰度变换的变换函数时,可实现图像灰度的非线性变换。对数变换时常见的非线性变换
对数变换表达式:
g(x,y)=a⋅ln[f(x,y)+1]lnc
%%非线性(对数)灰度级变换
I=double(imread('099.jpg'));%读取图像并转换为double型(0~255)
NI=46*log(I+1);%对数变换、拉伸变换
figure,imshow(NI/256);
直方图修正
数字图像处理中,灰度直方图是最简单和常用的工具
灰度直方图
1)灰度直方图是灰度级的函数,表示是数字图像中每一灰度级与其出现频数(该灰度上出现像素的数目)间的统计关系
公式定义为:
P(rk)=nkN
N是一幅图的总像素数,nk是第k级灰度的像素数,rk表示第k个灰度级,P(rk)表示该灰度级出现的相对频数
这里写代码片
I=imread(‘099.jpg’);
figure,
subplot(1,2,1)
imshow(I);
title(‘Original Image’);
G=rgb2gray(I);
subplot(1,2,2);
imhist(G);
title(‘Histogram’);
直方图性质
1)直方图不具有空间特性
2)直方图反映图像的大致描述
3)一幅图像唯一对应相应的直方图,而不同图像可以有相同的直方图
4)若一幅图像可分为多个子区,则子区直方图之和等于全图直方图
直方图修正法理论
核心就是找到满足下述两个条件的变换函数
T(r)
1)T(r)在0⩽r⩽1区域内单值单调增加,以保证灰度级从黑到白次序不变
2)T(r)在0⩽r⩽1区域内满足0⩽s⩽1,以保证变换的像素灰度级仍在允许的灰度级范围内
直方图均衡化
采用灰度级r的累积分布函数作为变换函数的直方图修正法
s=T(r)=∫r0Pr(w)dw
均衡化处理的变换函数
T(r)
为:
sk=T(rk)=∑kj=0Pr(rj)=∑kj=0njN
算法步骤
1)统计原始图像直方图
2)计算新的灰度级
3)修正
sk
为合理的灰度级
4)计算新的直方图
5)用处理后的新会都代替处理前的灰度,生成新图像
%%直方图均衡化
I=imread('099.jpg');
G=rgb2gray(I);%二值化处理
N=histeq(G);%直方图均化
figure,
imshow(N);
直方图规定化
直方图均衡化能够自动增强整个图像的对比度,但具体增强效果不容易控制,处理的结果总是得到全局均匀化的直方图。实际中有时需要变换直方图,使之成为某个特定的形状,从而有选择地增强某个灰度值范围内的对比度。
正确地选择规定化的函数可以获得比直方图均衡化更好的效果
直方图规定化的实现
是通过直方图均衡化实现的,主要3个步骤
对原始图的直方图进行灰度均衡化处理,即把灰度r变换到灰度s
sk=T(rk)=∑kj=1Pr(rj)=∑kj=0njN
2)规定需要的直方图,并计算能使规定的直方图均衡化的变换
vl=G(zl)=∑li=0Pz(zi)
3)建立均衡化直方图的对应关系,这里采用单映射(SML)规则,找到使下式为最小值对应的k和l的值,然后将所有
pr(ri)对应到pv(vi)去
|∑j=1kPr(rj)−∑ji=0Pz(zi)|
最后呈现均匀分布、指数分布等
基于同态滤波的增强处理
基于同态滤波的增强处理方法,即使对图像的灰度范围进行调整。有时我们可能会遇到这样的情况:对于一幅动态范围很大的图像,但真正感兴趣的部分灰度级范围却又很小,因此使得图像细节无法辨认。而采用一般灰度线性变换法很难满足整体要求。为此,可采用基于同态滤波的增强处理方法:在频域对图像进行滤波,压缩图像的整体亮度分量,同时增强感兴趣区域的图像对比度
照度—反射模型的建立
通常一般自然景物的图像f(x,y)可以由光源照度场i(x,y)和场景中物体反射光的反射场r(x,y)的乘积来表示
f(x,y)=i(x,y)⋅r(x,y)
0<i(x,y)<∞,0<r(x,y)<1
近似认为,照明函数取决于照射源,与景物无关。反射函数则与照射无关。
照明亮度一般是缓慢变化的,所以照明函数的频谱集中在低频段。
反射函数随图像细节不同在空间快速变化,所以就集中在高频段。
这样,图像可根据上式理解为高频分量与低频分量的乘积的结果。
基于同态滤波的增强处理方法
由于是乘积,傅里叶变换不可分。则借助对数变换变为相加分量,以便在频域对高频和低频分开处理,以期压缩动态范围,增强对比度。
算法:
1)取对数
z(x,y)=ln[i(x,y)⋅r(x,y)]=ln[i(x,y)]+ln[r(x,y)]
2)傅里叶变换处理
Z(u,v)=★{z(x,y)}=I(u,v)=R(u,v)
由于照明函数描述的图像分量变化幅度大而包含信息少,需要压缩;
反射函数描述图像灰度级较少而信息较多,需要拓展
3)同态滤波处理
根据图像特性和需要,定义不同的同态滤波函数
H(u,v)
S(u,v)=H(u,v)⋅Z(u,v)=H(u,v)⋅I(u,v)+H(u,v)⋅R(u,v)
4)求傅里叶反变换
s(x,y)=★−1{S(u,v)}=★−1{H(u,v)⋅I(u,v)}+★−1{H(u,v)⋅R(u,v)}=i′(x,y)+r′(x,y)
5)求指数变换
g(x,y)=exp{s(x,y)}=exp(i′(x,y)+r′(x,y))=i0(x,y)⋅r0(x,y)
代码
I=double(imread('099.jpg')); %打开图像并转换为double数据
sigma=1.414;filtersize=[7 7] %高斯滤波器参数
highpara=1;lowpara=0.4; %滤波器系数
lowfilter=fspecial('gaussian',filtersize,sigma)
%构造高斯低通滤波器
highfilter=zeros(filtersize);
highfilter(ceil(filtersize(1,1)/2),ceil(filtersize(1,2)/2))=1;
highfilter=highpara*highfilter-(highpara-lowpara)*lowfilter;
%高斯低通滤波器转换为高斯高通滤波器
logP=log(I+1); %对数运算
highpart=imfilter(logP,highfilter,'replicate','conv');
%时域卷积实现滤波
highpart=exp(highpart); %指数变换恢复
top=max(highpart(:));bottom=min(highpart(:));
highpart=(highpart-bottom)/(top-bottom);
figure,imshow(highpart);
Matlab取整函数有: fix, floor, ceil, round.具体应用方法如下:
fix朝零方向取整,如fix(-1.3)=-1; fix(1.3)=1;
floor,顾名思义,就是地板,所以是取比它小的整数,即朝负无穷方向取整,如floor(-1.3)=-2; floor(1.3)=1;floor(-1.8)=-2,floor(1.8)=1
ceil,与floor相反,它的意思是天花板,也就是取比它大的最小整数,即朝正无穷方向取整,如ceil(-1.3)=-1; ceil(1.3)=2;ceil(-1.8)=-1,ceil(1.8)=2
round四舍五入到最近的整数,如round(-1.3)=-1;round(-1.52)=-2;round(1.3)=1;round(1.52)=2。
基于彩色处理的增强处理
人的视觉系统对彩色相当敏感,人眼能分辨灰度级介于十几级到二十几级之间,但是却可以分辨上千种不同的颜色。因此,利用这一视觉特性,将灰度图像变成彩色图像或者改变已有彩色的分布,能够有效提高图像的可鉴别性。
伪彩色增强
伪彩色增强是一种灰度到彩色的映射技术,提高图像可辨识度。
1)密度分割法
对灰度级进行分段映射,M个切割平面分配M个不同颜色
基于密度分割的伪彩色增强方法优点是简单直观,便于软件或硬件实现。
缺点是变换出的彩色信息有限,且变换后的图像通常会显得不细腻。
2)空间域灰度级—彩色变换
这种伪彩色增强方法可将灰度图像变为具有多种颜色渐变的连续彩色图像,变换后图像视觉效果较好。
和密度分割法很相像,有红蓝绿3个变换器,每种变换器有不同的分段映射,最后合成不同颜色
例:彩虹编码公式
R=⎧⎩⎨⎪⎪⎪⎪ 0255⋅f−96322550⩽f<9696⩽f<128128⩽f<256
G=⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪ 0255⋅f−3232255255⋅192−f64255⋅f−192640⩽f<3232⩽f<6464⩽f<128128⩽f<192192⩽f<256
B=⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪ 255⋅f32255255⋅96−f320255⋅f−192640⩽f<3232⩽f<6464⩽f<9696⩽f<192192⩽f<256
3)频域伪彩色增强
将灰度图像经傅里叶变换到频率域,在频率域内用不同传递特性的滤波器分离成三个独立分量,然后对他们进行逆傅里叶变换,得到三幅代表不同频率分量的单色图像,接着进行附加处理如直方图均衡化等,最后将它们作为三基色分量,得到彩色图像。
高频成分(图像细节)作为红色—只要将红通道滤波器设计成高通特性即可。还可以结合其他处理方法,如直方图修正等,使其彩色对比度更强。
如想要抑制图像中某种频率成分,则可设计一个带阻滤波器,如:
H(u,v)={ 01D(u,v)⩽D0D(u,v)>D0
其中,D(u,v)=[(u−u0)2+(v−v0)2]12,这样在以(u0,v0)为中心,半径为D0内所有频率成分均被抑制
假彩色增强
真彩色是指自然物体的彩色—可见光频段
假彩色增强是指一幅自然真彩色图像或者遥感多光谱图像通过映射函数变换成新的三基色分量,彩色合成
使增强图像中各目标呈现出与原图像中不同的彩色。
目的:
1)把真彩色的像素逐个映射为另一种颜色,使目标在图像中突出。例如,将绿色草原置为红色,蓝色海洋置为绿色,使得目标物置于奇特环境中引起观察者注意
2)适应人眼对颜色的灵敏度,提高鉴别能力。如人眼对绿色亮度响应最灵敏,可将细小物体映射为绿色;人眼对蓝光的强弱对比灵敏度大,可把细节丰富的物体映射成深浅与亮度不一的蓝色。
3)将对光谱图像进行假彩色增强,以获得更丰富的信息。
(1)自然图像的假彩色增强
一幅自然真彩色图像经过红蓝绿三种滤色片分离为红蓝绿三基色分量
Rf、Gf、Bf
通过映射函数变幻成新的三基色分量
RF、GF、BF
⎡⎣⎢ RFGFBF⎤⎦⎥=⎡⎣⎢ a1a2a3b1b2b3c1c2c3⎤⎦⎥⋅⎡⎣⎢ RfGfBf⎤⎦⎥
特别地:
令
⎡⎣⎢ a1a2a3b1b2b3c1c2c3⎤⎦⎥=⎡⎣⎢ 001100010⎤⎦⎥
则有:
RF=Gf,GF=Bf,BF=Rf
也就是把原图中的红色变成蓝色,绿色变成红色,蓝色变成绿色
(2)多光谱图像的假彩色增强
多光谱图像在图像家族占有极重要地位,仅遥感图像而言,就有地质遥感图像、海洋遥感图像、气象、森林、农业和军事等。
多光谱图像中,除了可见光波段图像外,还包括一些非可见光波段,这些非可见光波段往往包含了可见光不包含的信息。如红外波段,可用于全天候情况,能得到可见光波段无法获得的信息,因此若将可见光与非可见光波段结合起来,通过假彩色处理,确保图像资料的连续性,就能获得更丰富的信息,便于对地物识别。