当前位置:文档之家› 基于matlab的数字图像处理常用函数

基于matlab的数字图像处理常用函数

基本界面
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]是邻域的大小
13.自适应滤波器
B=wiener2(A,[m,n])
14.图像的分析
P=impixel(I)%交互式获取图像像素值
P=impixel(I,c,r)%指定点坐标像素值,c、r为行坐标和列坐标
C=improfile(I,xi,yi,n,method)%创建图像强度曲线,n规定了计算图像强度点的个数,xi、yi规定了空间直线端点坐标,method是插值方法(nearest,bilinrar,bicubic)
imcontour(I,n,linespec)%显示图像数据的等值线图
15.图像的统计信息
B=mean(A)%计算A的均值
b=std2(A)%计算A的标准差
r=corr2(A,B)%A,B为输入二维矩阵,r是返回的协方差系数
a=rgb2gray()。

相关主题