原文:http://blog.csdn.net/eagleest/article/details/38734111
MATLAB?圖像處理命令
?MATLAB中圖像處理的一些簡單函數
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)??RGB圖像的顯示,它直接對顏色進行描述而不使用調色板,格式imshow(RGB)。RGB(:,:,1) RGB(:,:,2) ?RGB(:,:,3)(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?繪制RGB色圖
色彩空間變換
hsv2rgb?飽和色彩色圖HSV向紅綠藍色圖RGB轉換
ntsc2rgb?將NTSC制式值轉換到RGB顏色空間
rgb2hsv?RGB色圖M向HSV色圖cmap轉換
rgb2ntsc?將RGB顏色空間轉換到NTSC制式
rgb2ycbcr?將RGB顏色空間轉換到YCBCR顏色空間
ycbcr2rgb?將YCBCR顏色空間轉換到RGB顏色空間
?
圖像類型判斷及其轉換
dither?用抖動法(dithering)轉換圖像
gray2ind?灰度圖像向索引圖像轉換
grayslice?設定閥值將灰度圖轉換為索引圖
isbw?圖像為二值圖像則返回真
isgray?圖像為灰度圖像則返回真
isind?圖像為索引圖像則返回真
isrgb?圖像為RGB圖像則返回真
im2bw?設定閥值將圖像轉換為值維圖像
im2double?將圖像數據陣列轉換為double型
im2uint8?將圖像數據陣列轉換為uint8型
im2uint16?將圖像數據陣列轉換為uint16型
ind2gray?索引圖像向灰度圖像轉換
ind2rgb?索引圖像向RGB圖像轉換
mat2rgb?將矩陣轉換為灰度圖
rgb2gray?RGB圖像向灰度圖轉換
rgb2ind?RGB圖像向索引圖像轉換
圖像處理演示函數
dctdemo?二維DCT圖像壓縮演示
edgedemo?邊緣檢測演示
firdemo?二維FIR濾波及濾波器演示
imadjdemo?灰度及調整和直方圖均衡演示
landsatdemo?陸地衛星顏色合成演示
nrfiltdemo?噪聲消除濾波演示
qtdemo?四叉樹分解演示
roidemo?特定區域處理演示
?圖像分析
edge?得到加強圖像的邊緣
qtdecomp?四叉樹分解
qtgetblk?得到四叉樹分解的塊值
qtsetblk?調整四叉樹分解的塊值
圖像增強
histeq?自動調整直方圖
imadjust?灰度級調整
imnoise?引入各種類型的噪聲
medfilt2?中值濾波
ordfilt2?執行二維階統計濾波
wiener2?維納濾波器的二維濾波
線性濾波conv2?圖像卷積
convmtx2?計算二維卷積矩陣
convn?圖像的n?維卷積
filter2?二維線性濾波
fspecial?產生預定義的濾波器
medfilt2?中值濾波
wiener2?維納濾波器的二維濾波
?
二維線性濾波器的設計
filter2二維線性濾波
fspecial?產生預定義的濾波器
fsample?生成濾波器
freqz2?計算二維濾波器的頻率響應
fsamp2?二維FIR濾波器的頻率采樣設計
fwind1?由用戶自定義的兩個一維窗口生成一個二維窗口濾波器
fwind2?由一個已知的二維窗口直接生成一個二維濾波器
hamming?創建一個一維窗口
freqspace?生成合適的頻率點陣矩陣
ftrans2?頻率變換
圖像變換
dct?離散余弦變換
dct2?計算二維離散余弦變換
dctmtx?計算離散余弦變換矩陣
dctmtx2?計算二維離散余弦變換矩陣
dctdemo?二維離散余弦變圖像壓縮矩陣
fft2?得到二維FFT的結果
fftn???N維FFT變換
fftshiftn????FFT變換結果的逆象限
iradon???????Radon逆變換
idct?離散余弦離散余弦變換的逆變換
idct2?計算二維離散余弦離散余弦變換的逆變換
radon???????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?創建查找表