MATLAB中圖像函數大全

Matlab中圖像函數大全 2 

圖像處理函數詳解——strel

功能:用於膨脹腐蝕及開閉運算等操作的結構元素對象(本論壇隨即對膨脹腐蝕等操作進行講解)。

用法:SE = strel(shape,parameters)

創建由指定形狀shape對應的結構元素。其中shape的種類有

arbitrary'

'pair'

'diamond'

'periodicline'

'disk'

'rectangle'

'line'

'square'

'octagon

參數parameters一般控制SE的大小。

例子:

se1 = strel('square',6)

% 創建6*6的正方形

se2 = strel('line',10,45)

% 創建直線長度10,角度45

se3 = strel('disk',15)

% 創建圓盤半徑15

se4 = strel('ball',15,5)

% 創建橢圓體,半徑15,高度5

 

 

圖像處理函數詳解——roipoly

功能:用於選擇圖像中的多邊形區域。

用法:BW = roipoly(I,c,r)

BW = roipoly(I)

BW = roipoly(x,y,I,xi,yi)

[BW,xi,yi] = roipoly(...)

[x,y,BW,xi,yi] = roipoly(...)

BW = roipoly(I,c,r)表示用向量c、r指定多邊形各點的X、Y座標。BW選中的區域爲1,其他部分的值爲0.

BW = roipoly(I)表示建立交互式的處理界面。

BW = roipoly(x,y,I,xi,yi)表示向量x和y建立非默認的座標系,然後在指定的座標系下選擇由向量xi,yi指定的多邊形區域。

例子:I = imread('eight.tif');

 

c = [222 272 300 270 221 194];

 

r = [21 21 75 121 121 75];

 

BW = roipoly(I,c,r);

 

imshow(I)

 

figure, imshow(BW)

 

圖像處理函數詳解——roifilt2

功能:用於對一個區域進行濾波。

用法:J = roifilt2(h,I,BW)

J = roifilt2(I,BW,fun)

J = roifilt2(I,BW,fun,P1,P2,...)

J = roifilt2(h,I,BW)表示使用濾波器h對圖像I中用二值掩模BW選中的區域濾波。BW爲和I大小相同的二值圖像。

J = roifilt2(I,BW,fun,P1,P2,...)表示用fun函數處理區域濾波圖像I。參數P1、P2等爲fun函數的輸入參數。

例子:I = imread('eight.tif');

c = [222 272 300 270 221 194];

r = [21 21 75 121 121 75];

BW = roipoly(I,c,r);

h = fspecial('unsharp');

%指定濾波器

J = roifilt2(h,I,BW);

imshow(J), figure, imshow(J)

圖像處理函數詳解——roifill

(ROI——region-of-interest)

功能:對指定區域進行填充。

用法:J = roifill(I,c,r)

J = roifill(I)

[J,BW] = roifill(...)

J = roifill(x,y,I,xi,yi)

[x,y,J,BW,xi,yi] = roifill(...)

J = roifill(I,c,r) 填充由向量c,r指定的多邊形,c和r分別爲多邊形的各頂點X、Y座標。可用於擦除圖像中的小物體。

J = roifill(I)用於交互式處理界面。

J = roifill(I,BW)用BW(和I大小一致)掩模填充此區域。如果爲多個多邊形,則分別執行插值填充。

例子:I = imread('eight.tif');

c = [222 272 300 270 221 194];

r = [21 21 75 121 121 75];

J = roifill(I,c,r);

imshow(I)

figure, imshow(J)

圖像處理函數詳解——roicolor

功能:可以根據顏色選定區域。

用法:BW = roicolor(A,low,high)

BW = roicolor(A,v)

BW = roicolor(A,low,high)色圖範圍爲[low high],返回這些像素選擇區域。BW爲大小和A相同的數組,若A中元素值在[low high]範圍內,則返回值1,否則返回0.

BW = roicolor(A,v)返回圖像A中像素與向量v相匹配的區域,BW爲二值圖像,1值爲A中與v相匹配的地方。

例子:I = imread('rice.png');

BW = roicolor(I,128,255);

imshow(I);

figure, imshow(BW)

matlab圖像處理函數詳解——rgb2gray

功能:將真彩色圖像轉換成灰度圖像或者將彩色色圖轉換成灰度色圖。

用法:I = rgb2gray(RGB)

newmap = rgb2gray(map)

