当前位置:
文档之家› MATLAB数字图像处理中的指令用法
MATLAB数字图像处理中的指令用法
• • • • • •
imshow(BW)显示一张二值图像BW imshow(X,map)用指定的调色板来显示图像 imshow(RGB)显示一张真彩色图像RGB imshow(...,display_option) imshow(x,y,A,...) imshow filename
• • • •
• • • • •
13.meshgrid
• • • • • • • • • • • • • • 函数功能生成绘制3-D图形所需的网格数据。在计算机中进行绘图操作时, 往 往需要一些采样点,然后根据这些采样点来绘制出整个图形。在进行3-D绘图 操作时,涉及到x、y、z三组数据,而x、y这两组数据可以看做是在Oxy平面 内对坐标进行采样得到的坐标对(x, y)。 例如:画一个128*128,截止频率为15的理想滤波器 for u=1:128 for v=1:128 if sqrt((u-64)^2+(v-64)^2)<=15 H(u,v)=1; else H(u,v)=0; end end end imshow(H); [u,v]=freqspace(128,'meshgrid'); figure,mesh(u,v,H)
• matlab中,每个figure都有(而且仅有)一个colormap,翻 译过来就是色图。 • COLORMAP(MAP) 用MAP矩阵映射当前图形的色图。 • COLORMAP('default') 默认的设置是 JET. • MAP = COLORMAP 获得当前色图矩阵. • COLORMAP(AX,...) 应用色图到AX坐标对应的图形,而非当 前图形. • MAP实际上是一个mx3的矩阵,每一行的3个值都为0-1之 间数,分别代表颜色组成的rgb值,[1 0 0] 代表红色,[0 1 0]代表绿色,[0 0 1]代表蓝色。系统自带了一些colormap, 如:winter、autumn等。输入winter,就可以看到它是一 个64x3的矩阵。用户可以自定义自己的colormap,而且不 一定是64维的。
6.imsubstract
• 功能:图像间减操作或从图像中减去常量 • 用法:Z = imsubtract(X,Y) • 将矩阵X,Y中对应的元素值做差,差值返 回到矩阵Z中。X,Y是具有相同大小和相同 类型的非稀疏实数矩阵,或者Y是一个 double型的纯量。返回矩阵Z和X大小和类型 相同,除非X为逻辑矩阵,此时Z为double型。 如果X是整型矩阵,那么超出整型数据范围 的数据将被舍弃。
• • • • • • •
11.imcomplement
• 可以对图像数据进行取反运算(实现底片效果) • 调用格式: IM2 = imcomplement(IM) • 参数说明: IM是源图像的数据, IM2是取反后 的图像数据。 • >> I = imread('plane.bmp'); • >> subplot(121); • >> imshow(I); • >> J=imcomplement(I); • >> subplot(122); • >> imsho• • • • • • • •
例如: >> plane=imread('plane.bmp'); >> I=double(plane); >> J=I*0.43+90; >> K=I*0.1+90; >> L=I*0.01+90; >> plane2=uint8(J); >> plane3=uint8(K); >> plane4=uint8(L); >> J=imdivide(plane,plane2); >> K=imdivide(plane,plane3); >> L=imdivide(plane,plane4); >> subplot(1,4,1),imshow(plane); >> subplot(1,4,2),imshow(J,[]); >> subplot(1,4,3),imshow(K,[]); >> subplot(1,4,4),imshow(L,[]);
1.imagesc
• imagesc是软件Matlab中的一个函数。 • >>imagesc(A)将矩阵A中的元素数值按大小转 化为不同颜色,并在坐标轴对应位置处以这 种颜色染色。 • 例如:Imagesc(1:8); • >>imagesc(x,y,A) x, y分别为二维向量,Matlab 会在[x1,x2]*[y1,y2]范围内染色。
2.colormap
3.subplot
• subplot是MATLAB中的函数。 • 使用方法:subplot(m,n,p)或者subplot (m n p)。 • subplot是将多个图画到一个平面上的工具。 其中,m表示是图排成m行,n表示图排成n 列,也就是整个figure中有n个图是排成一行 的,一共m行,如果m=2就是表示2行图。p 表示图所在的位置,p=1表示从左到右从上 到下的第一个位置。
4.imshow
• imshow(I,n) • imshow(I,[low high]) • 用指定的灰度范围 [low high]显示灰度图像I。 显示结果,图像中灰度值等于或低于low的都 将用黑色显示,而灰度值大于等于high的都显 示为白色,介于low和high之间的用其灰度级 的默认值的中间色调显示。如果你用了一个空 矩阵([]) 来代替 [low high], imshow 函数将使 用 [min(I(:))max(I(:))]作为第二个参数。
8.imdivide
• Z=imdivide(X,Y)将矩阵X中每一个元素除以矩 阵Y中对应元素,返回值为X和Y具有相同的 维数或数据类型,或者Y是一个数值型常量。 Z的维数或数据类型与X相同。如果X和Y为 整型矩阵,运算的结果可能超出图像数据 类型所支持的范围,这时MATLAB自动将数 据截断为数据类型所支持的范围内。
14.取整函数
(1)fix(x) : 截尾取整
>> fix( [3.12 -3.12]) ans = 3 -3
(3)ceil(x) : 大于x 的最小整数 >> ceil( [3.12 -3.12])
ans = 4 -3 (4)四舍五入取整 >> round([3.12 -3.12]) ans = 3 -3
(2)floor(x):不超过x 的最大 整数.(高斯取整) >> floor( [3.12 -3.12])
ans = 3 -4
例如: >> bright=ones(256,256); >> bright(64:192,64:192)=0.5; >> imshow(bright);
5.imadjust
• J = imadjust(I) • 将灰度图像 I 中的亮度值映射到 J 中的新值,使得图像中 1% 的 数据饱和至最低和最高亮度,这可以增加输出图像 J 的对比度 值。此用法相当于 imadjust(I,stretchlim(I)) • J = imadjust(I,[low_in; high_in],[low_out; high_out]) • 将图像I中的亮度值映射到J中的新值,即将low_in至high_in之间 的值映射到low_out至high_out之间的值。low_in 以下与 high_in 以上的值被剪切掉了,也就是说,low_in 以下的值映射到 low_out,high_in 以上的值映射到high_out。它们都可以使用空 的矩阵[],默认值是[0 1]。 • J = imadjust(I,[low_in; high_in],[low_out; high_out],gamma) • 将图像 I 中的亮度值映射到 J 中的新值,其中 gamma指定描述 值I和值J关系的曲线形状。如果gamma小于1,此映射偏重更高 数值(明亮)输出,如果gamma大于1,此映射偏重更低数值 (灰暗)输出,如果省略此参数,默认为(线性映射)。
12.histeq
• 功能:直方图均衡化。 用法: J = histeq(I,hgram) 将原始图像I的直方图变成用户指定的向量hgram。 hgram中的各元素的值域为[0,1]。 J = histeq(I,n) 指定直方图均衡后的灰度级数n,默认值为64。 [J,T] = histeq(I,...) 返回从能将图像I的灰度直方图变换成图像J的直方图 变换T。 newmap = histeq(X,map,hgram) newmap = histeq(X,map) [newmap,T] = histeq(X,...) 这三个是针对索引图像调色板的直方图均衡化,用法和灰度图像的一 样。 举例: >> I = imread('plane.bmp'); >> subplot(121); >> imshow(I); >> J = histeq(I); >> subplot(122); >> imshow(J);
7.immultiply
• · Z=immultiply(X,Y)将矩阵X中每一个元素乘以矩 阵Y中对应元素,返回值为Z。如果X和Y的维数 或数据类型相同,则Z与X和Y也具有相同的维 数或数据类型;如果X为一个数值型矩阵而Y为 一个整型变量,则Z的维数或数据类型与X相同: 如果X为逻辑型而Y为整型,则Z的维数或数据 类型与Y相同:如果Y为逻辑型而X为整型,则Z 的维数或数据类型与X相同。如果X为整垫矩阵, 运算的结果可能超出图像数据类型所支持的范 围,这时.MATLAB自动将数据截断为数据类型 所支持的范围内。