Matlab图像处理入门

1.Matlab基础

1.1数据格式

Matlab默认的数据格式为双精度浮点数的矩阵或数组,同时支持其它数据类型。Matlab将单变量看作1´1的数组。Matlab支持的数据类型如下:

索引值从1开始。字符串须用单引号括起来。有些matlab函数或操作符只能用于双精度浮点数。

1.2基本运算

1.2.1 赋值,如 A = [1 2 3],A = [1,3,5],A = [1:3],A = [1:0.5:3],则A是个行向量,各元素值分别为:1 2 3 1 3 5 1 2 3 1 1.5 2 2.5 3;A = [1;2;3]是列向量。

B = [1 2 3;4 5 6]是个2´3的矩阵或数组。若再执行 B = A,则B变为与A相同的行向量。

B=A’得到A的转秩。

B = A(r1:r2,c1:c2) 将A的一个子块赋给B,该子块在A中的位置由行号r1,r2(r1<=r2) 及列号c1,c2(c1<=c2)决定;A(r1:r2,c1:c2) = B将B赋给A的一个子块,B的大小必须是(r2-r1+1)´(c2-c1+1);

A(r1:r2,c1:c2) = B(m1:m2,n1:n2) 将B的一个子块赋给A的一个子块,同样,两个子块的大小必须相等。

1.2.2 加+,减-,要求两个变量的行、列数相等。对于数组,乘除运算符为.*./,称为点乘和点除,同样要求两个变量的行、列数相等,运算是将相同位置的两个元素相乘或相除。

1.2.3 for, while, switch, ¼

2.常用的Matlab基本图像处理函数

详细内容请参考matlab帮助。

2.1文件读写

l 读图像:imread

A = imread(filename,fmt);将图像像素值读出并赋给变量A。

[X,map] = imread(filename,fmt);X为图像数组,map是图像的调色板。

参数:filename是文件名,fmt是图像文件的格式。如果图像文件不在Matlab默认路径中(当前默认路径可用path函数查看),则filename必须是全路径名。fmt可以是 \'bmp\'(位图图像),\'jpg\' 或 \'jpeg\'(JPEG图像),\'tif\' 或 \'tiff\'(TIFF图像)等多种常用格式。如果文件名filename中含有表示图像格式的后缀名,如 \'test.tif\',则参数fmt可以省略。

l 图像存盘:imwrite

imwrite(A,filename,fmt);用于真彩色图像存盘。

imwrite(X,map,filename,fmt) ;用于伪彩色图像存盘。

2.2显示

imshow(X),按图形窗口默认的调色板显示图像。

imshow(X,map),按map规定的调色板显示图像。

图像数组X可以是整数或浮点数。若X是整数,则其取值范围应为0~255,0表示最暗,255表示最亮;若X是浮点数,则其取值范围应为0~1,0表示最暗,1表示最亮。若X是浮点数,可通过uint8(X)强制转换成单字节整数。

函数min()和max()用来求向量或矩阵的最小、最大值。对向量V,min(V)返回其最小值;对于矩阵X,min(X(:))返回其最小值。

plot 画曲线。

2.3几何运算

l 改变图像尺寸:imresize

B = imresize(A,m,method);将图像A的行、列数变为原来的m倍,结果图像由B输出。method是采用的插值方法,\'nearest\' (缺省) 采用最临近插值(零阶插值),\'bilinear\' 采用双线性插值,\'bicubic\' 采用双立方插值。如果省略参数method,则采用最临近插值进行变换。

l 图像旋转:imrotate

B = imrotate(A,angle,method);将图像按逆时针方向旋转angle度,结果图像由B输出。顺时针旋转时angle为负。