I = rgb2gray(RGB) 將真彩色圖像RGB轉換成灰度圖像I

newmap = rgb2gray(map) 將彩色色圖map轉換成灰度色圖newmap

例子:X=imread(‘peppers.png’);

 

BW = rgb2gray(X);

 

imview(BW)

Matlab圖像處理函數:regionprops

這裏給出在Matlab圖像處理工具箱中非常重要的一個圖像分析函數:regionprops。顧名思義:它的用途是get the properties of region,即用來度量圖像區域屬性的函數。語法STATS = regionprops(L,properties)描述測量標註矩陣L中每一個標註區域的一系列屬性。L中不同的正整數元素對應不同的區域,例如:L中等於整數1的元素對應區域1;L中等於整數2的元素對應區域2;以此類推。返回值STATS是一個長度爲max(L(:))的結構數組,結構數組的相應域定義了每一個區域相應屬性下的度量。properties 可以是由逗號分割的字符串列表、飽含字符串的單元數組、單個字符串 'all' 或者 'basic'。如果 properties 等於字符串 'all',則所有下述字串列表中的度量數據都將被計算,如果 properties 沒有指定或者等於 'basic',則屬性: 'Area', 'Centroid', 和 'BoundingBox' 將被計算。下面的列表就是所有有效的屬性字符串,它們大小寫敏感並且可以縮寫。 屬性字符串列表Area

EquivDiameter

MajorAxisLength

BoundingBox

EulerNumber

MinorAxisLength

Centroid

Extent

Orientation

ConvexArea

Extrema

PixelIdxList

ConvexHull

FilledArea

PixelList

ConvexImage

FilledImage

Solidity

Eccentricity

Image

屬性詳細定義本部分將結合一個具體的例子說明各種字串相關屬性的意義,矩陣取自在蟻蛉模式識別中做過預處理後的斑紋分割圖像,如下圖:

這是一幅二值圖像,在應用regionprops函數之前必須將其標註,可以調用 bwlabel函數和僞彩色處理,標註後的圖像如下圖:

下面基於以上的材料來考察屬性的含義。 'Area'是標量,計算出在圖像各個區域中像素總個數。注意:這個數值可能與由函數 bwarea 計算的值有輕微的不同。對於這樣一個數值,我們可以使用它除以整個圖像區域的像素個數而得到斑紋比例,可以作爲模式識別的候選特徵,並且這個特徵是仿射不變的。在本例中最後計算出的面積向量是 [3.8952,9.7213,17.663,3.5762,1.3432,1.6958,0.41974,0.41974,21.625,12.324,4.8187,1.5111]/10000.'BoundingBox'是1行ndims(L)*2列的向量,即包含相應區域的最小矩形。BoundingBox 形式爲 [ul_corner width],這裏 ul_corner 以 [x y z ...] 的座標形式給出邊界盒子的左上角、boxwidth 以 [x_width y_width ...] 形式指出邊界盒子沿着每個維數方向的長度。本例的各部分區域最小矩形如下圖!注意:請在這熟悉一下函數rectangle的使用方法。 'Centroid'是1行ndims(L)列的向量,給出每個區域的質心(重心)。 注意:Centroid 的第一個元素是重心水平座標(x座標)、第二個元素是重心垂直座標(y座標)。Centroid 所有其它元素則按照維順序排列。下圖採用以中心爲圓心的小圓來演示質心檢測的效果:

圖中各質心座標(標準化後的)依次爲: (x,y)=0.10478, 0.767390.11883, 0.0815450.19586, 0.610920.30701, 0.308070.65712, 0.316130.73165, 0.305310.74548, 0.353780.80624, 0.728020.84546, 0.615640.90554, 0.0795740.93477, 0.778710.97611, 0.15576'MajorAxisLength'是標量,與區域具有相同標準二階中心矩的橢圓的長軸長度(像素意義下)。本屬性只支持二維標註矩陣。 'MinorAxisLength' 是標量,與區域具有相同標準二階中心矩的橢圓的短軸長度(像素意義下)。本屬性只支持二維標註矩陣。 'Eccentricity' 是標量,與區域具有相同標準二階中心矩的橢圓的離心率(可作爲特徵)。本屬性只支持二維標註矩陣。 'Orientation' 是標量,與區域具有相同標準二階中心矩的橢圓的長軸與x軸的交角(度)。本屬性只支持二維標註矩陣。本例的各區域橢圓數據爲:長軸:18.767,45.172,43.003,30.687,16.505,15.698,5.8833,5.8833,46.954,38.873,22.929,15.429短軸:16.211,26.079,32.709,9.8458,6.8019,8.6386,5.8833,5.8833,35.976,31.022,16.98,7.8038離心率:0.50387,0.81652,0.6492,0.94713,0.91114,0.83497,0,0,0.64262,0.60262,0.67205,0.86266方向角:-29.219,-32.192,-9.3909,-50.904,-70.333,48.823,0,0,14.035,17.986,3.0319,-34.238我們可以考察離心率的變化趨勢,得到對於整個區域中的各區域的似圓性如何的大致感覺,比如下圖是12個區域的離心率變化情形:

