当前位置:文档之家› MATLAB图象处理函数

MATLAB图象处理函数

MATLAB图象处理函数1. 图象文件处理I=imread(filename)_______读入图象文件到内部矩阵图象变量(以后简称图象)imwrite(I,filename)_______将指定图象写到磁盘的图象文件(以后简称图象文件)上imfinfo(filename)_______显示图象文件的信息2. 图象显示2.1 基本显示imshow filename______直接在当前窗口显示图象文件imshow(I)______在当前窗口显示指定图象rgb = getimage______将当前窗口显示的图象读入到矩阵图象变量2.2 多幅图象的显示figure;imshow(I,map)______在新的图象窗口上显示指定图象(多幅图象显示在不同的图象窗口上)subplot(m,n,p);imshow(I,map)____在图象窗口的指定位置上显示指定图象(多幅图象显示在同一个图象窗口上)[会因不同图象的map不同而用完系统颜色导致显示出错(尤其是8bit显示系统上)]subplot(m,n,p);subimage(I,map)____在图象窗口的指定位置上显示指定图象(多幅图象显示在同一个图象窗口上)[subimage先将图象转化为RGB图象然后再显示,因而不同图象的map不同而用完系统颜色导致显示出错]2.3 图象显示的放大和缩小(1)用图象窗口的工具按钮实现[略](2)用命令窗口的函数实现zoom on______允许进行放大和缩小zoom in______对图象进行放大zoom out_____对图象进行缩小zoom off_____禁止进行放大和缩小3. 图象的运算Z = imabsdiff(X,Y) _____求两图象差的绝对值Z = imadd(X,Y) _____图象相加IM2 = imcomplement(IM) _____求图象的补Z = imdivide(X,Y) _____两图象对应象素相除或图象除以常数Z = imlincomb(K1,A1,K2,A2,...,Kn,An) _____计算一系列图象的线性组合图象Z = immultiply(X,Y) _____两图象对应象素相乘或图象乘以常数Z = imsubtract(X,Y) _____图象相减4. 图象处理在MA TLAB中,图象是以矩阵的形式存放的,二值图象、灰度图象和索引(Indexed)图象用二维矩阵存放,彩色(RGB)图象用三维矩阵存放。

前一类图象可以通过双下标访问图象的象素,如I(i,j),彩色(RGB)图象可以通过三下标访问图象的象素,如I(i,j,k),k=1,2,3分别表示R、G和B三个彩色分量。

4.1 图象直方图imhist(I)_______绘制指定图象变量的直方图到当前窗口I1=histeq(I)_______求指定图象的直方图均衡化图象4.2 图象的灰度变换J = imadjust(I,[low_in high_in],[low_out high_out])______调整图象的灰度范围level = graythresh(I)_______求图象的全局门限以便对图象进行二值化处理BW = im2bw(I,level)[BW = im2bw(X,map,level),BW = im2bw(RGB,level)]_____按指定的门限将指定图象I转化为二值图象。

4.3 图象的格式转换I2=im2double(I1)_____将图象转换为双精度格式I2=im2uint8(I1)_____将图象转换为8比特字节格式I2=im2uint16(I1)_____将图象转换为16比特字格式4.4 多帧图象的处理Im=cat(4,I1,I2,I3,…)______将多幅图象I1,I2,I3,…在第4维上合成一个多帧图象Im (cat为矩阵连接函数,cat(2,A,B) 等价于[A,B],cat(1,A,B) 等价于[A;B])Frm3 = Im(:,:,:,3)_________取多帧图象Im的第3幅图象(可用于赋值、显示)Imshow(Im(:,:,:,3))________显示多帧图象Im的第3幅图象montage(Im)_______同时显示多帧图象Im的各幅图象(按列方式组成一个近似正方型)mov = immovie(Im)_____将多帧图象Im转化为电影图象movmovie(mov)_____显示电影图象mov===================== 例=========================The following example loads mri.tif and displays the third frame.% Initialize an array to hold the 27 frames of mri.tifmri = uint8(zeros(128,128,1,27));for frame=1:27 % Read each frame into the appropriate frame in memory[mri(:,:,:,frame),map] = imread('mri.tif',frame);endimshow(mri(:,:,:,3),map);================================================4.5 图象的几何变换4.5.1图象尺寸变换B = imresize(A,m,method)_____将图象A放大(m>1.0)或缩小(0<m<1.0)m倍B = imresize(A,[mrows ncols], method) _____将图象A变换为mrows行ncols列的图象B = imresize(...,method,n) _____用nX n模板完成上述几何变换插补中的滤波B = imresize(...,method,h) _____用指定的模板h完成上述几何变换插补中的滤波method: 一个可选的参数,决定几何变换插补的方法,可取值如下:'nearest' (default) uses nearest neighbor interpolation.'bilinear' uses bilinear interpolation.'bicubic' uses bicubic interpolation.4.5.2图象旋转变换B = imrotate(A,angle, method)____将图象A按指定的插补方法旋转指定的角度,产生一个足够容得下原始图象的新图象。

