天天看點

圖像處理基礎(MATLAB圖像處理第三章)1.常用圖像的檔案格式與類型2.圖像處理的基本函數3.圖像類型的轉換4.MATLAB顔色模型轉換

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轉換。轉換色标以及圖像。