由上圖可以看出區域整體的似圓性並不好,實際上可以考慮使用離心率向量作爲一個模式識別的特徵!! 'Image' 二值圖像,與某區域具有相同大小的邏輯矩陣。你可以用這個屬性直接將每個子區域提取出來,然後再作相應的處理!比如本例的第一個斑紋區域提出後是。 'FilledImage' 與上相同,唯一區別是這是個做了填充的邏輯矩陣!本例中和上面的沒有區別,只有區域有空洞時纔有明顯差別。 'FilledArea' 是標量,填充區域圖像中的 on 像素個數。 'ConvexHull' 是p行2列的矩陣,包含某區域的最小凸多邊形。此矩陣的每一行存儲此多邊形一個頂點的xy座標。此屬性只支持2維標註矩陣。例如:本例中的所有子區域的最小凸多邊形圖形如下圖

看看第2個區域的大圖。 'ConvexImage' 二值圖像,用來畫出上述的區域最小凸多邊形。同時此凸包內的像素均打開,圖像尺寸和此區域對應邊界矩形相同。此屬性只支持2維標註矩陣。例如:本例中的第2個子區域的最小凸多邊形圖形爲。注意:此處函數roipoly很有用! 'ConvexArea' 是標量,填充區域凸多邊形圖像中的 on 像素個數。 'EulerNumber' 是標量,幾何拓撲中的一個拓撲不變量--歐拉數,等於圖像中目標個數減去這些目標中空洞的個數。 此屬性只支持2維標註矩陣。本例中的歐拉數均爲1。 'Extrema' 8行2列矩陣,八方向區域極值點。矩陣每行存儲這些點的xy座標,向量格式爲 [top-left top-right right-top right-bottom bottom-right bottom-left left-bottom left-top]。此屬性只支持2維標註矩陣。 'EquivDiameter' 是標量,等價直徑:與區域具有相同面積的圓的直徑。計算公式爲:sqrt(4*Area/pi)。. 此屬性只支持2維標註矩陣。本例標準化後的12區域直徑向量爲: [2.227,3.5182,4.7423,2.1339,1.3077,1.4694,0.73105,0.73105,5.2473,3.9612,2.477,1.3871]/100.'Solidity' 是標量,同時在區域和其最小凸多邊形中的像素比例。計算公式爲:Area/ConvexArea,這也是個仿射特徵,實際上反映出區域的固靠性程度。此屬性只支持2維標註矩陣。本例12區域凸元素比例向量爲: [0.97071,0.66171,0.90846,0.86585,0.84211,0.94393,1,1,0.9096,0.75514,0.90823,0.94737].'Extent' 是標量,同時在區域和其最小邊界矩形中的像素比例。計算公式爲:Area除以邊界矩形面積,這也是個仿射特徵,實際上反映出區域的擴展範圍程度。此屬性只支持2維標註矩陣。不再給出計算結果!! 'PixelIdxList' p元向量,存儲區域像素的索引下標。 'PixelList'p行ndims(L)列矩陣,存儲上述索引對應的像素座標。支持類輸入的標註矩陣L可以有任意的數值類型。 提醒使用逗號分割列表語法當你基於regionprops函數的輸出作算法設計時,使用逗號分割列表語法就凸顯出其非常的價值。例如:對於一個存儲標量的屬性,可以利用此語法創建一個包含圖像中不同區域內此屬性值的向量。例如以下兩句是等價的: stats(1).Area, stats(2).Area, ..., stats(end).Areastats.Area因此,可以使用下面的方法創建相應的向量: regionprops(L,'Area');allArea = [stats.Area];allArea 就是一個與結構數組 stats 具備相同長度的向量。 基於特定原則的區域選擇當你要基於特定準則條件選擇某個區域時,將函數 ismember 和 regionprops 聯合使用是很有用處的。例如:創建一個只包含面積大於80的二值圖像,用以下命令 idx = find([stats.Area] > 80);BW2 = ismember(L,idx);計算性能考慮大多數的屬性測量計算時間都非常地少,除了那些非常依賴於圖像L中區域個數和像素個數的屬性。例如: 'ConvexHull' 'ConvexImage' 'ConvexArea' 'FilledImage' 另外建議一次性計算所有屬性值,因爲分開計算和一起計算時間相差無幾!使用二值圖像工作在調用regionprops之前必須將二值圖像轉變爲標註矩陣。兩個函數可以做到: L = bwlabel(BW); L = double(BW);注意:雖然這兩個函數從同一二值圖像產生不同的標註矩陣,但是它們是等效的!例如:給出如下的二值矩陣BW, 1 1 0 0 0 01 1 0 0 0 00 0 0 0 0 00 0 0 0 1 10 0 0 0 1 1bwlabel 創建一個包含兩個分別由整數1和2標註的連續區域標註矩陣 mylabel = bwlabel(BW)mylabel =     1     1     0     0     0     0     1     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     2     2     0     0     0     0     2     2double 創建一個包含一個由整數1標註的不連續區域標註矩陣。 mylabel2 = double(BW)mylabel2 =     1     1     0     0     0     0     1     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1     1     0     0     0     0     1     1regionprops 並不負責自動轉換二值圖像數據類型,而是由你自己決定使用何種數據轉換方法來存儲自己想要的數據。 regionprops函數的擴展思路在regionprops函數的基礎上,你可以使用它提供的基本數據來擴展它的功能,比如我就將區域的曲率數據和骨架數據作爲它的另外屬性值來開發,從而希望它能用來做更細緻的特徵提取。

