matlab中彩色影象通過rgb影象來表示。rgb影象中的rgb分別表示紅、綠、藍三種顏色。可以將rgb影象看成乙個m×n×3的三維矩陣,其中m、n分別表示影象的高和寬。若一幅rgb影象的型別為double型,它的取值範圍是[0,1];若型別為uint8,它的取值範圍是[0,255]。
matlab中提取rgb影象不同顏色分量的**:
>>fr = rgb_image(:,:,1);
>>fg = rgb_image(:,:,2);
>>fb = rgb_image(:,:,3);
如果在matlab中將rgb影象其中乙個顏色的分量單獨作為一幅m×n的影象來顯示,得到的影象會是怎樣的呢?例如將紅色分量作為一幅影象,結果會不會是一幅「紅色的影象」呢?答案是:不會。顯示的影象是一幅類似黑白**的影象。
當一幅rgb影象每乙個點的三個彩色分量的值都相等,即r=g=b。我們就可以用其中一維來表示這個,因為三個分量都相等。這乙個過程就叫做「灰度化」,灰度化以後得到的矩陣會從3維降至2維,這張看起來也是黑白的。
常用的灰度化方法有分量法、最大值法、均值法、加權平均法。在此著重介紹加權平均法。由於人眼對綠色的敏感最高,對藍色敏感最低,因此,按下式對rgb三分量進行加權平均能得到較合理的灰度影象。
加權平均法的表示式:f(i,j)=0.2989r(i,j)+0.5870g(i,j)+0.1140b(i,j)
。matlab提供了rgb2gray()函式進行了灰度化,其原理就是加權平均法。
subplot(1,2,1);imshow(rgbimage);title('rgb影象');
subplot(1,2,2);imshow(grayimage);title('灰度影象');
rgb灰度變換是一種「空間域」的操作,即直接對影象進行具體的操作。灰度變換的作用就是讓看起來更加清晰,為二值化和邊緣檢測等操作打下基礎。
rgb影象經過灰度化以後得到m×n灰度影象。可以將其看成乙個定義域離散的二元函式f(i,j),其中i,j分別是m、n之間的正整數;f(i,j)表示灰度值,影象型別不同值域不同。大家可以想象有很多長短不同的牙籤緊密插在泡沫塑料板的樣子,大概影象如下圖。
如果用數學式子表示,即為:g(i,j) = t[f(i,j)]
;其中g(i,j)是處理後的影象;f(i,j)是處理前的影象;t[ ]是處理手段,這些手段是各種各樣的,可以根據需要進行調整。例如,如果您覺得某個區域內的「牙籤」太長,可以對其進行「修剪」,於是這個區域的灰度值減少了。或者您覺得某個區域「牙籤」長短的差距不明顯,其實可通過讓長的「牙籤」變更長,短的「牙籤」變更短的思路實現差距明顯化。
如前文提及,灰度變換的本質就是對影象的灰度值進行修改。雖然我們可以逐個逐個畫素點進行修改,但是工作量很龐大。以下將介紹一種典型的思路。
我們知道t[ ]是變換的手段,如果我們想讓中亮的更亮,暗的更暗,可以將原影象通過乙個對映關係得到處理後的影象。這個對映關係就是t[ ]。
matlab當中常用的灰度變換函式是imadjust(i,[low_in; high_in],[low_out; high_out],gamma)。這個函式的具體引數就不作具體說明了。它的對映關係如下圖所示:
gamma的取值不同,曲線的陡峭程度也不同。
以圖(c)的曲線為例子進行說明,上圖的橫座標為原影象的灰度值,縱座標為輸出影象的灰度值,假設定義域和值域均為[0,255]。
上圖是一張需要進行灰度變換的灰度圖。先從左上角第乙個畫素開始,該畫素的灰度值為254。對該畫素進行圖(c)所示的對映,可得254經過變換後得到的值為255。然後下乙個畫素的灰度值為143,對其進行對映,得到的值是乙個比143要少的數。該點實際上變暗了。當gamma小於1的時候,進行的處理就是將原影象變暗。
j1 = imadjust(grayimage,[0 1],[0 1],2.5);
j2 = imadjust(grayimage,[0 1],[0 1],1.5);
j3 = imadjust(grayimage,[0 1],[0 1],0.67);
j4 = imadjust(grayimage,[0 1],[0 1],0.4);
subplot(1,5,1);imshow(j1);title('gamma=2.5');
subplot(1,5,2);imshow(j2);title('gamma=1.5');
subplot(1,5,3);imshow(grayimage);title('原灰度影象');
subplot(1,5,4);imshow(j3);title('gamma=0.67');
subplot(1,5,5);imshow(j4);title('gamma=0.4');
我們還可以根據自己的需要,將灰度變換曲線定義為如下幾種關係。所以說,變換的手段是各種各樣的。
灰度直方圖是統計灰度分布的影象,其橫座標是灰度值,縱座標是該灰度值的數量。imhist()函式能繪製灰度直方圖。
subplot(1,2,1);imshow(grayimage);title('原灰度影象');
subplot(1,2,2);imhist(grayimage);title('灰度直方圖');
將原灰度直方圖和gamma=0.4的灰度直方圖進行對比,變換後灰度值較大的畫素數量變多,灰度值較小的畫素數量變少,影象整體呈現變亮。
灰度變換函式
low in high in low out,high out 預設 0 1 gamma預設 1 當gamma 1,對映曲線如圖,將低灰度 對映到 高灰度,呈現效果就是變白 當gamma 1,對映曲線如圖,影象是線性,呈現效果就是沒變 等值對映,否則有變化,得到灰度值擴大或者縮小 當gamma 1,...
灰度變換(上)
正文 空間域增強是指增強構成影象的畫素 影象增強是要突出影象中的某些資訊,同時削弱或去除某些不需要資訊的一種處理方法,以得到對具體應用來說視覺效果更 好 或更 有用 的影象的技術。影象在傳輸或者處理過程中會引入雜訊或使影象變模糊,從而降低了影象質量,甚至淹沒了特徵,給分析帶來了困難。點處理 影象灰度...
基本的灰度變換
最近在學習數字影象處理,更新一些基礎知識,並使用opencv和c 做復現。基本的灰度變化就是對影象畫素點做運算,使其滿足我們的需求。幾種基本的灰度變換,畫素點對應情況如下圖所示 1 影象反轉 若原影象灰度量級 0 l 1 則現影象每個畫素點灰度為x,變化後為l 1 x。總體變換效果就是暗的變亮,量的...