天天看點

matlab圖像處理

1. 圖像和圖像資料

    預設情況下,MATLAB将圖像中的資料存儲為雙精度類型(double),64位浮點數,所需存儲量很大;MATLAB還支援另一種類型無符号整型(uint8),即圖像矩陣中每個資料占用1個位元組。

    在使用MATLAB工具箱時,一定要注意函數所要求的參數類型。另外,uint8與double兩種類型資料的值域不同,程式設計需注意值域轉換。

從uint8到double的轉換

---------------------------------------------

圖像類型 MATLAB語句

---------------------------------------------

索引色 B=double(A)+1

索引色或真彩色 B=double(A)/255

二值圖像 B=double(A)

---------------------------------------------

從double到uint8的轉換

---------------------------------------------

圖像類型 MATLAB語句

---------------------------------------------

索引色 B=uint8(round(A-1))

索引色或真彩色 B=uint8(round(A*255))

二值圖像 B=logical(uint8(round(A)))

---------------------------------------------

2. 圖像處理工具箱所支援的圖像類型

2.1 真彩色圖像

    R、G、B三個分量表示一個像素的顔色。如果要讀取圖像中(100,50)處的像素值,可檢視三中繼資料(100,50,1:3)。

    真彩色圖像可用雙精度存儲,亮度值範圍是[0,1];比較符合習慣的存儲方法是用無符号整型存儲,亮度值範圍[0,255]

2.2 索引色圖像

    包含兩個結構,一個是調色闆,另一個是圖像資料矩陣。調色闆是一個有3列和若幹行的色彩映象矩陣,矩陣每行代表一種顔色,3列分别代表紅、綠、藍色強度的雙精度數。

注意:MATLAB中調色闆色彩強度[0,1],0代表最暗,1代表最亮。

常用顔色的RGB值

--------------------------------------------

顔色 R G B 顔色 R G B

--------------------------------------------

黑 0 0 1 洋紅 1 0 1

白 1 1 1 青藍 0 1 1

紅 1 0 0 天藍 0.67 0 1

綠 0 1 0 橘黃 1 0.5 0

藍 0 0 1 深紅 0.5 0 0

黃 1 1 0 灰 0.5 0.5 0.5

--------------------------------------------

産生标準調色闆的函數

-------------------------------------------------

函數名 調色闆

-------------------------------------------------

Hsv 色彩飽和度,以紅色開始,并以紅色結束

Hot 黑色-紅色-黃色-白色

Cool 青藍和洋紅的色度

Pink 粉紅的色度

Gray 線型灰階

Bone 帶藍色的灰階

Jet Hsv的一種變形,以藍色開始,以藍色結束

Copper 線型銅色度

Prim 三棱鏡,交替為紅、橘黃、黃、綠和天藍

Flag 交替為紅、白、藍和黑

--------------------------------------------------

    預設情況下,調用上述函數灰産生一個64×3的調色闆,使用者也可指定調色闆大小。索引色圖像資料也有double和uint8兩種類型。當圖像資料為double類型時,值1代表調色闆中的第1行,值2代表第2行……如果圖像資料為uint8類型,0代表調色闆的第一行,,值1代表第2行……

2.3 灰階圖像

    存儲灰階圖像隻需要一個資料矩陣。

    資料類型可以是double,[0,1];也可以是uint8,[0,255]

2.4 二值圖像

    二值圖像隻需一個資料矩陣,每個像素隻有兩個灰階值,可以采用uint8或double類型存儲。

    MATLAB工具箱中以二值圖像作為傳回結果的函數都使用uint8類型。

2.5 圖像序列

    MATLAB工具箱支援将多幀圖像連接配接成圖像序列。圖像序列是一個4維數組,圖像幀的序号在圖像的長、寬、顔色深度之後構成第4維。

    分散的圖像也可以合并成圖像序列,前提是各圖像尺寸必須相同,若是索引色圖像,調色闆也必須相同。

    可參考cat()函數 A=cat(4,A1,A2,A3,A4,A5)

3. MATLAB圖像類型轉換

圖像類型轉換函數

---------------------------------------------------------------------------

函數名 函數功能

---------------------------------------------------------------------------

dither 圖像抖動,将灰階圖變成二值圖,或将真彩色圖像抖動成索引色圖像

gray2ind 将灰階圖像轉換成索引圖像

grayslice 通過設定門檻值将灰階圖像轉換成索引色圖像

im2bw 通過設定亮度門檻值将真彩色、索引色、灰階圖轉換成二值圖

ind2gray 将索引色圖像轉換成灰階圖像

ind2rgb 将索引色圖像轉換成真彩色圖像

mat2gray 将一個資料矩陣轉換成一副灰階圖

rgb2gray 将一副真彩色圖像轉換成灰階圖像

rgb2ind 将真彩色圖像轉換成索引色圖像

----------------------------------------------------------------------------

4. 圖像檔案的讀寫和查詢

4.1 圖形圖像檔案的讀取

    利用函數imread()可完成圖形圖像檔案的讀取,文法:

A=imread(filename,fmt)

[X,map]=imread(filename,fmt)

[...]=imread(filename)

[...]=imread(filename,idx) (隻對TIF格式的檔案)

[...]=imread(filename,ref) (隻對HDF格式的檔案)

    通常,讀取的大多數圖像均為8bit,當這些圖像加載到記憶體中時,Matlab就将其存放在類uint8中。此為Matlab還支援16bit的PNG和TIF圖像,當讀取這類檔案時,Matlab就将其存貯在uint16中。

    注意:對于索引圖像,即使圖像陣列的本身為類uint8或類uint16,imread函數仍将顔色映象表讀取并存貯到一個雙精度的浮點類型的陣列中。

4.2 圖形圖像檔案的寫入

    使用imwrite函數,文法如下:

imwrite(A,filename,fmt)

imwrite(X,map,filename,fmt)

imwrite(...,filename)

imwrite(...,parameter,value)

當利用imwrite函數儲存圖像時,Matlab預設的方式是将其簡化道uint8的資料格式。

4.3 圖形圖像檔案資訊的查詢imfinfo()函數

5. 圖像檔案的顯示

5.1 索引圖像及其顯示

方法一:

image(X)

colormap(map)

方法二:

imshow(X,map)

5.2 灰階圖像及其顯示

    Matlab 7.0 中,要顯示一副灰階圖像,可以調用函數 imshow 或 imagesc (即imagescale,圖像縮放函數)

(1) imshow 函數顯示灰階圖像

    使用imshow(I)或使用明确指定的灰階級書目:

imshow(I,32)

    由于Matlab自動對灰階圖像進行标度以适合調色闆的範圍,因而可以使用自定義大小的調色闆。其調用格式如下:

imshow(I,[low,high]) 其中,low 和 high 分别為資料數組的最小值和最大值。

(2) imagesc 函數顯示灰階圖像

    下面的代碼是具有兩個輸入參數的 imagesc 函數顯示一副灰階圖像

imagesc(1,[0,1]);