圖像處理函數詳解——padarray

功能:填充圖像或填充數組。

用法:B = padarray(A,padsize,padval,direction)

       A爲輸入圖像,B爲填充後的圖像,padsize給出了給出了填充的行數和列數,通常用[r c]來表示。padval和direction分別表示填充方法和方向。它們的具體值和描述如下:

  padval:'symmetric'表示圖像大小通過圍繞邊界進行鏡像反射來擴展;

                     'replicate'表示圖像大小通過複製外邊界中的值來擴展;

                     'circular'圖像大小通過將圖像看成是一個二維週期函數的一個週期來進行擴展。

       direction:'pre'表示在每一維的第一個元素前填充;

                        'post'表示在每一維的最後一個元素後填充;

                        'both'表示在每一維的第一個元素前和最後一個元素後填充,此項爲默認值。

       若參量中不包括direction,則默認值爲'both'。若參量中不包含padval,則默認用零來填充。若參量中不包括任何參數,則默認填充爲零且方向爲'both'。在計算結束時,圖像會被修剪成原始大小。

舉例:

        A = [1 2; 3 4];

        B = padarray(A,[3 2],'replicate','post')

圖像處理函數詳解——nlfilter

功能:用來執行通用的滑動鄰域操作。

用法:B = nlfilter(A,[m n],fun)

B = nlfilter(A,[m n],fun,P1,P2,...)

B = nlfilter(A,'indexed',...)

B = nlfilter(A,[m n],fun)表示對圖像A的每一個m*n滑塊應用函數fun。fun函數必須接受m*n塊作爲輸入,並返回一個標量y,形如:

c=fun(x)

c爲m*n塊x的中心像素點的輸入值。

例子:B = nlfilter(A,[3 3],@myfun);

其中myfun是以m文件如下:

function scalar = myfun(x)

scalar = median(x(:));

圖像處理函數詳解——montage

功能:在同一時間顯示多幀圖像中的所有幀。

用法:montage(I)

montage(BW)

montage(X,map)

montage(RGB)

h = montage(...)

 

montage(I)  ——顯示灰度圖像I共k幀,I爲m*n*1*k的數組

montage(BW) ——顯示二值圖像I共k幀,I爲m*n*1*k的數組

montage(X,map)——顯示索引圖像I共k幀,色圖由map指定爲所有的幀圖像的色圖,X爲m*n*1*k的數組

montage(RGB)——顯示真彩色圖像GRB共k幀,RGB爲m*n*3*k的數組

