MATLAB中圖像處理的函數

原文: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?創建查找表

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,321評論 6 543
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,559評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,442評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,835評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,581評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,922評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,931評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,096評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,639評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,374評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,591評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,104評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,789評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,196評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,524評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,322評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,554評論 2 379

推薦閱讀更多精彩內容