本文主要講述MATLAB中簡單的圖象處理,對一些很常見的圖象處理做一下總結和系統的分析。
一.如何讀入圖像檔案a.從圖象檔案中讀入圖像資料
調用格式
I = imread('filename,fmt');
示例:
I=imread('abd.jpg');
顯示圖像
image(I)
size函數可以顯示一幅圖像的行數和列數,如圖所示,imread傳回 5792×4344×3 的數組I
>> size(I)
ans =
4344 5792 3
這裡我們要注意如果讀入的是灰階圖 像,則傳回 M×N 的矩陣;如果讀入的是彩色圖像,則傳回 M×N×3 的矩陣。fmt 為代表圖 像格式的字元串,各種圖象格式如表中所示:
b.将檔案名指定的索引圖像讀入到矩陣 X,其傳回色圖到map
[X,map] = imread(filename,fmt):
二.如何顯示圖像 在MATLAB桌面上顯示圖象一般用函數imshow 來顯示,該函數的基本文法為
imshow(f,G}
其中f是一個圖像數組,G是顯示該圖象的灰階級數,例如:
f=imread('abd.jpg');
subplot(131);imshow(f);title('原圖');
螢幕上會顯示原圖,接着我們再編寫顯示二維圖和灰階圖的來看看有什麼不同
b=im2bw(f);
subplot(132);imshow(b);title('二值圖');
w=rgb2gray(f);
subplot(133);imshow(w);title('灰階圖');
大家先來觀察一下這三種灰階圖像,然後我們分别介紹一下這三種圖象
1.彩色圖像,每個像素通常是由紅(R)、綠(G)、藍(B)三個分量來表示的,分量介于(0,255)。彩色圖象也就是我們通常說的RGB圖象,RGB圖像每一個像素的顔色值(由RGB三原色表示)直接存放在圖像矩陣中,由于每一像素的顔色需由R、G、B三個分量來表示,M、N分别表示圖像的行列數,三個M x N的二維矩陣分别表示各個像素的R、G、B三個顔色分量。RGB圖像的資料類型一般為8位無符号整形,通常用于表示和存放真彩色圖像,當然也可以存放灰階圖像。
2.灰階圖像,是每個像素隻有一個采樣顔色的圖像,。灰階圖像經常是在單個電磁波頻譜如可見光内測量每個像素的亮度得到的,用于顯示的灰階圖像通常用每個采樣像素8位的非線性尺度來儲存,這樣可以有256級灰階(如果用16位,則有65536級)。
3.二值圖像,顧名思義,即一幅二值圖像的二維矩陣僅由0、1兩個值構成,“0”代表黑色,“1”代白色。由于每一像素(矩陣中每一進制素)取值僅有0、1兩種可能,是以計算機中二值圖像的資料類型通常為1個二進制位。二值圖像通常用于文字、線條圖的掃描識别(OCR)和掩膜圖像的存儲。
然後我們了解一下上面轉換圖像所用到的函數im2bw函數可以将基于門檻值将圖像轉換為二值圖像,例如:
load trees
BW = im2bw(X,map,0.4);
imshow(X,map), figure, imshow(BW)
相對應的rgb2gray函數可以将 RGB 圖像或顔色圖轉換為灰階圖。
三.輸出(儲存)圖像。使用函數imwrite可以将圖像寫到磁盤上,該函數的文法為:
imwrite(f,'filename')
在該文法結構中,filename中所包含的字元串必須是一種可識别的檔案擴充名,例如,下面的指令可将圖象f寫為TIFF格式且名為abcd的檔案,檔案的位置是目前檔案夾。
>> imwrite(f,'abcd','tif')
下面是一些具體的類型
a.将灰階圖像寫入 PNG
A = rand(10);
imwrite(A,'myGray.png')
b.将索引圖像資料寫入 PNG
load clown.mat %從檔案 clown.mat 中加載示例圖像資料
imwrite(X,map,'myclown.png') %圖像數組 X 和其關聯顔色圖 map 均加載至 MATLAB工作區。
将資料寫入新的 PNG 檔案。
c.将真彩色圖像寫入 JPEG
建立真彩色圖像資料并将其寫入 JPEG 檔案。
A = rand(50,50); %建立一個随機 RGB 值的 50×50×3 數組
A(:,:,2) = rand(50,50);
A(:,:,3) = rand(50,50);
imwrite(A,'newImage.jpg','jpg','Comment','My JPEG file') %将圖像資料寫入 JPEG 檔案,
并用 'jpg' 指定輸出格式。使用 'Comment' 名稱-值對組參數添加檔案注釋。