例子:

mri=uint8(zeros(128,128,1,27));

for frame=1:27

[mri(:,:,:,frame),map]=imread('mri.tif',frame);

%把每一幀讀入內存中

end

montage(mri,map);

函數詳解——mat2gray

功能:將矩陣轉化爲灰度圖像。

用法:I = mat2gray(A,[amin amax])        把一個double類的任意數組轉換成取值範圍爲[0 1]的亮度圖像。其中圖像I的取值範圍也在0(黑色)到1(白色)之間。參數amin和amax表示將A中小於amin的值轉換爲0,將A中大於amax的值轉換爲1。

           I = mat2gray(A)      將矩陣A中實際最小值和最大值分別賦給amin和amax。

舉例:I = imread('rice.png');

           J = filter2(fspecial('sobel'),I);

           K = mat2gray(J);

           imshow(I), figure, imshow(K)

圖像處理函數詳解——imclose

功能:對圖像實現閉運算,閉運算也能平滑圖像的輪廓,但與開運算相反,它一般融合窄的缺口和細長的彎口,去掉小洞,填補輪廓上的縫隙。

用法:IM2 = imclose(IM,SE)

IM2 = imclose(IM,NHOOD)

用法和imopen相同,請在本論壇查找!

例子:

originalBW = imread('circles.png');

se = strel('disk',10);

closeBW = imclose(originalBW,se);

imview(closeBW)

圖像處理函數詳解——imopen

功能:對圖像實現開運算,開運算一般能平滑圖像的輪廓,消弱狹窄的部分,去掉細的突出。

用法:IM2 = imopen(IM,SE)

IM2 = imopen(IM,NHOOD)

IM2 = imopen(IM,SE)用結構元素SE實現灰度圖像或二值圖像的IM的形態開運算。SE可以是單個結構元素對象或者結構元素對象數組。

IM2 = imopen(IM,NHOOD)用結構元素strel(NHOOD)執行開運算。

例子:

I = imread('snowflakes.png');

se = strel('disk',5);

I_opened = imopen(I,se);

imview(I_opened,[])

圖像處理函數詳解——imerode

功能:對圖像實現腐蝕操作,即膨脹操作的反操作。

用法:IM2 = imerode(IM,SE)

IM2 = imerode(IM,NHOOD)

IM2 = imerode(IM,SE,PACKOPT,M)

IM2 = imerode(...,PADOPT)

IM2 = imerode(IM,SE) 腐蝕灰度,二值,壓縮二值圖像IM,返回IM2。參數SE爲由strel函數返回的結構元素或者結構元素對象組。

IM2 = imerode(IM,NHOOD)腐蝕圖像IM,這裏NHOOD是定義結構元素鄰域0和1的矩陣。

IM2 = imerode(...,PADOPT)指出輸出圖像的大小(是否與輸入圖像大小一致)。

例子:

originalBW = imread('circles.png');

se = strel('disk',11);

erodedBW = imerode(originalBW,se);

imview(originalBW), imview(erodedBW)

圖像處理函數詳解——imdilate

功能:對圖像實現膨脹操作。

用法:IM2 = imdilate(IM,SE)

IM2 = imdilate(IM,NHOOD)

IM2 = imdilate(IM,SE,PACKOPT)

IM2 = imdilate(...,PADOPT)

IM2 = imdilate(IM,SE) 膨脹灰度,二值,壓縮二值圖像IM,返回IM2。參數SE爲由strel函數返回的結構元素或者結構元素對象組。

IM2 = imdilate(IM,NHOOD)膨脹圖像IM,這裏NHOOD是定義結構元素鄰域0和1的矩陣。

IM2 = imdilate(IM,SE,PACKOPT)定義IM是否是一個壓縮的二值圖像。

IM2 = imdilate(...,PADOPT)指出輸出圖像的大小。

例子:

I = imread('cameraman.tif');

se = strel('ball',5,5);

I2 = imdilate(I,se);

imshow(I), title('Original')

figure, imshow(I2), title('Dilated')

圖像處理函數詳解——imresize

功能:改變圖像的大小。

用法:B = imresize(A,m)

B = imresize(A,m,method)

B = imresize(A,[mrows ncols],method)

B = imresize(...,method,n)

B = imresize(...,method,h)

imrersize函數使用由參數method指定的插值運算來改變圖像的大小。method的幾種可選值:

