MATLAB数字图像处理
MATLAB常用图像操作
转换图像类型
例1.对一幅图像进行二值化处理,代码及结果如下:
load trees
BW=im2bw(X,map,0.4);
imshow(X,map)
figure,imshow(BW)
将一幅索引色图像二值化的结果
例2.将索引色图像转化为灰度图像,其代码及结果如下:
load trees
I=ind2gray(X,map);
imshow(X,map)
figure,imshow(I)
例3.将索引色图像转化为真彩色图像,其代码及结果如下:
load trees
RGB=ind2rgb(X,map);
imshow(X,map)
figure,imshow(RGB)
例4.用Sobel算子对图像滤波,将滤波后的数据矩阵转换为灰度图像,代码如下:
I=imread(‘rice.tif’)
J=filter2(fspecial(‘soble’),I); %产生soble算子,并用soble算子对图像I进行滤波
K=mat2gray(J); %将数据矩阵转化为灰度图像
Imshow(I)
Figure,imshow(K)
例5.将一副灰度图像转化为索引色图像,代码如下:
I=imread(‘ndc4024m.tif’);
X=grayslice(I,16); %设定灰度级为16,将灰度图像转换为索引色图像
Imshow(I)
Figure,imshow(x,hot(16)) %用hot(16)产生调色板来显示索引色图像
例6.将一幅真彩色图像转换为灰度图像,其代码及结果如下:
load trees
I=rgb2gray(RGB);%将真彩色图像RGB转换为灰度图像I
imshow(RGB)
newmap=rgb2gray(map);%将彩色调色板map转换成灰度调色板
figure,imshow(I)
图像文件的显示
image是MATLAB本身提供的最原始的图像显示函数,其使用格式如下:
image(X);
colormap(map);
例如:MATLAB预存的一组数据,包含图像矩阵X和调色板矩阵map,下面语句用来显示图,其结果如下图所示。
load clown
image(X)
colormap(map)
axis equal
axis('off')
imshow函数是最常用的显示各种图像的函数,其语法如下:
imshow(I,n) 用于显示灰度图像,n为灰度级数目,默认值为256
imshow(I,[low high])
imshow(BW) %用于显示二值图像。
imshow(X,map) %用于显示索引色图像,X为数据图像矩阵,map为调色板。
imshow(RGB) %用于显示真彩色图像。
imshow(…,disply_option)
imshow(x,y,A,…)
imshow filename %可直接显示图像文件
下面的语句用来输出一幅图像滤波后的结果,
I=imread('race.tif')
J=filiter2([1 2;-1 -2],I) %用模板[1 2;-1 -2]对图像滤波。
imshow(I)
figure,Imshow(J,[]) %由于滤波后图像灰度范围与滤波之前不同,所以用[]来作为参数。
colorbar函数用于显示颜色调,并将图像中使用到的色彩排列在图像旁边,这样可以根据图像的色彩确定某个像素的值。
colorbar函数语法格式如下:
colorbar(‘vert’)
colorbar(‘horize’)
colorbar(h)
colorbar
h=colorbar(…)
下面的例子用LoG算子对图像滤波,在输出图像上加颜色条,
I=imread('saturn.tif');
H=fspecial('log'); %产生拉普拉斯高斯算子。
I2=filiter2(H,I) %用LoG算子对图像进行滤波。
Imshow(I2,[]),
colormap(jet(64)),
colorbar %将颜色条放置在坐标轴上。
montage
例如读取多帧图像mir的第3帧,其代码如下:
mri=uint8(zeros(128,128,1,27));
for firm=1:27
[mir(:,:,:,firm),map]=imread('mir.tif',frm);
end
imshow(mir(:,:,:,3),map)
另外还可以同时显示多帧图像中的所有帧,这是由montage函数完成的,语法格式如下:
montage(I) %拼接灰度图像。
montage(X,m