数字图像处理教程(matlab版)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DA
DMax A0
DA
Hi
i0
[J,T]=histeq(I);%J为输出图像,T为变换矩阵
图像易受光照、视角、方位、噪声等的影响。使得同一类图像的不同变形 体之间的差距有时大于该类图像与另一类图像之间的差距,影响图像识别、 分类。图像归一化就是将图像转换到唯一的标准形式以抵抗各种变换,从 而消除同类图像不同变形体之间的外观差异。也称为图像灰度归一化。
W(1,-1) W(1,0) W(1, 1)
f(x-1,y-1) f(x-1,y) f(x1,y+1)
f(x,y-1) f(x,y) f(x,y+1)
f(x+1,y- f(x+1,y) f(x+1,y+
1)
1)
B=imfilter(f,w,option1,option2,…);
f 为要进行滤波操作的图像。 w为滤波操作使用的模板,为一个二维数组,可自己定义。 option1……是可选项,包括: 1、边界选项(’symmetric’、’replicate’、’circular’) 2、尺寸选项(’same’、’full’) 3、模式选项(’corr’、’conv’)
c为尺度比例常数,s为源灰度值,t为变换后的目标灰 度值。k为常数。灰度的对数变换可以增强一幅图像 中较暗部分的细节,可用来扩展被压缩的高值图像中 的较暗像素。广泛应用于频谱图像的显示中。
Warning:log函数会对输入图像矩阵s中的每个元素进行
操作,但仅能处理double类型的矩阵。而从图像文件中得到的 图像矩阵大多是uint8类型的,故需先进行im2double数据类型 转换。
/3、图像的几何变换
四、图像中心旋转
B=imrotate(A,angle,method,’crop’);
angle为旋转角度,正值为逆时针旋转。可选参数method为imrotate函数 指定插值方法。‘crop’选项会裁减旋转后增大的图像,保持和原图像 同样大小。
A=imread('nir.bmp'); B=imrotate(A,30,'nearest','crop'); figure;imshow(B);imwrite(B,'逆时针中心旋转30度.bmp');
参数transformtype指定了变换的类型,常见的’affine’为二维或 多维仿射变换,包括平移、旋转、比例、拉伸和错切等。
Matrix为相应的仿射变换矩阵。
A=imread('nir.bmp'); [height,width,dim]=size(A); tform=maketform('affine',[-1 0 0;0 1 0;width 0 1]); B=imtransform(A,tform,'nearest'); tform2=maketform('affine',[1 0 0;0 -1 0;0 height 1]); C=imtransform(A,tform2,'nearest'); figure;imshow(A); figure;imshow(B);imwrite(B,'nir水平镜像.bmp'); figure;imshow(C);imwrite(B,'nir垂直镜像.bmp');
/3、图像的几何变换
二、图像镜像
B=imtransform(A,TFORM,method); TFORM=makeform(transformtype,Matrix);%空间变换结 构
Method合法值 ‘bicubic’ ‘bilinear’ ‘nearest’
含义 双三次插值 双线性插值 最近邻插值
原 图 像
滤 波 后 图
像
/4、空间域图像增强 三、滤波器设计
h=fspecial(type,parameters)
parameters为可选项,是和所选定的滤波器类型type相关的 配置参数,如尺寸和标准差等。
type为滤波器的类型。其合法值如下:
合法取值 ‘average’
‘disk’ ‘gaussian’ ‘laplacian’
/3、图像的几何变换
I=imread('nir.bmp'); se=translate(strel(1),[180 190]); B=imdilate(I,se); figure;subplot(1,2,1),subimage(I);title('原图像'); subplot(1,2,2),subimage(B);title('平移后图像');
figure;%创建一个新的窗口
figure;subplot(m,n,p);imshow(I);
Subplot(m,n,p)含义为:打开一个有m行n列图像位置的窗口, 并将焦点位于第p个位置上。
/1、图像的读取和显示 四、图像的格式转换
im2bw(I,LEVEL);
阈值法从灰度图、RGB图创建二值图。LEVEL为指定的阈值;(0,1)。
kittlerMet : 表示kittler 最小分类错误(minimum error thresholding)全局二 值化算法。
直
原
接
图
阈
像
值
分
割
0.25
算 法
算 法 算 法
割
分
法
算
OTSU
Niblack
KittlerMet
Kapur
割
分
值
阈
动
自
/2、图像的点运算
五、直方图均衡化
DB f
原图像
水平镜像图像
垂直镜像图像
/3、图像的几何变换
三、图像转置
A=imread('nir.bmp'); tform=maketform('affine',[0 1 0;1 0 0;0 0 1]); B=imtransform(A,tform,'nearest'); figure;imshow(A); figure;imshow(B);imwrite(B,'nir转置后图像.bmp');
数字图像处理
浙江大学
/1、图像的读取和显示 /2、图像的点运算 /3、图像的几何变换 /4、空间域图像增强 /5、频率域图像增强 /6、彩色图像处理 /7、形态学图像处理 /8、图像分割 /9、特征提取
/1、图像的读取和显示
一、图像的读取
A=imread(FILENAME,FM T)
FILENAME 指定图像文件的完整路径和文件名。如果在work工作目录下 只需提供文件名。FMT为图像文件的格式对应的标准扩展名。 I_1=imread('D:\10.06.08nir\TTC10377.BMP');%读入图像 二、图像的写入
thresh=graythresh(I);%自动设定所需的最优化阈值
OTSU算法:最大类间方差法自动单阈值分割。
Kapur算法:一维直方图熵阈值算法
niblack算法:局部阈值分割 阈值的计算公式是T = m + k*v,其中m为以该像素点为中心的区域的平 均灰度值,v是该区域的标准差,k是一个系数。
逆 时 针 度
30
/4、空间域图像增强 一、噪声添加
h=imnoise(I,type,parameters);
type为噪声类型,合法值如下:
‘gaussian’
高斯白噪声:幅度为高斯分布,功率谱均匀分 布
‘salt&pepper’
黑点如胡椒,白点如盐粒。由图像传感器、传 输信道、解码处理、图像切割等产生的黑白相 间的亮暗点噪声。
添 加 高 斯 白 噪 声
添 加 椒 盐 噪 声
/4、空间域图像增强 二、空间域滤波
滤波过程就是在图像f(x,y)中逐点移动模板,使模板中心和点(x,y)重合,滤波器 在每一点(x,y)的响应是根据模板的具体内容并通过预先定义的关系来计算的。
W(-1,-1) W(-1,0) W(-1,1)
W(0,-1) W(0,0) W(0,1)
‘log’ ‘prewitt’ ‘sobel’
功能 平均模板 圆形领域的平均模板 高斯模板 拉普拉斯模板 高斯-拉普拉斯模板 Prewitt水平边缘检测算子 Sobel水平边缘检测算子
/4、空间域图像增强 四、中值滤波
中值滤波本质上是一种统计排序滤波器。中值不同于均值,是指排序 队列中位于中间位置的元素的值。中值滤波并非线性滤波器。对于某 些类型的随机噪声具有非常理想的降噪能力。典型的应用就是消除椒 盐噪声。
h=medfilt2(I1,[m,n]);
m和n为中值滤波处理的模板大小,默认3*3
/4、空间域图像增强
五、图像锐化
图像锐化主要用于增强图像的灰度跳变部分,主要通过运算导数(梯度) 或有限差分来实现。主要方法有:Robert交叉梯度,Sobel梯度,拉普拉 斯算子,高提升滤波,高斯-拉普拉斯变换。
imwrite(A,FILENAME,FMT)
FILENAME参数指定文件名。FMT为保存文件采用的格式。 imwrite(I6,'nirdilatedisk2TTC10373.bmp');
/1、图像的读取和显示
三、图像的显示
imshow(I,[low high])
I为要显示的图像矩阵。[low high]为指定显示灰度图像的灰度范围。 高于high的像素被显示成白色;低于low的像素被显示成黑色;介于 High和low之间的像素被按比例拉伸后显示为各种等级的灰色。 figure;imshow(I6);title('The Main Pass Part of TTC10373');
rgb2gray;从RGB图创建灰度图,存储类型不变。 im2uint8 将图像转换成uint8类型
im2double 将图像转换成double类型
/2、图像的点运算
一、图像直方图
灰度直方图描述了一副图像的灰度级统计信息,主要应用于图像分 割和图像灰度变换等处理过程中。从数学角度来说,图像直方图描述图 像各个灰度级的统计特性,它是图像灰度值的函数,统计一幅图像中各 个灰度级出现的次数或概率。归一化直方图可以直接反映不同灰度级出 现的比率。横坐标为图像中各个像素点的灰度级别,纵坐标表示具有各 个灰度级别的像素在图像中出现的次数或概率。
/2、图像的点运算
三、灰度的Gamma变换
y x esp
其中,x、y的取值范围为[0,1]。esp为补偿系数,r则为Gamma系数。 Gamma变换是根据r的不同取值选择性的增强低灰度区域的对比度 或者高灰度区域的对比度。
J=imadjust(I,[low_in high_in],[low_out high_out],gamma)
/2、图像的点运算
二、灰度的线性变换
DB f DA f ADA fB
Fa>1时,输出图像的对比度将增大;Fa<1时,输出图像对比度将减小。 Fa=1且Fb非零时,所有像素的灰度值上移或下移,使整个图像更暗或 更亮。Fa<0,暗区变亮,亮区变暗。
/2、图像的点运算
三、灰度的对数变换
t c logk s
I=imread('nir.bmp');%读入图像
F=fft2(im2double(wenku.baidu.com));%FFT F=fftshift(F);%FFT频谱平移
F=abs(F); T=log(F+1);%频谱对数变换 figure;imshow(F,[]);title('未经变换的频谱'); figure;imshow(T,[]);title('对数变换后');
图像直方图归一化
imhist(I);%灰度直方图
I=imread(‘red.bmp’);%读入图像 figure;%打开新窗口 [M,N]=size(I);%计算图像大小 [counts,x]=imhist(I,32);%计算有32个小区间的灰度直方图 counts=counts/M/N;%计算归一化灰度直方图各区间的值 stem(x,counts);%绘制归一化直方图
I=imread('nir.bmp'); figure;imshow(imadjust(I,[],[],0.75)); %gamma=0.5 title('Gamma 0.5');
原
图 像
NIR
Gamma 0.5
Gamma 1.5
四、灰度阈值变换及二值化
f
x
0 255
x x
T T
T为指定阈值
BW=im2bw(I,level);%level为人工设定阈值范围为[0 ,1]
原 图 像 及 直 方 图
图像变暗后灰度均衡化 图像变亮后灰度均衡化
/3、图像的几何变换
一、图像平移
正变换
1 0 0
[ x1 y1 1] [ x0 y0 1] 0 1 0
Tx
Ty
1
逆变换
1
0 0
[x0 y0 1] [x1 y1 1] 0
1 0
Tx
Ty
1
strel %用来创建形态学结构元素 translate(SE,[y x])%原结构元素SE上y和x方向平移 imdilate%形态学膨胀