'nearest'(默認值)最近鄰插值

'bilinear'雙線性插值

'bicubic'雙三次插值

B = imresize(A,m)表示把圖像A放大m倍

B = imresize(...,method,h)中的h可以是任意一個FIR濾波器(h通常由函數ftrans2、fwind1、fwind2、或fsamp2等生成的二維FIR濾波器)。

例子:I = imread('circuit.tif');

J =imresize(I,1.25);

%使用默認的最近鄰插值法放大圖像1.25倍

imshow(I)

figure, imshow(J)

圖像處理函數詳解——imnoise

功能:模仿噪聲信息,相當於圖像的相加運算。

用法:J = imnoise(I,type)

J = imnoise(I,type,parameters)

參數Type對應的噪聲類型如下:

'gaussian'高斯白噪聲

'localvar'0均值白噪聲

'poisson'泊松噪聲

'salt & pepper'鹽椒噪聲

'speckle'乘性噪聲

例子:I = imread('eight.tif');

J = imnoise(I,'salt & pepper',0.02);

%密度0.02的鹽椒噪聲

imshow(I)

figure, imshow(J)

圖像處理函數詳解——imhist

功能:顯示圖像的直方圖。

           輸入數據類型可以是無符號8位、16位、有符號16位、單精浮點、字符型、邏輯型等數據。

用法:

        imhist(I,n)  計算和顯示圖像I的直方圖,n爲指定的灰度級數目,默認爲256。如果I是二值圖像,那麼n僅有兩個值。

        imhist(X,map)  計算和顯示索引圖像x的直方圖,map爲調色板。

        [counts,x] = imhist(...)  返回直方圖數據向量counts或相應的色彩值向量x。

舉例:

        I=imread('rice.tif')

        imshow(I)

        figure,imhist(I)

圖像處理函數詳解——imfinfo

功能:獲取圖像文件的信息

用法:info = imfinfo(filename,fmt)

           info = imfinfo(filename)

參數fmt對應於圖像處理工具箱中所有支持的圖像文件格式(如'bmp','jpg'等等)

例子:info = imfinfo('canoe.tif')

info =

                     Filename:'canoe.tif'

                  FileModDate: '25-Oct-1996 22:10:39'

                     FileSize: 69708

                       Format: 'tif'

                FormatVersion: []

                        Width: 346

                       Height: 207

                     BitDepth: 8

                    ColorType: 'indexed'

              FormatSignature: [73 73 42 0]

                    ByteOrder: 'little-endian'

               NewSubfileType: 0

                BitsPerSample: 8

                  Compression: 'PackBits'

    PhotometricInterpretation: 'RGB Palette'

                 StripOffsets: [9x1  double]

              SamplesPerPixel: 1

                 RowsPerStrip: 23

              StripByteCounts: [9x1  double]

                  XResolution: 72

                  YResolution: 72

               ResolutionUnit: 'Inch'

                     Colormap: [256x3  double]

          PlanarConfiguration: 'Chunky'

                    TileWidth: []

                   TileLength: []

                  TileOffsets: []

               TileByteCounts: []

                  Orientation: 1

                    FillOrder: 1

             GrayResponseUnit: 0.0100

               MaxSampleValue: 255

               MinSampleValue: 0

                 Thresholding: 1

圖像處理函數詳解——imcomplement

功能:對圖像進行求反運算。

用法:IM2 = imcomplement(IM)

          計算圖像IM的負片。圖像IM可以是二值圖像、灰度圖像、或者RGB圖像。IM2和IM類型相同。

例子:

          X = uint8([ 255 10 75; 44 225 100]);

          X2 = imcomplement(X)

          X2 =

               0   245   180

             211    30   155

          bw = imread('text.png');

          bw2 = imcomplement(bw);

          subplot(1,2,1),imshow(bw)

          subplot(1,2,2),imshow(bw2)

          I = imread('glass.png');

          J = imcomplement(I);

          imshow(I), figure, imshow(J)

圖像處理函數詳解——imapprox

功能:減少索引圖像的色彩數,能夠指定新色圖的色彩數。即對索引圖像進行近似處理。

用法:[Y,newmap] = imapprox(X,map,n)

[Y,newmap] = imapprox(X,map,tol)

Y = imapprox(X,map,newmap)

[...] = imapprox(...,dither_option)

