1.
A、 imread
imread函数用于读入各种图像文件,其一般的用法为
[X,MAP]=imread(‘filename’,‘fmt’)
其中,X,MAP分别为读出的图像数据和颜色表数据,fmt为图像的格式,filename为读取的图像文件(可以加上文件的路径)。
例:[X,MAP]=imread(’flowers.tif’,’tif’);
比较读取二值图像,灰度图像,索引图像,彩色图像的X和MAP的特点,可以利用size函数用来显示数组的维数,了解数据的特点。
B=size(a) 返回数组a 的维数。
B、 imwrite
imwrite函数用于输出图像,其语法格式为:
imwrite(X,map,filename,fmt)
imwrite(X,map,filename,fmt)按照fmt指定的格式将图像数据矩阵X和调色板map写入文件filename。
C、 imfinfo
imfinfo函数用于读取图像文件的有关信息,其语法格式为
imfinfo(filename,fmt)
imfinfo函数返回一个结构info,它反映了该图像的各方面信息,其主要数据包括:文件名(路径)、文件格式、文件格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数、图像的类型等。
2.MATLAB中图像文件的显示
imshow
imshow函数是最常用的显示各种图像的函数,其语法如下:
imshow(X,map)
其中X是图像数据矩阵,map是其对应的颜色矩阵,若进行图像处理后不知道图像数据的值域可以用[]代替map。
(1) 二进制(二值)图像显示方法,在MATLAB中一幅二值图像是uint8或双精度的,该矩阵仅包含0和1。如果希望工具箱中的函数能将图像理解为二进制的,那么所有数据都要是逻辑数据,必须对其进行设置(将所有数据标志均设置on).可以对数据利用“~”取反操作实现图像逆转即黑白反色。
(2) 灰度图像的显示方法,正常情况下无需指定灰度图像的调色板格式。可以是使用imshow函数指定要显示灰度级数目,格式 imshow(I,n),n为指定的灰度级数目。用户也可以指定数据的范围,格式imshow(I,[low high])其中low 和high参数分别为数据数组的最小值和最大值。如果为空矩阵([]),那么imshow函数将自动进行数据标度。
(3) 索引图像,imshow(x,map)对于x的每个个像素,imshow显示存储map中相应行的颜色。
(4)
(5) 特殊显示,如多幅图像的显示,需要显示多幅图像时。可以使用figure语句,它的功能就是重新打开一个图像显示窗口。例:
I=imread(‘rice.tif’);
Imshow(I);
J=imread(‘flowers.tif’);
figure,imshow(J);
也可以将多幅图像显示在同一个单独的图像窗口中,有两种方法:一种是联合imshow和subplot函数;另一种是联合使用subimage函数和subplot函数,subplot(m,n,p)这种格式将图形窗口划分为m*n个矩形显示区域并激活第p个显示区域。
A
[x1,map1]=imread('trees.tif');
[x2,map2]=imread('forest.tif');
subplot(1,2,1),imshow(x1,map1)
subplot(1,2,2),imshow(x2,map2)
B
[x1,map1]=imread('trees.tif');
[x2,map2]=imread('forest.tif');
subplot(1,2,1),subimage(x1,map1)
subplot(1,2,2),subimage(x2,map2)
3.MATLAB中灰度直方图的显示
MATLAB图像处理工具箱提供了imhist函数来计算和显示图像的直方图,imhist函数的语法格式为:
imhist(I,n)
imhist(X,map)
其中imhist(I,n)计算和显示灰度图像I的直方图,n为指定的灰度级数目,默认值为256。imhist(X,map)计算和显示索引色图像X的直方图,map为调色板。
例:
I = imread('rice.tif');
imshow(I)
figure, imhist(I)
4.对比度增强
如果原图像f(x,y)的灰度范围是[m,M],我们希望调整后的图像g(x,y)的灰度范围是[n,N],那么下述变换, ,就可以实现这一要求。
MATLAB图像处理工具箱中提供的imadjust函数,可以实现上述的线性变换对比度增强。Imadjust函数的语法格式为:
J = imadjust(I,[low_in high_in],[low_out high_out])
J = imadjust(I,[low_in high_in],[low_out high_out])返回图像I经过直方图调整后的图像J,[low_in high_in]为原图像中要变换的灰度范围,[low_out high_out]指定了变换后的灰度范围。其详细的用法可参见《计算机图像处理与识别技术》。
例:
I = imread('pout.tif');
J = imadjust(I,[0.3 0.7],[]);
imshow(I), figure, imshow(J)
5.图像类型转换:
图像类型之间的转换有时非常有用。MATLAB提供的图像类型转换函数
函数 | 功能 |
dither | 使用抖动方法,根据灰度图像船舰二进制图像和根据RGB图像创建索引图像 |
gray2ind | 根据一幅灰度图像创建索引图像 |
grayslice | 使用阈值截取方法,根据一幅灰度图像创建索引图像 |
im2bw | 使用阈值截取方法,根据一幅灰度图像,索引图像或RGB图像创建二进制图像 |
ind2gray | 根据一幅索引图像创建一幅灰度图像 |
ind2rgb | 根据一幅索引图像创建一幅RGB图像 |
mat2gray | 通过数据缩放,在根据矩阵数据创建一幅灰度图像 |
rgb2gray | 根据一幅RGB图像创建一幅灰度图像 |
rgb2ind | 根据一幅RGB图像创建一幅索引图像 |
上表中函数有类似的调用格式:函数的输入参数是图像数据矩阵(如果是索引图像,那么输入参数还包括调色板),返回值是转换后的函数(包括索引函数的调色板),只有函数im2bw的调用格式不同,其输入参数中还包括一个截取阈值,超过此阈值的像素被截取为1否则为0。示例:
A、load trees
BW = im2bw(X,map,0.4);
imview(X,map),imview(BW)
B、
I = imread('snowflakes.png');
X = grayslice(I,16);
imview(I)
imview(X,jet(16))
6.MATLAB还提供了图像存储类型之间的转换函数
这些函数包含im2doble、im2uint8和 im2uint16,这些函数可以自动的进行原始数据的重新标度和偏移.调用格式简单,输入为图像矩阵,输出为转换后的图像:如:以下命令将一个描述双精度RGB1图像的矩阵(数据范围为[0,1]转换为uint8的图像矩阵([0,255]范围内)RGB2=im2uint8(rgb1);也可以使用MATLAB函数对图像存储类型进行转换。例如,double函数可以将uint8或 uint16的数据转化为双精度数据。存储类型之间的转变将改变matlab及其工具箱理解图像数据的方式,如果用户希望转换后得到的数组能够被正确的理解为图像数据,那么转换时需要重新标度或偏移数据。当使用较少的类型来描述数字图像时,通常可能丢失用户图像的一些信息。
7.图像格式之间的转换
可以间接利用图像读写函数来完成;首先使用imread函数按照原有的图像格式进行图像读取,然后调用imwrite函数对图像进行保存,并指定图像的保存格式。如将BMP格式转换为PNG格式,
bitmap=imread(‘mybitmap,bmp’,’bmp’)
imwrite(‘mybitmap,png’,’png’)
matlab图像处理命令
二值图像操作
色图操作
brighten
cmpermute
colormap
imapprox
rgbplot
色彩空间变换
hsv2rgb
ntsc2rgb
rgb2hsv
rgb2ntsc
rgb2ycbcr
ycbcr2rgb
图像类型判断及其转换
dither
gray2ind
grayslice
isbw
isgray
isind
isrgb
im2bw
im2double
im2uint8
im2uint16
ind2gray
ind2rgb
mat2rgb
rgb2gray
rgb2ind
图像处理演示函数
dctdemo
edgedemo
firdemo
imadjdemo
landsatdemo
nrfiltdemo
qtdemo
roidemo
图像分析
edge
qtdecomp
qtgetblk
qtsetblk
图像增强
histeq
imadjust
imnoise
medfilt2
ordfilt2
wiener2
线性滤波
conv2
convmtx2
convn
filter2
fspecial
medfilt2
wiener2
二维线性滤波器的设计
filter2二维线性滤波
fspecial
fsample
freqz2
fsamp2
fwind1
fwind2
hamming
freqspace
ftrans2
图像变换
dct
dct2
dctmtx
dctmtx2
dctdemo
fft2
fftn
fftshiftn
iradon
idct
idct2
radon
邻域及块处理
blkproc
bestblk
col2im
colfilt
im2col
nlfilter
图像的区域处理
rolpoly
roifilt2
roifill
roicolor
colorbar
figure
getimage
montage
image
imagesc
imcontour
immovie
imshow
subimage
subplot
truesize
warp
zoom
图像文件数据输入/输出
imfinfo
imread
imwrite
图像的几何操作
imcrop
interp2
imresize
imrotate
像值与统计
corr2
applylut
bwarea
bweuler
bwfill
bwlabel
bwmorph
bwperim
bwselect
dilate
erode
makelut