B = imrotate(A,angle, method,'crop') ____将图象A按指定的插补方法旋转指定的角度,产生一个与原始图象一样大小的新图象。

4.5.3图象修剪处理I = imcrop______交互地选择当前图象窗口的一个区域并赋值给一个新的图象4.6 图象的校正(Registration)(1)读入原图象和待校正图象(2)调用cpselect()函数,选择控制点对,保存控制点对(3)调用cpcorr()函数,微调控制点对[可选](4)调用cp2tform()函数,得到变换参数(5)调用imtransform()函数,用变换参数对待校正图象进行校正变换4.7 图象的邻域处理和块处理4.7.1 模板处理(滑动邻域操作)对每一个象素按指定的领域进行指定的操作处理。

输出图象和输入图象的大小一样。

B = nlfilter(A,[m n],fun)____对图象A按mXn模板调用指定函数进行模板处理B = nlfilter(A,[m n],fun,P1,P2,...) ____对图象A按mXn模板调用指定函数以及附加参数P1,P2,..进行模板处理例如:B = nlfilter(a,[3 3],'min(max(x))*P1+P2',0.5,1)____表示对图象A的每一个象素用其八邻域每列最大值的最小值乘以0.5再加上1代替。

B = nlfilter(A,'indexed',...) ____对索引图象A进行上述模板处理fun可以是MA TLAB表达式或内建函数字符串,如‘mean2’、‘std2’、‘corr2’和‘x*2’,也可以是函数句柄(@函数名)或嵌入函数对象(fun = inline('max(x(:))');),所指定的函数必须接受mXn矩阵且返回一个标量。

4.7.2 独立分块处理将图象划分为指定大小的分块,然后对每一个块按指定的操作处理,输出图象的每一块内象素个数和取值决定于所指定的操作。

B = blkproc(A,[m n],fun) ____对图象A按mXn分块调用指定函数进行独立分块处理B = blkproc(A,[m n],fun,P1,P2,...) ____对图象A按mXn分块调用指定函数以及附加参数P1,P2,..进行独立分块处理例如:B = blkproc (A,[3 3],’ P1*x*P2’,P1,P2)____表示对图象A的每一个3X3分块分别用左乘矩阵P1再右乘矩阵P2后的矩阵代替。

B = blkproc(A,[m n],[mborder nborder],fun,...) ____对图象A按mXn大小和mborder行nborder列重叠分块调用指定函数进行独立分块处理B = blkproc(A,'indexed',...) ____对索引图象A进行上述独立分块处理fun可以是MA TLAB内建函数名字符串,如‘mean2’,‘std2’和‘corr2’,也可以是函数句柄(@函数名)或嵌入函数对象(fun = inline('max(x(:))');),所指定的函数必须接受mXn矩阵,可以返回一个矩阵(可以与输入矩阵大小一样,也可以不一样)、一个向量或一个标量。

4.7.3 按列向量进行模板和独立分块处理调用函数colfilt,先将图象的分块变换为一个临时的列块矩阵数据,然后将该临时矩阵一次性传给指定函数,该函数可以按列对临时矩阵进行处理然后返回同样大小的矩阵,colfilt 函数会将输出矩阵转化回原图象的分块作为输出。

B = colfilt(A,[m n],'sliding',f)____按列向量进行模板处理B = colfilt(A,[m n],'distinct',f)____按列向量进行独立分块处理4.8 图象的线性滤波和滤波器设计4.8.1 图象的线性滤波B = imfilter(A,H)_____对图象A按H指定的滤波核进行相关滤波处理B = imfilter(A,H,option1,option2,...) _____对图象A按H指定的滤波核进行指定滤波处理option1,option2,等可以是以下选项:X____滤波过程中,图象边界以外的象素的取值为数值X[默认值是0]'symmetric'____滤波过程中,图象边界以外的象素的取值为以边界对称的象素的值。

相关主题