[Y,newmap] = imapprox(X,map,n)表示把索引圖像和色圖map進行最小值量化逼近。函數返回索引圖像和新的色圖newmap,色圖至多有n種色彩。

[Y,newmap] = imapprox(X,map,tol) 表示把索引圖像和色圖map進行均衡量化逼近。新色圖newmap至多有(floor(1/tol)+1)^3種色彩,tol的範圍必須爲[0,1.0]。

例子:[X, map] = imread('trees.tif');

 

[Y, newmap] = imapprox(X, map, 16);

 

imview(Y, newmap)

圖像處理函數詳解——imadjust

功能:

調節灰度圖像的亮度或彩色圖像的顏色矩陣。

用法:

       J = imadjust(I,[low_in; high_in],[low_out; high_out],gamma)

       將圖像I中的亮度值映射到J中的新值,即將low_in至hige_in之間的值映射到low_out至high_out之間的值。low_in以下與high_in以上的值被剪切掉了,也就是說,low_in以下的值映射到low_out,high_in以上的值映射到high_out。它們都可以使用空的矩陣[],默認值是[0 1]。

       newmap = imadjust(map,[low_in high_in],[low_out high_out],gamma)

       調整索引色圖像的調色板map。

       RGB2 = imadjust(RGB1,[low_in high_in],[low_out high_out],gamma)

       對RGB圖像1的紅、綠、藍調色板分別進行調整。隨着顏色矩陣的調整,每一個調色板都有唯一的映射值。

       參數gamma指定了曲線的形狀,該曲線用來映射I的亮度值。如果gamma小於1,映射被加權到更高的輸出值。如果gamma大於1,映射被加權到更低的輸出值。如果省略了函數的參量,則gamma默認爲1(線性映射)。

舉例:

       調整灰度圖像:K = imadjust(I,[0.3 0.7],[]);

                                figure, imshow(K)

       調整RGB圖像:RGB1 = imread('football.jpg');

                                RGB2 = imadjust(RGB1,[.2 .3 0; .6 .7 1],[]);

                                imshow(RGB1), figure, imshow(RGB2)

圖像處理函數詳解——imadd

功能:實現圖像相加運算。

用法:Z = imadd(X,Y)

例子:I = imread('rice.png');

J = imread('cameraman.tif');

K = imadd(I,J,'uint16');

%轉換數據類型,然後將圖像相加

imshow(K,[])

圖像處理函數詳解——im2uint8

功能:將圖像轉換爲8位無符號整型。也可將輸出值限定在[0 255]內。

用法:I2 = im2uint8(I)

           RGB2 = im2uint8(RGB)

           I = im2uint8(BW)

           X2 = im2uint8(X,'indexed')

舉例:I = reshape(uint8(linspace(0,255,255)),[5 5])

           I2 = im2uint8(I)

圖像處理函數詳解——im2bw

功能:通過設定亮度將閾值灰度、真彩、索引圖像轉換爲二值圖像。

用法:BW = im2bw(I,level)

BW = im2bw(X,map,level)

BW = im2bw(RGB,level)

分別將灰度圖像、索引圖像、真彩色圖像轉換爲二值圖像。

Level是歸一化的閾值,值域爲[0,1]。Level可以由函數graythresh(I)來計算。

例子:load trees

 

BW = im2bw(X,map,0.4);

 

imview(X,map),imview(BW)

圖像處理函數詳解——histeq

功能:直方圖均衡化。

用法:

       J = histeq(I,hgram)  將原始圖像I的直方圖變成用戶指定的向量hgram。hgram中的各元素的值域爲[0,1]。

       J = histeq(I,n)  指定直方圖均衡後的灰度級數n,默認值爲64。

       [J,T] = histeq(I,...)  返回從能將圖像I的灰度直方圖變換成圖像J的直方圖變換T。

       newmap = histeq(X,map,hgram)

       newmap = histeq(X,map)

       [newmap,T] = histeq(X,...)  

       這三個是針對索引圖像調色板的直方圖均衡化,用法和灰度圖像的一樣。

舉例:

       I = imread('tire.tif');

       J = histeq(I);

       imshow(I)

       figure, imshow(J)

圖像處理函數詳解——dither

功能:可以把真彩色圖像裝換成索引圖像或者把灰度圖像轉換爲二值圖像。

用法:X = dither(RGB,map)

BW = dither(I)

X = dither(RGB,map,Qm,Qe)