colormap(gray);

    imagesc 函數中的第二個參數确定灰階範圍。灰階範圍中的第一個值(通常是0),對應于顔色映象表中的第一個值(顔色),第二個值(通常是1)則對應與顔色映象表中的最後一個值(顔色)。灰階範圍中間的值則線型對應與顔色映象表中剩餘的值(顔色)。

    在調用 imagesc 函數時,若隻使用一個參數,可以用任意灰階範圍顯示圖像。在該調用方式下,資料矩陣中的最小值對應于顔色映象表中的第一個顔色值,資料矩陣中的最大值對應于顔色映象表中的最後一個顔色值。

5.3 RGB 圖像及其顯示

(1) image(RGB)

    不管RGB圖像的類型是double浮點型,還是 uint8 或 uint16 無符号整數型,Matlab都能通過 image 函數将其正确顯示出來。

RGB8 = uint8(round(RGB64×255)); % 将 double 浮點型轉換為 uint8 無符号整型

RGB64 = double(RGB8)/255; % 将 uint8 無符号整型轉換為 double 浮點型

RGB16 = uint16(round(RGB64×65535)); % 将 double 浮點型轉換為 uint16 無符号整型

RGB64 = double(RGB16)/65535; % 将 uint16 無符号整型轉換為 double 浮點型

(2) imshow(RGB) 參數是一個 m×n×3 的數組

5.4 二進制圖像及其顯示

(1) imshow(BW)

     在 Matlab 7.0 中,二進制圖像是一個邏輯類,僅包括 0 和 1 兩個數值。像素 0 顯示為黑色,像素 1 顯示為白色。

    顯示時,也可通過NOT(~)指令,對二進制圖象進行取反,使數值 0 顯示為白色;1 顯示為黑色。

例如: imshow(~BW)

(2) 此外,還可以使用一個調色闆顯示一副二進制圖像。如果圖形是 uint8 資料類型,則數值 0 顯示為調色闆的第一個顔色,數值 1 顯示為第二個顔色。

例如: imshow(BW,[1 0 0;0 0 1])

5.5 直接從磁盤顯示圖像

    可使用一下指令直接進行圖像檔案的顯示:

imshow filename

其中,filename 為要顯示的圖像檔案的檔案名。

    如果圖像是多幀的,那麼 imshow 将僅顯示第一幀。但需注意,在使用這種方式時,圖像資料沒有儲存在Matlab 7.0 工作平台。如果希望将将圖像裝入工作台中,需使用 getimage 函數,從目前的句柄圖形圖像對象中擷取圖像資料,指令形式為:

rgb = getimage;

1、圖像的變換

① fft2:fft2函數用于數字圖像的二維傅立葉變換,如:

