1.常用圖像的檔案格式與類型
檔案格式
- PCX格式:Windows Paintbrush(檔案頭+圖像資料+擴充顔色映射表)
- BMP格式:Windows Bitmap(檔案頭fileheader + 位圖資訊資料塊infoheader和顔色表 + 圖像資料)
- HDF格式:Hierarchical Data Format 8/24位光栅資料集。
- JPEG格式:Joint Photographic Experts Group
- TIFF格式:Tagged Image File Format
- XWD格式:X Windows Dump
類型
MATLAB中,一副圖像可能包含一個資料矩陣,也可能包含一個顔色映射表矩陣。
索引圖像
索引圖像包括圖像矩陣和顔色圖數組,其中,顔色圖是按圖像中的顔色值進行排序後的數組。對于每個像素,圖像矩陣包含一個值,這個值就是顔色圖中的索引,顔色圖為其指定RGB單色值。
圖像矩陣是uint8時,常用于圖形檔案格式,支援256色。
灰階圖像
灰階圖像儲存在一個矩陣中,每個元素代表一個像素點。
二值圖像
每個點為兩個離散值中的一個。
RGB圖像
紅綠藍三個一組,直接存在圖像數組中。
2.圖像處理的基本函數
2.1 圖像檔案的查詢與讀取
Info = imfinfo(filename.fmt)
Info = imfinfo(filename)
imfinfo指令加上檔案機器完整路徑名,查詢一個圖像檔案的資訊,imread函數讀取檔案圖像。fmt參數對應圖像處理工具中所有支援的圖像檔案格式。
A = imread(filename,fmt)
檔案名用filename表示,擴充名用飛fmt表示的圖像檔案資料讀取到矩陣A中。如果是灰階級圖像,則矩陣為二維。如果是RGB圖像,則矩陣是三維矩陣。
2.2 圖像檔案的存儲與資料類型的轉換
圖像存儲時使用的是64位浮點類型,但為了節省空間,可以轉化為uint8或者uint16類型。
轉換函數:im2double(),im2uint8(),im2uint16()
Matlab中使用imread函數來存儲圖像檔案。調用格式如下
imwrite(A,filename,fmt)
imwrite(X,map,filename,fmt)
imwrite(...,filename)
2.3 圖像顯示
圖像顯示函數
圖像顯示主要使用image和images函數,此外常用imshow函數。
image函數産生圖像的句柄,允許對對象的屬性進行設定。使用方法如下:
image(C)
image(x,y,C)
image(x,y,C,’PropertyName’,’PropertyValue’)
handle = image(C)
x,y分别表示圖像顯示位置的左上角坐标;C表示需要顯示的圖像。
imagesc函數具有自動縮放的功能,能夠将輸入資料比例化,以全色圖的方式顯示。
其他函數與image一緻。images(…, claims)歸一化C的值在clims确定的範圍内。并将C顯示為圖檔。
imshow函數直接顯示圖檔。
imshow filename:顯示圖像檔案;
Imshow(BW):顯示二值圖像。二值圖像矩陣。
Imshow(X,map):顯示索引圖像,索引圖像矩陣和色彩圖示。
Imshow(I):顯示灰階圖像。
Imshow(RGB):顯示RGB圖像。
Imshow(I,[low,high]):表示将非圖像資料顯示為圖像,需要考慮是否超出所顯示類型的最大允許範圍,其界限用于定義待顯示資料的範圍。
顯示輔助函數
colorbar函數将顔色條添加到坐标軸對象中。
subimage函數一個圖形區域内顯示多個圖像。
figure函數在不同的圖像視窗顯示不同的圖像。
subplot函數在用一個圖形視窗顯示多圖。
montage函數使多幀圖像一次顯示,将每一幀分别顯示在一副圖像的不同區域,所有子區的圖像都用同一個色彩條。
immovie函數将多幀圖像轉換為動畫。(隻對索引圖像有效)
warp函數實作紋理映射,zoom函數可以将圖像或二維圖形進行放大或縮小顯示。
zoom on:用于打開縮放模式;
zoom off:用于關閉該模式;
zoom in:用于放大局部圖像;
zoom out:用于縮小圖像。
3.圖像類型的轉換
3.1 dither函數
實作圖像抖動。通過顔色抖動來增強輸出圖像的顔色分辨率。
顔色抖動即改變邊沿顔色,使像素周圍的顔色近似于原始圖像的顔色,進而以空間分辨率來換取顔色分辨率。
該函數可以把RGB圖像轉化為索引圖像或者把灰階圖像轉換為二值圖像。
X = dither(RGB, map)
X = dither(I)
3.2 im2bw函數
im2bw函數用于設定門檻值,将灰階、索引、RGB圖像轉化為二值圖像。
level是歸一化的門檻值,取值在[0,1]。
BW = im2bw(I, level)
BW = im2bw(X, map, level)
BW = im2bw(RGB, level)
3.3 mat2gray函數
函數将資料矩陣轉換為灰階圖像。
I=mat2gray(A, [max,min]):按照指定的取值區間将資料矩陣轉換為灰階圖像I。如果不指定區間,則自動取最大區間。A為double類型,I為double類型。
3.4 gray2ind函數與grayslice函數
gray2ind函數用于灰階圖像或二值圖像想索引圖像轉換;
grayslice函數用于設定門檻值将灰階圖像轉換為索引圖像。
3.5 ind2gray函數與ind2rgb函數
前者将索引圖像轉換為灰階圖像,後者将索引圖像轉化為RGB圖像。
3.6 rgb2gray函數與rgb2ind函數
前者将一幅真彩色圖像轉換為灰階圖像;後者将真彩色圖像轉換為索引圖像。
4.MATLAB顔色模型轉換
顔色模型指某個三維顔色空間中的一個可見光子集。
RGB 顔色分成三通道,按照不同的比例混合,每個通道分為255階亮度。在0時最弱,在255時最亮。
HSV複合主觀感覺的顔色模型。HSV分别指的是色調、飽和度和明度,一種顔色的參數是這三個分量的三元組。
Hue Saturation Value
YCbCr模型又稱為YUV模型,是視訊圖像和數字圖像中常用模型,這裡Y為亮度,Cb和Cr共同描述圖像的色調,前者是藍色分量後者是紅色分量相對于參考值的坐标。
NTSC模型用于電視圖像。使用Y.I.Q坐标系。Y為光亮度,表示灰階資訊;I為色調,Q為飽和度,均表示顔色資訊。該模型的主要優點是将灰階資訊和顔色資訊分開。
HSI色彩空間從人的視覺系統出發,用色調、色飽和度和亮度描述色彩,HSI色彩空間可以用一個圓錐空間模型描述。
Hue Saturatuib/Chroma Intensity/Brightness
4.1 rgb2hsv函數與hsv2rgb函數
RGB與HSV轉換。轉換色表以及圖像。
4.2 rgb2ntsc函數與ntsc2rgb函數
RGB與NTSC轉換。轉換色标以及圖像。
4.3 rbg2ycbcr函數與ycbcr2rgb函數
RGB和YCBCR轉換。轉換色标以及圖像。