B = imrotate(A,angle,method,\'crop\');输出图像B四边被裁减,使其大小与A相同。

参数method同上。

2.4统计运算

l 直方图:imhist

imhist(I);画图像I的直方图。

l 图像均值:b = mean2(A);计算图像A的像素平均值,即平均亮度。

l 图像方差:b = std2(A);计算图像A的方差。

2.5图像增强

l 灰度调整:imadjust

J = imadjust(I,[low_in high_in],[low_out high_out],gamma);

将图像灰度由[low_in high_in]调整到[low_out high_out],gamma是调整的线性度,缺省为1,即线性调整。原图像I必须是double型,最大灰度区间为[0 1],可以用函数im2double()将图像转为这种格式。可以用im2uint8()将结果J转为8位灰度图像。

l 直方图均衡:J = histeq(I);采用直方图均衡对图像I进行增强。

imnoise

2.6边缘提取

edge:实现6种不同的边缘提取方法:

Ø BW = edge(I,\'sobel\'); BW = edge(I,\'sobel\',TH); BW = EDGE(I,\'sobel\',TH,DIR);

采用Sobel算子增强后进行边缘提取。TH是提取边缘的阈值,若不给定该参数,则函数自行确定阈值。DIR给定边缘提取的方向,可以是\'horizontal\'、\'vertical\' edges、或 \'both\' (the default)。

Ø BW = EDGE(I,\'prewitt\'); BW = EDGE(I,\'prewitt\',TH);BW = EDGE(I,\'prewitt\',TH,DIR)

采用Prewitt算子增强后进行边缘提取。TH是提取边缘的阈值,若不给定该参数,则函数自行确定阈值。DIR给定边缘提取的方向,可以是\'horizontal\'、\'vertical\' edges、或 \'both\' (the default)。

Ø BW = EDGE(I,\'roberts\') ; BW = EDGE(I,\'roberts\',THRESH)

采用Rroberts算子增强后进行边缘提取。THRESH是提取边缘的阈值,若不给定该参数,则函数自行确定阈值。

Ø BW = EDGE(I,\'log\');BW = EDGE(I,\'log\',THRESH);BW = EDGE(I,\'log\',THRESH,SIGMA);

采用Marr算子进行边缘提取。THRESH是提取边缘的阈值,SIGMA是标准差,缺省值为2,滤波器尺寸为N=CEIL(SIGMA*3)*2+1。

Ø BW = EDGE(I,\'zerocross\',TH,H);采用用户给定的滤波器H进行边缘增强后根据过零点提取边缘。

Ø BW = EDGE(I,\'canny\'); BW = EDGE(I,\'canny\',TH);BW = EDGE(I,\'canny\',TH,SIGMA);

Canny方法提取边缘。参数定义同Marr算子。

2.7二维滤波

l 生成特定的二维数字滤波器:fspecial

h = fspecial(type);

h = fspecial(type,parameters);

滤波器类型type可以是:

\'sobel\' for a Sobel horizontal edge-emphasizing filter

\'prewitt\' for a Prewitt horizontal edge-emphasizing filter

\'gaussian\' for a Gaussian lowpass filter

\'laplacian\' for a filter approximating the two-dimensional Laplacian operator

\'log\' for a Laplacian of Gaussian filter

\'average\' for an averaging filter

\'unsharp\' for an unsharp contrast enhancement filter

对于后边五种类型的滤波器,可以设置相应的滤波器参数parameter,若省略则取各自的缺省值。

l 采用频率抽样法生成二维数字滤波器:fsamp2

h = fsamp2(Hd);

fsamp2 designs two-dimensional FIR filters based on a desired two-dimensional frequency response sampled at points on the Cartesian plane.

h = fsamp2(Hd) designs a two-dimensional FIR filter with frequency response Hd, and returns the filter coefficients in matrix h. (fsamp2 returns h as a computational molecule, which is the appropriate form to use with filter2.)

l 二维滤波:filter2

B = filter2(h,A);对图像A作二维滤波,滤波器由上述方法产生。

l 中值滤波:medfilt2

B = medfilt2(A,[m n]);对图像A作中值滤波,邻域大小由[m n]决定,缺省为[3 3]。

2.8图像变换

fft2 ifft2 dct2 idct2

2.9邻域及块操作

blkproc nlfilter

3.类型转换

rgb2gray

4. Matlab集成环境及自定义Matlab函数

4.1 Matlab集成环境

Matlab集成环境的主体是它的“Command Window”,可在其中输入并执行各种matlab操作。比如输入matlab命令path并回车,则返回matlab当前?%B