i=imread(\'104_8.tif\');

j=fft2(i);

②ifft2::ifft2函數用于數字圖像的二維傅立葉反變換,如:

i=imread(\'104_8.tif\');

j=fft2(i);

k=ifft2(j);

2、模拟噪聲生成函數和預定義濾波器

① imnoise:用于對圖像生成模拟噪聲,如:

i=imread(\'104_8.tif\');

j=imnoise(i,\'gaussian\',0,0.02);%模拟高斯噪聲

② fspecial:用于産生預定義濾波器,如:

h=fspecial(\'sobel\');%sobel水準邊緣增強濾波器h=fspecial(\'gaussian\');%高斯低通濾波器

h=fspecial(\'laplacian\');%拉普拉斯濾波器h=fspecial(\'log\');%高斯拉普拉斯(LoG)濾波器

h=fspecial(\'average\');%均值濾波器

3、圖像的增強

①直方圖:imhist函數用于數字圖像的直方圖顯示,如:

i=imread(\'104_8.tif\');

imhist(i);

②直方圖均化:histeq函數用于數字圖像的直方圖均化,如:

i=imread(\'104_8.tif\');

j=histeq(i);

③對比度調整:imadjust函數用于數字圖像的對比度調整,如:

i=imread(\'104_8.tif\');

j=imadjust(i,[0.3,0.7],[]);

④對數變換:log函數用于數字圖像的對數變換,如:

i=imread(\'104_8.tif\');

j=double(i);

k=log(j);

⑤基于卷積的圖像濾波函數:filter2函數用于圖像濾波,如:

i=imread(\'104_8.tif\');

h=[1,2,1;0,0,0;-1,-2,-1];

j=filter2(h,i);

⑥線性濾波:利用二維卷積conv2濾波, 如:

i=imread(\'104_8.tif\');

h=[1,1,1;1,1,1;1,1,1];

h=h/9;

j=conv2(i,h);

⑦中值濾波:medfilt2函數用于圖像的中值濾波,如:

i=imread(\'104_8.tif\');

j=medfilt2(i);

⑧銳化

(1)利用Sobel算子銳化圖像, 如:

i=imread(\'104_8.tif\');

h=[1,2,1;0,0,0;-1,-2,-1];%Sobel算子

j=filter2(h,i);

(2)利用拉氏算子銳化圖像, 如:

i=imread(\'104_8.tif\');

j=double(i);

h=[0,1,0;1,-4,0;0,1,0];%拉氏算子

k=conv2(j,h,\'same\');

m=j-k;

3、圖像邊緣檢測

①sobel算子 如:i=imread(\'104_8.tif\');j = edge(i,\'sobel\',thresh)

②prewitt算子 如:i=imread(\'104_8.tif\');j = edge(i,\'prewitt\',thresh)

③roberts算子 如:i=imread(\'104_8.tif\');j = edge(i,\'roberts\',thresh)

④log算子 如:i=imread(\'104_8.tif\');j = edge(i,\'log\',thresh)

⑤canny算子 如:i=imread(\'104_8.tif\');j = edge(i,\'canny\',thresh)

⑥Zero-Cross算子 如:i=imread(\'104_8.tif\');j = edge(i,\'zerocross\',thresh)

4、形态學圖像處理

①膨脹:是在二值化圖像中“加長”或“變粗”的操作,函數imdilate執行膨脹運算,如:

a=imread(\'104_7.tif\'); %輸入二值圖像

b=[0 1 0;1 1 1;0 1 0];

c=imdilate(a,b);

②腐蝕:函數imerode執行腐蝕,如:

a=imread(\'104_7.tif\'); %輸入二值圖像

b=strel(\'disk\',1);

c=imerode(a,b);

③開運算:先腐蝕後膨脹稱為開運算,用imopen來實作,如:

a=imread(\'104_8.tif\');

b=strel(\'square\',2);

c=imopen(a,b);

④閉運算:先膨脹後腐蝕稱為閉運算,用imclose來實作,如:

a=imread(\'104_8.tif\');

b=strel(\'square\',2);

c=imclose(a,b);

轉自:http://www.matlabfan.com/thread-700-1-1.html

下清單格中除了個别函數外,其餘函數都是圖像處理工具箱提供的關于圖像處理的函數,現摘錄到此以備查找。

1. 圖像和圖像資料

    預設情況下,MATLAB将圖像中的資料存儲為雙精度類型(double),64位浮點數,所需存儲量很大;MATLAB還支援另一種類型無符号整型(uint8),即圖像矩陣中每個資料占用1個位元組。

    在使用MATLAB工具箱時,一定要注意函數所要求的參數類型。另外,uint8與double兩種類型資料的值域不同,程式設計需注意值域轉換。

從uint8到double的轉換

---------------------------------------------

圖像類型 MATLAB語句

---------------------------------------------

索引色 B=double(A)+1

索引色或真彩色 B=double(A)/255

二值圖像 B=double(A)

---------------------------------------------

從double到uint8的轉換

---------------------------------------------

圖像類型 MATLAB語句

---------------------------------------------

索引色 B=uint8(round(A-1))

索引色或真彩色 B=uint8(round(A*255))

二值圖像 B=logical(uint8(round(A)))

---------------------------------------------

2. 圖像處理工具箱所支援的圖像類型

2.1 真彩色圖像

    R、G、B三個分量表示一個像素的顔色。如果要讀取圖像中(100,50)處的像素值,可檢視三中繼資料(100,50,1:3)。

    真彩色圖像可用雙精度存儲,亮度值範圍是[0,1];比較符合習慣的存儲方法是用無符号整型存儲,亮度值範圍[0,255]

2.2 索引色圖像

    包含兩個結構,一個是調色闆,另一個是圖像資料矩陣。調色闆是一個有3列和若幹行的色彩映象矩陣,矩陣每行代表一種顔色,3列分别代表紅、綠、藍色強度的雙精度數。

注意:MATLAB中調色闆色彩強度[0,1],0代表最暗,1代表最亮。

常用顔色的RGB值

--------------------------------------------

顔色 R G B 顔色 R G B

--------------------------------------------

黑 0 0 1 洋紅 1 0 1

白 1 1 1 青藍 0 1 1

紅 1 0 0 天藍 0.67 0 1

綠 0 1 0 橘黃 1 0.5 0

藍 0 0 1 深紅 0.5 0 0

黃 1 1 0 灰 0.5 0.5 0.5

--------------------------------------------

産生标準調色闆的函數

-------------------------------------------------

函數名 調色闆

-------------------------------------------------

Hsv 色彩飽和度,以紅色開始,并以紅色結束

Hot 黑色-紅色-黃色-白色

Cool 青藍和洋紅的色度

Pink 粉紅的色度

Gray 線型灰階

Bone 帶藍色的灰階

Jet Hsv的一種變形,以藍色開始,以藍色結束

Copper 線型銅色度

Prim 三棱鏡,交替為紅、橘黃、黃、綠和天藍

Flag 交替為紅、白、藍和黑

--------------------------------------------------

    預設情況下,調用上述函數灰産生一個64×3的調色闆,使用者也可指定調色闆大小。索引色圖像資料也有double和uint8兩種類型。當圖像資料為double類型時,值1代表調色闆中的第1行,值2代表第2行……如果圖像資料為uint8類型,0代表調色闆的第一行,,值1代表第2行……

2.3 灰階圖像

    存儲灰階圖像隻需要一個資料矩陣。

    資料類型可以是double,[0,1];也可以是uint8,[0,255]

2.4 二值圖像

    二值圖像隻需一個資料矩陣,每個像素隻有兩個灰階值,可以采用uint8或double類型存儲。

    MATLAB工具箱中以二值圖像作為傳回結果的函數都使用uint8類型。

2.5 圖像序列

    MATLAB工具箱支援将多幀圖像連接配接成圖像序列。圖像序列是一個4維數組,圖像幀的序号在圖像的長、寬、顔色深度之後構成第4維。

    分散的圖像也可以合并成圖像序列,前提是各圖像尺寸必須相同,若是索引色圖像,調色闆也必須相同。

    可參考cat()函數 A=cat(4,A1,A2,A3,A4,A5)

3. MATLAB圖像類型轉換

圖像類型轉換函數

---------------------------------------------------------------------------

函數名 函數功能

---------------------------------------------------------------------------

dither 圖像抖動,将灰階圖變成二值圖,或将真彩色圖像抖動成索引色圖像

gray2ind 将灰階圖像轉換成索引圖像

grayslice 通過設定門檻值将灰階圖像轉換成索引色圖像

im2bw 通過設定亮度門檻值将真彩色、索引色、灰階圖轉換成二值圖

ind2gray 将索引色圖像轉換成灰階圖像

ind2rgb 将索引色圖像轉換成真彩色圖像

mat2gray 将一個資料矩陣轉換成一副灰階圖

rgb2gray 将一副真彩色圖像轉換成灰階圖像

rgb2ind 将真彩色圖像轉換成索引色圖像

----------------------------------------------------------------------------

4. 圖像檔案的讀寫和查詢

4.1 圖形圖像檔案的讀取

    利用函數imread()可完成圖形圖像檔案的讀取,文法:

A=imread(filename,fmt)

[X,map]=imread(filename,fmt)

[...]=imread(filename)

[...]=imread(filename,idx) (隻對TIF格式的檔案)

[...]=imread(filename,ref) (隻對HDF格式的檔案)

    通常,讀取的大多數圖像均為8bit,當這些圖像加載到記憶體中時,Matlab就将其存放在類uint8中。此為Matlab還支援16bit的PNG和TIF圖像,當讀取這類檔案時,Matlab就将其存貯在uint16中。

    注意:對于索引圖像,即使圖像陣列的本身為類uint8或類uint16,imread函數仍将顔色映象表讀取并存貯到一個雙精度的浮點類型的陣列中。

4.2 圖形圖像檔案的寫入

    使用imwrite函數,文法如下:

imwrite(A,filename,fmt)

imwrite(X,map,filename,fmt)

imwrite(...,filename)

imwrite(...,parameter,value)

當利用imwrite函數儲存圖像時,Matlab預設的方式是将其簡化道uint8的資料格式。

4.3 圖形圖像檔案資訊的查詢imfinfo()函數

5. 圖像檔案的顯示

5.1 索引圖像及其顯示

方法一:

image(X)

colormap(map)

方法二:

imshow(X,map)

5.2 灰階圖像及其顯示

    Matlab 7.0 中,要顯示一副灰階圖像,可以調用函數 imshow 或 imagesc (即imagescale,圖像縮放函數)

(1) imshow 函數顯示灰階圖像

    使用imshow(I)或使用明确指定的灰階級書目:

imshow(I,32)

    由于Matlab自動對灰階圖像進行标度以适合調色闆的範圍,因而可以使用自定義大小的調色闆。其調用格式如下:

imshow(I,[low,high]) 其中,low 和 high 分别為資料數組的最小值和最大值。

(2) imagesc 函數顯示灰階圖像

    下面的代碼是具有兩個輸入參數的 imagesc 函數顯示一副灰階圖像

imagesc(1,[0,1]);

colormap(gray);

    imagesc 函數中的第二個參數确定灰階範圍。灰階範圍中的第一個值(通常是0),對應于顔色映象表中的第一個值(顔色),第二個值(通常是1)則對應與顔色映象表中的最後一個值(顔色)。灰階範圍中間的值則線型對應與顔色映象表中剩餘的值(顔色)。

    在調用 imagesc 函數時,若隻使用一個參數,可以用任意灰階範圍顯示圖像。在該調用方式下,資料矩陣中的最小值對應于顔色映象表中的第一個顔色值,資料矩陣中的最大值對應于顔色映象表中的最後一個顔色值。

5.3 RGB 圖像及其顯示

(1) image(RGB)

    不管RGB圖像的類型是double浮點型,還是 uint8 或 uint16 無符号整數型,Matlab都能通過 image 函數将其正确顯示出來。

RGB8 = uint8(round(RGB64×255)); % 将 double 浮點型轉換為 uint8 無符号整型

RGB64 = double(RGB8)/255; % 将 uint8 無符号整型轉換為 double 浮點型

RGB16 = uint16(round(RGB64×65535)); % 将 double 浮點型轉換為 uint16 無符号整型

RGB64 = double(RGB16)/65535; % 将 uint16 無符号整型轉換為 double 浮點型

(2) imshow(RGB) 參數是一個 m×n×3 的數組

5.4 二進制圖像及其顯示

(1) imshow(BW)

     在 Matlab 7.0 中,二進制圖像是一個邏輯類,僅包括 0 和 1 兩個數值。像素 0 顯示為黑色,像素 1 顯示為白色。

    顯示時,也可通過NOT(~)指令,對二進制圖象進行取反,使數值 0 顯示為白色;1 顯示為黑色。

例如: imshow(~BW)

(2) 此外,還可以使用一個調色闆顯示一副二進制圖像。如果圖形是 uint8 資料類型,則數值 0 顯示為調色闆的第一個顔色,數值 1 顯示為第二個顔色。

例如: imshow(BW,[1 0 0;0 0 1])

5.5 直接從磁盤顯示圖像

    可使用一下指令直接進行圖像檔案的顯示:

imshow filename

其中,filename 為要顯示的圖像檔案的檔案名。

    如果圖像是多幀的,那麼 imshow 将僅顯示第一幀。但需注意,在使用這種方式時,圖像資料沒有儲存在Matlab 7.0 工作平台。如果希望将将圖像裝入工作台中,需使用 getimage 函數,從目前的句柄圖形圖像對象中擷取圖像資料,指令形式為:

rgb = getimage;

1、圖像的變換

① fft2:fft2函數用于數字圖像的二維傅立葉變換,如:

i=imread(\'104_8.tif\');

j=fft2(i);

②ifft2::ifft2函數用于數字圖像的二維傅立葉反變換,如:

i=imread(\'104_8.tif\');

j=fft2(i);

k=ifft2(j);

2、模拟噪聲生成函數和預定義濾波器

① imnoise:用于對圖像生成模拟噪聲,如:

i=imread(\'104_8.tif\');

j=imnoise(i,\'gaussian\',0,0.02);%模拟高斯噪聲

② fspecial:用于産生預定義濾波器,如:

h=fspecial(\'sobel\');%sobel水準邊緣增強濾波器h=fspecial(\'gaussian\');%高斯低通濾波器

h=fspecial(\'laplacian\');%拉普拉斯濾波器h=fspecial(\'log\');%高斯拉普拉斯(LoG)濾波器

h=fspecial(\'average\');%均值濾波器

3、圖像的增強

①直方圖:imhist函數用于數字圖像的直方圖顯示,如:

i=imread(\'104_8.tif\');

imhist(i);

②直方圖均化:histeq函數用于數字圖像的直方圖均化,如:

i=imread(\'104_8.tif\');

j=histeq(i);

③對比度調整:imadjust函數用于數字圖像的對比度調整,如:

i=imread(\'104_8.tif\');

j=imadjust(i,[0.3,0.7],[]);

④對數變換:log函數用于數字圖像的對數變換,如:

i=imread(\'104_8.tif\');

j=double(i);

k=log(j);

⑤基于卷積的圖像濾波函數:filter2函數用于圖像濾波,如:

i=imread(\'104_8.tif\');

h=[1,2,1;0,0,0;-1,-2,-1];

j=filter2(h,i);

⑥線性濾波:利用二維卷積conv2濾波, 如:

i=imread(\'104_8.tif\');

h=[1,1,1;1,1,1;1,1,1];

h=h/9;

j=conv2(i,h);

⑦中值濾波:medfilt2函數用于圖像的中值濾波,如:

i=imread(\'104_8.tif\');

j=medfilt2(i);

⑧銳化

(1)利用Sobel算子銳化圖像, 如:

i=imread(\'104_8.tif\');

h=[1,2,1;0,0,0;-1,-2,-1];%Sobel算子

j=filter2(h,i);

(2)利用拉氏算子銳化圖像, 如:

i=imread(\'104_8.tif\');

j=double(i);

h=[0,1,0;1,-4,0;0,1,0];%拉氏算子

k=conv2(j,h,\'same\');

m=j-k;

3、圖像邊緣檢測

①sobel算子 如:i=imread(\'104_8.tif\');j = edge(i,\'sobel\',thresh)

②prewitt算子 如:i=imread(\'104_8.tif\');j = edge(i,\'prewitt\',thresh)

③roberts算子 如:i=imread(\'104_8.tif\');j = edge(i,\'roberts\',thresh)

④log算子 如:i=imread(\'104_8.tif\');j = edge(i,\'log\',thresh)

⑤canny算子 如:i=imread(\'104_8.tif\');j = edge(i,\'canny\',thresh)

⑥Zero-Cross算子 如:i=imread(\'104_8.tif\');j = edge(i,\'zerocross\',thresh)

4、形态學圖像處理

①膨脹:是在二值化圖像中“加長”或“變粗”的操作,函數imdilate執行膨脹運算,如:

a=imread(\'104_7.tif\'); %輸入二值圖像

b=[0 1 0;1 1 1;0 1 0];

c=imdilate(a,b);

②腐蝕:函數imerode執行腐蝕,如:

a=imread(\'104_7.tif\'); %輸入二值圖像

b=strel(\'disk\',1);

c=imerode(a,b);

③開運算:先腐蝕後膨脹稱為開運算,用imopen來實作,如:

a=imread(\'104_8.tif\');

b=strel(\'square\',2);

c=imopen(a,b);

④閉運算:先膨脹後腐蝕稱為閉運算,用imclose來實作,如:

a=imread(\'104_8.tif\');

b=strel(\'square\',2);

c=imclose(a,b);

轉自:http://www.matlabfan.com/thread-700-1-1.html

下清單格中除了個别函數外,其餘函數都是圖像處理工具箱提供的關于圖像處理的函數,現摘錄到此以備查找。

1. 圖像和圖像資料

    預設情況下,MATLAB将圖像中的資料存儲為雙精度類型(double),64位浮點數,所需存儲量很大;MATLAB還支援另一種類型無符号整型(uint8),即圖像矩陣中每個資料占用1個位元組。

    在使用MATLAB工具箱時,一定要注意函數所要求的參數類型。另外,uint8與double兩種類型資料的值域不同,程式設計需注意值域轉換。

從uint8到double的轉換

---------------------------------------------

圖像類型 MATLAB語句

---------------------------------------------

索引色 B=double(A)+1

索引色或真彩色 B=double(A)/255

二值圖像 B=double(A)

---------------------------------------------

從double到uint8的轉換

---------------------------------------------

圖像類型 MATLAB語句

---------------------------------------------

索引色 B=uint8(round(A-1))

索引色或真彩色 B=uint8(round(A*255))

二值圖像 B=logical(uint8(round(A)))

---------------------------------------------

2. 圖像處理工具箱所支援的圖像類型

2.1 真彩色圖像

    R、G、B三個分量表示一個像素的顔色。如果要讀取圖像中(100,50)處的像素值,可檢視三中繼資料(100,50,1:3)。

    真彩色圖像可用雙精度存儲,亮度值範圍是[0,1];比較符合習慣的存儲方法是用無符号整型存儲,亮度值範圍[0,255]

2.2 索引色圖像

    包含兩個結構,一個是調色闆,另一個是圖像資料矩陣。調色闆是一個有3列和若幹行的色彩映象矩陣,矩陣每行代表一種顔色,3列分别代表紅、綠、藍色強度的雙精度數。

注意:MATLAB中調色闆色彩強度[0,1],0代表最暗,1代表最亮。

常用顔色的RGB值

--------------------------------------------

顔色 R G B 顔色 R G B

--------------------------------------------

黑 0 0 1 洋紅 1 0 1

白 1 1 1 青藍 0 1 1

紅 1 0 0 天藍 0.67 0 1

綠 0 1 0 橘黃 1 0.5 0

藍 0 0 1 深紅 0.5 0 0

黃 1 1 0 灰 0.5 0.5 0.5

--------------------------------------------

産生标準調色闆的函數

-------------------------------------------------

函數名 調色闆

-------------------------------------------------

Hsv 色彩飽和度,以紅色開始,并以紅色結束

Hot 黑色-紅色-黃色-白色

Cool 青藍和洋紅的色度

Pink 粉紅的色度

Gray 線型灰階

Bone 帶藍色的灰階

Jet Hsv的一種變形,以藍色開始,以藍色結束

Copper 線型銅色度

Prim 三棱鏡,交替為紅、橘黃、黃、綠和天藍

Flag 交替為紅、白、藍和黑

--------------------------------------------------

    預設情況下,調用上述函數灰産生一個64×3的調色闆,使用者也可指定調色闆大小。索引色圖像資料也有double和uint8兩種類型。當圖像資料為double類型時,值1代表調色闆中的第1行,值2代表第2行……如果圖像資料為uint8類型,0代表調色闆的第一行,,值1代表第2行……

2.3 灰階圖像

    存儲灰階圖像隻需要一個資料矩陣。

    資料類型可以是double,[0,1];也可以是uint8,[0,255]

2.4 二值圖像

    二值圖像隻需一個資料矩陣,每個像素隻有兩個灰階值,可以采用uint8或double類型存儲。

    MATLAB工具箱中以二值圖像作為傳回結果的函數都使用uint8類型。

2.5 圖像序列

    MATLAB工具箱支援将多幀圖像連接配接成圖像序列。圖像序列是一個4維數組,圖像幀的序号在圖像的長、寬、顔色深度之後構成第4維。

    分散的圖像也可以合并成圖像序列,前提是各圖像尺寸必須相同,若是索引色圖像,調色闆也必須相同。

    可參考cat()函數 A=cat(4,A1,A2,A3,A4,A5)

3. MATLAB圖像類型轉換

圖像類型轉換函數

---------------------------------------------------------------------------

函數名 函數功能

---------------------------------------------------------------------------

dither 圖像抖動,将灰階圖變成二值圖,或将真彩色圖像抖動成索引色圖像

gray2ind 将灰階圖像轉換成索引圖像

grayslice 通過設定門檻值将灰階圖像轉換成索引色圖像

im2bw 通過設定亮度門檻值将真彩色、索引色、灰階圖轉換成二值圖

ind2gray 将索引色圖像轉換成灰階圖像

ind2rgb 将索引色圖像轉換成真彩色圖像

mat2gray 将一個資料矩陣轉換成一副灰階圖

rgb2gray 将一副真彩色圖像轉換成灰階圖像

rgb2ind 将真彩色圖像轉換成索引色圖像

----------------------------------------------------------------------------

4. 圖像檔案的讀寫和查詢

4.1 圖形圖像檔案的讀取

    利用函數imread()可完成圖形圖像檔案的讀取,文法:

A=imread(filename,fmt)

[X,map]=imread(filename,fmt)

[...]=imread(filename)

[...]=imread(filename,idx) (隻對TIF格式的檔案)

[...]=imread(filename,ref) (隻對HDF格式的檔案)

    通常,讀取的大多數圖像均為8bit,當這些圖像加載到記憶體中時,Matlab就将其存放在類uint8中。此為Matlab還支援16bit的PNG和TIF圖像,當讀取這類檔案時,Matlab就将其存貯在uint16中。

    注意:對于索引圖像,即使圖像陣列的本身為類uint8或類uint16,imread函數仍将顔色映象表讀取并存貯到一個雙精度的浮點類型的陣列中。

4.2 圖形圖像檔案的寫入

    使用imwrite函數,文法如下:

imwrite(A,filename,fmt)

imwrite(X,map,filename,fmt)

imwrite(...,filename)

imwrite(...,parameter,value)

當利用imwrite函數儲存圖像時,Matlab預設的方式是将其簡化道uint8的資料格式。

4.3 圖形圖像檔案資訊的查詢imfinfo()函數

5. 圖像檔案的顯示

5.1 索引圖像及其顯示

方法一:

image(X)

colormap(map)

方法二:

imshow(X,map)

5.2 灰階圖像及其顯示

    Matlab 7.0 中,要顯示一副灰階圖像,可以調用函數 imshow 或 imagesc (即imagescale,圖像縮放函數)

(1) imshow 函數顯示灰階圖像

    使用imshow(I)或使用明确指定的灰階級書目:

imshow(I,32)

    由于Matlab自動對灰階圖像進行标度以适合調色闆的範圍,因而可以使用自定義大小的調色闆。其調用格式如下:

imshow(I,[low,high]) 其中,low 和 high 分别為資料數組的最小值和最大值。

(2) imagesc 函數顯示灰階圖像

    下面的代碼是具有兩個輸入參數的 imagesc 函數顯示一副灰階圖像

imagesc(1,[0,1]);

colormap(gray);

    imagesc 函數中的第二個參數确定灰階範圍。灰階範圍中的第一個值(通常是0),對應于顔色映象表中的第一個值(顔色),第二個值(通常是1)則對應與顔色映象表中的最後一個值(顔色)。灰階範圍中間的值則線型對應與顔色映象表中剩餘的值(顔色)。

    在調用 imagesc 函數時,若隻使用一個參數,可以用任意灰階範圍顯示圖像。在該調用方式下,資料矩陣中的最小值對應于顔色映象表中的第一個顔色值,資料矩陣中的最大值對應于顔色映象表中的最後一個顔色值。

5.3 RGB 圖像及其顯示

(1) image(RGB)

    不管RGB圖像的類型是double浮點型,還是 uint8 或 uint16 無符号整數型,Matlab都能通過 image 函數将其正确顯示出來。

RGB8 = uint8(round(RGB64×255)); % 将 double 浮點型轉換為 uint8 無符号整型

RGB64 = double(RGB8)/255; % 将 uint8 無符号整型轉換為 double 浮點型

RGB16 = uint16(round(RGB64×65535)); % 将 double 浮點型轉換為 uint16 無符号整型

RGB64 = double(RGB16)/65535; % 将 uint16 無符号整型轉換為 double 浮點型

(2) imshow(RGB) 參數是一個 m×n×3 的數組

5.4 二進制圖像及其顯示

(1) imshow(BW)

     在 Matlab 7.0 中,二進制圖像是一個邏輯類,僅包括 0 和 1 兩個數值。像素 0 顯示為黑色,像素 1 顯示為白色。

    顯示時,也可通過NOT(~)指令,對二進制圖象進行取反,使數值 0 顯示為白色;1 顯示為黑色。

例如: imshow(~BW)

(2) 此外,還可以使用一個調色闆顯示一副二進制圖像。如果圖形是 uint8 資料類型,則數值 0 顯示為調色闆的第一個顔色,數值 1 顯示為第二個顔色。

例如: imshow(BW,[1 0 0;0 0 1])

5.5 直接從磁盤顯示圖像

    可使用一下指令直接進行圖像檔案的顯示:

imshow filename

其中,filename 為要顯示的圖像檔案的檔案名。

    如果圖像是多幀的,那麼 imshow 将僅顯示第一幀。但需注意,在使用這種方式時,圖像資料沒有儲存在Matlab 7.0 工作平台。如果希望将将圖像裝入工作台中,需使用 getimage 函數,從目前的句柄圖形圖像對象中擷取圖像資料,指令形式為:

rgb = getimage;

1、圖像的變換

① fft2:fft2函數用于數字圖像的二維傅立葉變換,如:

i=imread(\'104_8.tif\');

j=fft2(i);

②ifft2::ifft2函數用于數字圖像的二維傅立葉反變換,如:

i=imread(\'104_8.tif\');

j=fft2(i);

k=ifft2(j);

2、模拟噪聲生成函數和預定義濾波器

① imnoise:用于對圖像生成模拟噪聲,如:

i=imread(\'104_8.tif\');

j=imnoise(i,\'gaussian\',0,0.02);%模拟高斯噪聲

② fspecial:用于産生預定義濾波器,如:

h=fspecial(\'sobel\');%sobel水準邊緣增強濾波器h=fspecial(\'gaussian\');%高斯低通濾波器

h=fspecial(\'laplacian\');%拉普拉斯濾波器h=fspecial(\'log\');%高斯拉普拉斯(LoG)濾波器

h=fspecial(\'average\');%均值濾波器

3、圖像的增強

①直方圖:imhist函數用于數字圖像的直方圖顯示,如:

i=imread(\'104_8.tif\');

imhist(i);

②直方圖均化:histeq函數用于數字圖像的直方圖均化,如:

i=imread(\'104_8.tif\');

j=histeq(i);

③對比度調整:imadjust函數用于數字圖像的對比度調整,如:

i=imread(\'104_8.tif\');

j=imadjust(i,[0.3,0.7],[]);

④對數變換:log函數用于數字圖像的對數變換,如:

i=imread(\'104_8.tif\');

j=double(i);

k=log(j);

⑤基于卷積的圖像濾波函數:filter2函數用于圖像濾波,如:

i=imread(\'104_8.tif\');

h=[1,2,1;0,0,0;-1,-2,-1];

j=filter2(h,i);

⑥線性濾波:利用二維卷積conv2濾波, 如:

i=imread(\'104_8.tif\');

h=[1,1,1;1,1,1;1,1,1];

h=h/9;

j=conv2(i,h);

⑦中值濾波:medfilt2函數用于圖像的中值濾波,如:

i=imread(\'104_8.tif\');

j=medfilt2(i);

⑧銳化

(1)利用Sobel算子銳化圖像, 如:

i=imread(\'104_8.tif\');

h=[1,2,1;0,0,0;-1,-2,-1];%Sobel算子

j=filter2(h,i);

(2)利用拉氏算子銳化圖像, 如:

i=imread(\'104_8.tif\');

j=double(i);

h=[0,1,0;1,-4,0;0,1,0];%拉氏算子

k=conv2(j,h,\'same\');

m=j-k;

3、圖像邊緣檢測

①sobel算子 如:i=imread(\'104_8.tif\');j = edge(i,\'sobel\',thresh)

②prewitt算子 如:i=imread(\'104_8.tif\');j = edge(i,\'prewitt\',thresh)

③roberts算子 如:i=imread(\'104_8.tif\');j = edge(i,\'roberts\',thresh)

④log算子 如:i=imread(\'104_8.tif\');j = edge(i,\'log\',thresh)

⑤canny算子 如:i=imread(\'104_8.tif\');j = edge(i,\'canny\',thresh)

⑥Zero-Cross算子 如:i=imread(\'104_8.tif\');j = edge(i,\'zerocross\',thresh)

4、形态學圖像處理

①膨脹:是在二值化圖像中“加長”或“變粗”的操作,函數imdilate執行膨脹運算,如:

a=imread(\'104_7.tif\'); %輸入二值圖像

b=[0 1 0;1 1 1;0 1 0];

c=imdilate(a,b);

②腐蝕:函數imerode執行腐蝕,如:

a=imread(\'104_7.tif\'); %輸入二值圖像

b=strel(\'disk\',1);

c=imerode(a,b);

③開運算:先腐蝕後膨脹稱為開運算,用imopen來實作,如:

a=imread(\'104_8.tif\');

b=strel(\'square\',2);

c=imopen(a,b);

④閉運算:先膨脹後腐蝕稱為閉運算,用imclose來實作,如:

a=imread(\'104_8.tif\');

b=strel(\'square\',2);

c=imclose(a,b);

轉自:http://www.matlabfan.com/thread-700-1-1.html

下清單格中除了個别函數外,其餘函數都是圖像處理工具箱提供的關于圖像處理的函數,現摘錄到此以備查找。

表1 圖像顯示

函數名 功能說明 函數名 功能說明
colorbar 顔色條顯示 montage 按矩形剪輯方式顯示多幀圖像
getimage 從坐标系中擷取圖像資料 immovie 從多幀索引圖像中制作電影
image 建立顯示圖像 movie 播放電影
subimage 在同一圖像視窗顯示多個圖像 trueszie 調整圖像顯示大小
imagesc 調整資料并顯示圖像 warp 顯示圖像為紋理映射表面
imshow 圖像顯示 zoom 二維圖形放大或縮小

表2 圖像檔案輸入/輸出

函數名 功能說明 函數名 功能說明
imread 圖像檔案讀入 load 将以mat為擴充名的圖像檔案調入到記憶體
imwrite 圖像寫出 save 将記憶體變量中圖像儲存到mat檔案中
dicomread 讀取DICOM圖像 dicomwrite 輸出DICOM圖像
iminfo 檢視圖形資訊

表3 圖像像素值及其統計

函數名 功能說明 函數名 功能說明
impixel 傳回標明圖像像素顔色值 imcontour 畫圖像資料輪廓(等高線,等值線)
improfile 圖像中沿一個路徑的資料值計算 imhist 求圖像資料直方圖
mean2 求均值 corr2 求相關系數
std2 求标準差

表4 圖像分析

函數名 功能說明 函數名 功能說明
edge 灰階圖像邊緣檢測 qtgetblk 獲得四叉樹分解塊值
qtecomp 執行四叉樹分解 qtsetblk 設定四叉樹分解塊值

表5 圖像增強及平滑

函數名 功能說明 函數名 功能說明
imadjust 對比度調整 medfilt2 二維中值濾波器
histeq 直方圖均衡 ordfilt2 順序統計濾波器
imnoise 給圖像增加噪聲 wiener2 二維自适應除噪濾波器

表6 圖像線性濾波及二維線性濾波器設計

函數名 功能說明 函數名 功能說明
conv2 二維卷積 freqz2 計算二維頻率響應
convmtx2 計算二維卷積矩陣 fsamp2 用頻率抽樣設計二維FIR濾波器
convn 多元卷積 ftrans 用頻率抽樣轉換二維FIRlbq
filter2 二維線性數字濾波器 fwind1 用一維視窗方法設計二維FIR濾波器
fspecial 産生預定義濾波器 fwind2 用二維視窗方法設計二維FIR濾波器
frespace 确定二維頻率響應間隔

表7 圖像變換

函數名 功能說明 函數名 功能說明
fft 計算一維快速Fourier變換 dct 計算離散餘弦變換
ifft 計算一維FFT的逆變換 idct 計算離散反餘弦變換
fft2 計算二維FFT dct2 計算2D離散餘弦變換
ifft2 計算二維逆FFT idct2 計算2D反離散餘弦變換
fftn 計算多元FFT dctmtx 計算TCT矩陣
ifftn 計算多元逆FFT radon 計算Radon變換
fftshift 直流分量移到頻譜中心

表8 圖像領域及操作

函數名 功能說明 函數名 功能說明
bestblk 選擇塊處理的塊大小 colfilt 使用列方向函數進行領域運算
blkproc 對圖像實行不同的塊處理 im2col 重排圖像塊為矩陣列
col2im 重排矩陣列成圖像塊 nlfilter 進行一般領域計算

表9 二值圖像操作

函數名 功能說明 函數名 功能說明
applylut 使用查找表進行領域操作 bwperim 确定二值圖像中的目标邊界
bwarea 計算二值圖像中的目标區域 bwselect 選擇二值圖像中的目标
bweuler 計算二值圖像中的歐拉數 dilate 對二值圖像進行膨脹計算
bwfill 二值圖像背景區域填充 erode 對二值圖像進行寝蝕運算
bwlabel 辨別二值圖像中的連接配接成分 makelut 構造查找表(applylut)使用
bwmorph 二值圖像形态運算

表10 基于區域的圖像處理

函數名 功能說明 函數名 功能說明
roicolor 根據顔色選擇要處理的區域 roifilt2 對要處理區域濾波
roifill 在任意區域内平滑內插補點 roipoly 選擇要處理的多邊形區域

表11 圖像幾何運算

函數名 功能說明 函數名 功能說明
imcrop 圖像剪裁 imrotate 圖像旋轉
imresize 圖像大小調整 interp2 二維資料內插補點

表12 圖像顔色圖操作

函數名 功能說明 函數名 功能說明
brighten 顔色圖像變亮或變暗 colormap 設定擷取圖
cmpermute 重新排列顔色圖中的顔色 imapprox 由顔色較少的圖像近似索引圖像
cmunique 尋找唯一的顔色圖及相應的圖像 rgbplot 繪制RGB顔色圖

表13 顔色控件轉換

函數名 功能說明 函數名 功能說明
hsv2rgb 将HSV顔色轉化為RGB顔色值 mtsc2rgb 将NTSC值轉換為RGB顔色空間值
rgb2hsv 将RGB顔色值轉換為HSV顔色值 rgb2ntsc 将RGB值轉換為NTSC顔色空間值

表1 圖像顯示

函數名 功能說明 函數名 功能說明
colorbar 顔色條顯示 montage 按矩形剪輯方式顯示多幀圖像
getimage 從坐标系中擷取圖像資料 immovie 從多幀索引圖像中制作電影
image 建立顯示圖像 movie 播放電影
subimage 在同一圖像視窗顯示多個圖像 trueszie 調整圖像顯示大小
imagesc 調整資料并顯示圖像 warp 顯示圖像為紋理映射表面
imshow 圖像顯示 zoom 二維圖形放大或縮小

表2 圖像檔案輸入/輸出

函數名 功能說明 函數名 功能說明
imread 圖像檔案讀入 load 将以mat為擴充名的圖像檔案調入到記憶體
imwrite 圖像寫出 save 将記憶體變量中圖像儲存到mat檔案中
dicomread 讀取DICOM圖像 dicomwrite 輸出DICOM圖像
iminfo 檢視圖形資訊

表3 圖像像素值及其統計

函數名 功能說明 函數名 功能說明
impixel 傳回標明圖像像素顔色值 imcontour 畫圖像資料輪廓(等高線,等值線)
improfile 圖像中沿一個路徑的資料值計算 imhist 求圖像資料直方圖
mean2 求均值 corr2 求相關系數
std2 求标準差

表4 圖像分析

函數名 功能說明 函數名 功能說明
edge 灰階圖像邊緣檢測 qtgetblk 獲得四叉樹分解塊值
qtecomp 執行四叉樹分解 qtsetblk 設定四叉樹分解塊值

表5 圖像增強及平滑

函數名 功能說明 函數名 功能說明
imadjust 對比度調整 medfilt2 二維中值濾波器
histeq 直方圖均衡 ordfilt2 順序統計濾波器
imnoise 給圖像增加噪聲 wiener2 二維自适應除噪濾波器

表6 圖像線性濾波及二維線性濾波器設計

函數名 功能說明 函數名 功能說明
conv2 二維卷積 freqz2 計算二維頻率響應
convmtx2 計算二維卷積矩陣 fsamp2 用頻率抽樣設計二維FIR濾波器
convn 多元卷積 ftrans 用頻率抽樣轉換二維FIRlbq
filter2 二維線性數字濾波器 fwind1 用一維視窗方法設計二維FIR濾波器
fspecial 産生預定義濾波器 fwind2 用二維視窗方法設計二維FIR濾波器
frespace 确定二維頻率響應間隔

表7 圖像變換

函數名 功能說明 函數名 功能說明
fft 計算一維快速Fourier變換 dct 計算離散餘弦變換
ifft 計算一維FFT的逆變換 idct 計算離散反餘弦變換
fft2 計算二維FFT dct2 計算2D離散餘弦變換
ifft2 計算二維逆FFT idct2 計算2D反離散餘弦變換
fftn 計算多元FFT dctmtx 計算TCT矩陣
ifftn 計算多元逆FFT radon 計算Radon變換
fftshift 直流分量移到頻譜中心

表8 圖像領域及操作

函數名 功能說明 函數名 功能說明
bestblk 選擇塊處理的塊大小 colfilt 使用列方向函數進行領域運算
blkproc 對圖像實行不同的塊處理 im2col 重排圖像塊為矩陣列
col2im 重排矩陣列成圖像塊 nlfilter 進行一般領域計算

表9 二值圖像操作

函數名 功能說明 函數名 功能說明
applylut 使用查找表進行領域操作 bwperim 确定二值圖像中的目标邊界
bwarea 計算二值圖像中的目标區域 bwselect 選擇二值圖像中的目标
bweuler 計算二值圖像中的歐拉數 dilate 對二值圖像進行膨脹計算
bwfill 二值圖像背景區域填充 erode 對二值圖像進行寝蝕運算
bwlabel 辨別二值圖像中的連接配接成分 makelut 構造查找表(applylut)使用
bwmorph 二值圖像形态運算

表10 基于區域的圖像處理

函數名 功能說明 函數名 功能說明
roicolor 根據顔色選擇要處理的區域 roifilt2 對要處理區域濾波
roifill 在任意區域内平滑內插補點 roipoly 選擇要處理的多邊形區域

表11 圖像幾何運算

函數名 功能說明 函數名 功能說明
imcrop 圖像剪裁 imrotate 圖像旋轉
imresize 圖像大小調整 interp2 二維資料內插補點

表12 圖像顔色圖操作

函數名 功能說明 函數名 功能說明
brighten 顔色圖像變亮或變暗 colormap 設定擷取圖
cmpermute 重新排列顔色圖中的顔色 imapprox 由顔色較少的圖像近似索引圖像
cmunique 尋找唯一的顔色圖及相應的圖像 rgbplot 繪制RGB顔色圖

表13 顔色控件轉換

函數名 功能說明 函數名 功能說明
hsv2rgb 将HSV顔色轉化為RGB顔色值 mtsc2rgb 将NTSC值轉換為RGB顔色空間值
rgb2hsv 将RGB顔色值轉換為HSV顔色值 rgb2ntsc 将RGB值轉換為NTSC顔色空間值

表1 圖像顯示

函數名 功能說明 函數名 功能說明
colorbar 顔色條顯示 montage 按矩形剪輯方式顯示多幀圖像
getimage 從坐标系中擷取圖像資料 immovie 從多幀索引圖像中制作電影
image 建立顯示圖像 movie 播放電影
subimage 在同一圖像視窗顯示多個圖像 trueszie 調整圖像顯示大小
imagesc 調整資料并顯示圖像 warp 顯示圖像為紋理映射表面
imshow 圖像顯示 zoom 二維圖形放大或縮小

表2 圖像檔案輸入/輸出

函數名 功能說明 函數名 功能說明
imread 圖像檔案讀入 load 将以mat為擴充名的圖像檔案調入到記憶體
imwrite 圖像寫出 save 将記憶體變量中圖像儲存到mat檔案中
dicomread 讀取DICOM圖像 dicomwrite 輸出DICOM圖像
iminfo 檢視圖形資訊

表3 圖像像素值及其統計

函數名 功能說明 函數名 功能說明
impixel 傳回標明圖像像素顔色值 imcontour 畫圖像資料輪廓(等高線,等值線)
improfile 圖像中沿一個路徑的資料值計算 imhist 求圖像資料直方圖
mean2 求均值 corr2 求相關系數
std2 求标準差

表4 圖像分析

函數名 功能說明 函數名 功能說明
edge 灰階圖像邊緣檢測 qtgetblk 獲得四叉樹分解塊值
qtecomp 執行四叉樹分解 qtsetblk 設定四叉樹分解塊值

表5 圖像增強及平滑

函數名 功能說明 函數名 功能說明
imadjust 對比度調整 medfilt2 二維中值濾波器
histeq 直方圖均衡 ordfilt2 順序統計濾波器
imnoise 給圖像增加噪聲 wiener2 二維自适應除噪濾波器

表6 圖像線性濾波及二維線性濾波器設計

函數名 功能說明 函數名 功能說明
conv2 二維卷積 freqz2 計算二維頻率響應
convmtx2 計算二維卷積矩陣 fsamp2 用頻率抽樣設計二維FIR濾波器
convn 多元卷積 ftrans 用頻率抽樣轉換二維FIRlbq
filter2 二維線性數字濾波器 fwind1 用一維視窗方法設計二維FIR濾波器
fspecial 産生預定義濾波器 fwind2 用二維視窗方法設計二維FIR濾波器
frespace 确定二維頻率響應間隔

表7 圖像變換

函數名 功能說明 函數名 功能說明
fft 計算一維快速Fourier變換 dct 計算離散餘弦變換
ifft 計算一維FFT的逆變換 idct 計算離散反餘弦變換
fft2 計算二維FFT dct2 計算2D離散餘弦變換
ifft2 計算二維逆FFT idct2 計算2D反離散餘弦變換
fftn 計算多元FFT dctmtx 計算TCT矩陣
ifftn 計算多元逆FFT radon 計算Radon變換
fftshift 直流分量移到頻譜中心

表8 圖像領域及操作

函數名 功能說明 函數名 功能說明
bestblk 選擇塊處理的塊大小 colfilt 使用列方向函數進行領域運算
blkproc 對圖像實行不同的塊處理 im2col 重排圖像塊為矩陣列
col2im 重排矩陣列成圖像塊 nlfilter 進行一般領域計算

表9 二值圖像操作

函數名 功能說明 函數名 功能說明
applylut 使用查找表進行領域操作 bwperim 确定二值圖像中的目标邊界
bwarea 計算二值圖像中的目标區域 bwselect 選擇二值圖像中的目标
bweuler 計算二值圖像中的歐拉數 dilate 對二值圖像進行膨脹計算
bwfill 二值圖像背景區域填充 erode 對二值圖像進行寝蝕運算
bwlabel 辨別二值圖像中的連接配接成分 makelut 構造查找表(applylut)使用
bwmorph 二值圖像形态運算

表10 基于區域的圖像處理

函數名 功能說明 函數名 功能說明
roicolor 根據顔色選擇要處理的區域 roifilt2 對要處理區域濾波
roifill 在任意區域内平滑內插補點 roipoly 選擇要處理的多邊形區域

表11 圖像幾何運算

函數名 功能說明 函數名 功能說明
imcrop 圖像剪裁 imrotate 圖像旋轉
imresize 圖像大小調整 interp2 二維資料內插補點

表12 圖像顔色圖操作

函數名 功能說明 函數名 功能說明
brighten 顔色圖像變亮或變暗 colormap 設定擷取圖
cmpermute 重新排列顔色圖中的顔色 imapprox 由顔色較少的圖像近似索引圖像
cmunique 尋找唯一的顔色圖及相應的圖像 rgbplot 繪制RGB顔色圖

表13 顔色控件轉換

函數名 功能說明 函數名 功能說明
hsv2rgb 将HSV顔色轉化為RGB顔色值 mtsc2rgb 将NTSC值轉換為RGB顔色空間值
rgb2hsv 将RGB顔色值轉換為HSV顔色值 rgb2ntsc 将RGB值轉換為NTSC顔色空間值