X = dither(RGB,map)表示把真彩色圖像RGB按指定的色圖map抖動成索引圖像X,但map不能超過65536種顏色。

BW = dither(I)

表示把灰度圖像I抖動成二值圖像BW

X = dither(RGB,map,Qm,Qe) Qm表示沿每個顏色軸反轉顏色圖的量化的位數,Qe表示顏色空間計算誤差的量化位數。如果Qe<Qm,則不進行抖動操作。默認值Qe=5,Qm=8

例子:I = imread('cameraman.tif');

BW = dither(I);

imview(BW)

圖像處理函數詳解——conv2

功能:是二維卷積運算函數(與convmtx2相似)。如果a和b是兩個離散變量n1和n2的函數,則關於a和b的二維卷積運算數學公式如下:

用法:C = conv2(A,B)

C = conv2(hcol,hrow,A)

C = conv2(...,'shape')

C = conv2(A,B)計算數組A和B的卷積。如果一個數組描述了一個二維FIR濾波器,則另一個數組被二維濾波。當A的大小爲[ma,na],B的大小爲[mb,nb]時,C的大小爲[ma+mb-1,mb+nb-1]。‘shape’見下表

 

參數值

 

含義

 

‘full’

 

默認值,返回全部二維卷積值。

 

‘same’

 

返回與A大小相同卷積值的中間部分

 

‘valid’

 

當all(size(A)>=size(B)),C的大小爲[ma+mb-1,mb+nb-1];否則,C返回[]。在n維卷積運算中,C的大小爲max(size(A)- size(B)+1,0)

 

例子:

 

s = [1 2 1; 0 0 0; -1 -2 -1];

 

A = zeros(10);

 

A(3:7,3:7) = ones(5);

 

H = conv2(A,s);

mesh(H)

圖像處理函數詳解——colfilt

功能:以列方法進行鄰域處理,也可執行常規非線性濾波(自己理解的)。

用法:B = colfilt(A,[m n],block_type,fun)

   該函數生成了一幅圖像A,在A中,每一列對應於其中心位於圖像內某個位置的鄰域所包圍的像素。然後將函數應用於該矩陣中。[m n]表示大小爲m行n列的鄰域。block_type表示了一個字符串,包括'distinct','sliding'兩種,其中'sliding'是在輸入圖像中逐個像素地滑動該m乘n的區域。fun表示引用了一個函數進行處理,函數返回值的大小必須和原圖像大小相同。

舉例:I = imread('tire.tif');

           imshow(I)

           I2 = uint8(colfilt(I,[5 5],'sliding',@mean));

           figure, imshow(I2)

圖像處理函數詳解——bwperim

功能:查找二值圖像的邊緣。

用法:BW2 = bwperim(BW1)

BW2 = bwperim(BW1,conn)

BW2 = bwperim(BW1,conn)表示從輸入圖像BW1中返回只包括對象邊緣像素點的圖像。

conn的定義值如下:

 

維數

 

 

參數值

 

 

說明

 

 

對二維

 

 

4

 

 

4鄰域

 

 

8

 

 

8鄰域

 

 

對三維

 

 

6

 

 

6鄰域

 

 

18

 

 

18鄰域

 

 

26

 

 

26鄰域

 

 

例子:

BW1 = imread('circbw.tif');

BW2 = bwperim(BW1,8);

imshow(BW1)

figure, imshow(BW2)

圖像處理函數詳解——bwlabel

功能:對連通對象進行標註,bwlabel主要對二維二值圖像中各個分離部分進行標註(多維用bwlabeln,用法類似)。

用法:L = bwlabel(BW,n)

[L,num] = bwlabel(BW,n)

L = bwlabel(BW,n)表示返回和BW相同大小的數組L。L中包含了連通對象的標註。參數n爲4或8,分別對應4鄰域和8鄰域,默認值爲8。

[L,num] = bwlabel(BW,n)返回連通數num

圖像處理函數詳解——bwareaopen

功能:用於從對象中移除小對象。

用法:BW2 = bwareaopen(BW,P)

BW2 = bwareaopen(BW,P,CONN)

BW2 = bwareaopen(BW,P,CONN)從二值圖像中移除所有小於P的連通對象。CONN對應鄰域方法,默認爲8。

例子:

originalBW = imread('text.png');

imview(originalBW)

bwAreaOpenBW = bwareaopen(originalBW,50);

imview(bwAreaOpenBW)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章