基于matlab的数字图像处理常用函数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基本界面
1-1、基本运算与函数
在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如:
>> (5*2+1.3-0.8)*10/25
ans =4.2000
MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。
小提示:">>"是MATLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。
我们也可将上述运算式的结果设定给另一个变数x:
x = (5*2+1.3-0.8)*10^2/25
x = 42
若要输入矩阵,则必须在每一列结尾加上分号(;),如下例:
A = [1 2 3 4; 5 6 7 8; 9 1011 12];
A =
1 2 3 4
5 6 7 8
9 10 11 12
同样地,我们可以对矩阵进行各种处理:
A(2,3) = 5 % 改变位於第二列,第三行的元素值
A =
1 2 3 4
5 6 5 8
9 10 11 12
B = A(2,1:3) % 取出部份矩阵B
B = 5 6 5
A = [A B'] % 将B转置後以列向量并入A
A =
1 2 3 4 5
5 6 5 8 6
9 10 11 12 5
A(:, 2) = [] % 删除第二行(:代表所有列)
A =
1 3 4 5
5 5 8 6
9 11 12 5
A = [A; 4 3 2 1] % 加入第四列
A =
1 3 4 5
5 5 8 6
9 11 12 5
4 3 2 1
A([1 4], :) = [] % 删除第一和第四列(:代表所有行)
A =
5 5 8 6
9 11 12 5
这几种矩阵处理的方式可以相互叠代运用,产生各种意想不到的效果,就看各位的巧思和创意。
小提示:在MATLAB的内部资料结构中,每一个矩阵都是一个以行为主(Column-oriented )的阵列(Array)因此对於矩阵元素的存取,我们可用一维或二维的索引(Index)来定址。举例来说,在上述矩阵A中,位於第二列、第三行的元素可写为A(2,3) (二维索引)或A(6)(一维索引,即将所有直行进行堆叠後的第六个元素)。
此外,若要重新安排矩阵的形状,可用reshape命令:
B = reshape(A, 4, 2) % 4是新矩阵的行数,2是新矩阵的列数
B =
5 8
9 12
5 6
11 5
小提示:A(:)就是将矩阵A每一行堆叠起来,成为一个列向量,而这也是MATLAB变数的内部储存方式。以前例而言,reshape(A, 8, 1)和A(:)同样都会产生一个8x1的矩阵。
1,图像的读入和显示:
(1)图像读入:A=imread('文件名',文件格式)
[X,map]=imread('文件名') %X代表索引图像矩阵,map为颜色映射表
(2)图像显示:image(A);
2. 图像写回
A=imwrite('文件名',文件格式)
[X,map]=imwrite('文件名')%注意,当只写文件名时,它应带有扩展名
3.获取图像信息
info=imfinfo('文件名') 4.标准图像显示技术
(1)imshow(I,n)%显示灰度图像,n为灰度级数
(2)imshow(I,[low,high])%[low,high]为图像数据的值域(可为空[ ])
(3)imshow(BW)%显示二值图像
(4)imshow(X,map)%显示索引色图像
5.图像的运算
(1)Z=imadd(X,Y)%图像的加运算,X,Y是输入的两幅图像,其中一个可以是常数
(2)Z=imsubtract(X,Y)%图像的减运算,Y可以是常数
(3)Z=immiltiply(X,y)%图像的乘运算,Y也可以是常数
(4)Z=imdivide(X,y)%图像的除运算,Y也可以是常数
6.图像的类型转换
(1)RGB=ind2rgb(X,map)%索引图转换为真彩色图
(2)I=mat2gray(A)%将一个数据矩阵转换为灰度图
(3)I=rgb2gray(RGB)%将一副灰度图转换为真彩色图
(4)[X,map]=rgb2ind(RGB,n)%将RGB图转换为索引色图
(5)BW=im2bw(I,level)%将真彩色图或灰度图转换为二值图,level为阈值
BW=im2bw(X,map,level)%将索引色图转换为二值图
(6)I=ind2gray(X,map)%将索引色图转换为灰度图
7.傅里叶变换
(1)Y=fft2(x,m,n)%二维离散傅里叶快速变换,x为要进行傅里叶变换的矩阵,m、n是返回的变换矩阵Y的行数和列数。
(2)Y=ifft2(x,m,n)%二维离散傅里叶反变换
(3)Y1=fftshift(Y)%把傅里叶变换操作得到的结果中零频率成分移到矩阵中心,这样利于观察频谱。
8.离散余弦变换
(1)D=dct2(A,m,n)%二维离散余弦变换,A是输入图像,B是返回的DCT变换系数,m、n为D的行数和列数(2)D=idct(A,m,n)%e二维离散余弦逆变换。
(3)D=dctmtx(n)%返回DCT变换矩阵
9.Radon变换
[R,xp]=radon(I,theta)%I为图像矩阵,theta为角度
I=iradon(R,thrta)%逆Radon变换
10.图像的增强(1)
(1)imhist(I)%显示一副图像的直方图
(2)J=histeq(I)%直方图均衡化
(3)J=imadjust(I,[low_in;high_in],[low_out;high_out],gamma)%调整图像灰度值
(4)J=adapthisteq(I)%有限对比自适应直方图均衡化
(5)S=decorrestretch(I)%去相关色度拉伸
11.图像的增强(2)
B=imfilter(A,H,option1,option2,...)
A是输入图像,H是卷积核或相关核,option是一些可选参数。
注:权重矩阵称为卷积核,也称为滤波器。卷积核是相关核旋转180度得到的,可选参数参看help
其中H也用H=fspecial(type,parameters)可自定义
12.中值滤波器
B=medfilt2(A,[m,n])%A是输入的图像,[m,n]是邻域的大小