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 的維數。app
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,它反映了該圖像的各方面信息,其主要數據包括:文件名(路徑)、文件格式、文件格式版本號、文件的修改時間、文件的大小、文件的長度、文件的寬度、每一個像素的位數、圖像的類型等。ide
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.圖像類型轉換:ui
圖像類型之間的轉換有時很是有用。MATLAB提供的圖像類型轉換函數spa
函數設計 |
功能rest |
ditherorm |
使用抖動方法,根據灰度圖像船艦二進制圖像和根據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 建立查找表