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 創建查找表