日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数字图像处理——第三章 空间域图像增强(灰度变换和直方图处理)

發布時間:2025/4/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数字图像处理——第三章 空间域图像增强(灰度变换和直方图处理) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 空間域圖像增強
    • 1. 背景知識
    • 2. 基本灰度變換
      • 2.1 圖像反轉
      • 2.2 對數變換
      • 2.3 冪次變換
      • 2.4 分段線性變換函數
        • 2.4.1 對比拉伸
        • 2.4.2 灰度切割
        • 2.4.3 位圖切割
    • 3. 基本灰度變換函數
      • 3.1 函數imadjust和stretchlim
      • 3.2 函數im2uint8
    • 4. 直方圖處理
      • 4.1 生成并繪制圖像直方圖
      • 4.2 直方圖均衡化
        • 4.2.1 直方圖均衡
        • 4.2.2 histeq函數
      • 4.3 直方圖匹配(規定化)
      • 4.4 局部直方圖處理
    • 5. 總結

空間域圖像增強

圖像增強是圖像處理中最具吸引力的領域之一,增強處理的首要目標是處理圖像,對圖像進行加工,使其比原始圖像更適合特定的應用。空間域是指圖像平面本身,這類圖像處理方法直接操作圖像中的像素,其在計算上相比于頻率域變換更有效,且執行所需的處理資源較少。

空間域處理分為灰度變換和空間濾波兩種。灰度變換是對圖像的單個像素進行操作,主要以對比度和閾值處理為目的。空間濾波涉及改善性能的操作,如通過圖像中每個像素的鄰域處理來銳化圖像。

1. 背景知識

空間域處理可由下式定義:g(x, y) = T[f(x, y)]。(T是對f的一種操作,定義在(x, y)的鄰域,另外T能對輸入圖像集進行操作)。

鄰域通常是中心在(x, y)的矩形,有時也采用其他形狀,如圓的數字近似,但矩形鄰域是到目前為止最好的鄰域,因為它在計算機上實現起來更容易。

T操作最簡單的形式是鄰域為1×1的尺度(即單個像素),在這種情況下,g僅僅依賴于f在(x, y)點的值,T操作成為灰度級變換函數(也叫作強度映射),形式為:s = T( r)。其中s和r為所定義的變量,分別是g和f在任意點(x, y)的灰度值。

灰度變換是所有圖像處理技術中最簡單的技術。r和s分別表示處理前后的像素值,這些值與s = T( r)表達式的形式有關。其中T是把像素值r映射到像素值s的一種變換。

2. 基本灰度變換

2.1 圖像反轉

灰度級范圍為[0, L - 1]的圖像反轉可以由反比變換得到,表達式為:


用這種方式倒轉圖像的強度產生圖像反轉的對等圖像。這種處理尤其適用于增強嵌入于圖像暗色區域的白色或灰色細節,特別是當黑色面積占主導地位時。

2.2 對數變換

對數變換的通用形式為:


其中c是一個常數,并假設r ≥ 0。該變換將輸入中范圍較窄的低灰度值映射為輸出范圍中較寬的灰度值,或將輸入中范圍較寬的高灰度值映射為輸出范圍中較窄的灰度值。

我們使用這種類型的變換來擴展圖像中的暗像素值,同時壓縮更高灰度級的值。 反對數變換的作用與此相反。

注:如果原圖像的灰度級為L,對數變換公式的結果應當重新標定為[0, L - 1]的灰度級。

例如對于一幅256灰度級的原圖像,對數變換增強的結果可以用下式表示:


該公式說明了在對數變換曲線中隱含的步驟。

2.3 冪次變換

冪次變換的基本形式為:


其中c和γ為正常數。與對數函數情況類似,部分γ值的冪次曲線將較窄范圍的暗色輸入值映射為較寬范圍的輸出值,或將較寬范圍的高灰度級輸入值映射為較窄范圍的輸出值。

但對于不同的γ,曲線形式不同:
(1)當γ < 1時,其曲線形式和對數曲線相似。
(2)當γ > 1時,作用相反,高灰度區擴展,低灰度區壓縮。

2.4 分段線性變換函數

分段線性變換函數的主要優勢在于可以任意合成,但需要更多的用戶輸入。

2.4.1 對比拉伸

對比拉伸是最簡單的分段線性變換函數,用以提高圖像灰度級的動態范圍。

2.4.2 灰度切割

在圖像中提高特定灰度范圍的亮度通常是必要的,也被稱為灰度切割。

有許多方法可以進行灰度切割,但他們中的大多數是兩種基本方法的變形。其一是在所關心的范圍內為所有灰度指定一個較高值,而為其他灰度指定一個較低值。第二種方法使所需范圍的灰度變亮,但是仍保持了圖像的背景和灰度色調。

2.4.3 位圖切割

代替提高灰度范圍的亮度,而通過對特定比特提高亮度,對整幅圖像質量仍然是有貢獻的。

3. 基本灰度變換函數

3.1 函數imadjust和stretchlim

函數imadjust是一個基本的圖像處理工具箱函數,用于對灰度級圖像進行灰度變換,該函數的一般語法格式為:

g = imadjust(f, [low_in high_in], [low_out high_out], gamma)
該函數將圖像f中的灰度值映射為g中的新值。
  • 函數imadjust,除了f和gamma,其所有輸入值都被限定在0和1之間。
  • 若[low_in high_in]或[low_out high_out]使用[ ],則得到默認值[0 1]。
  • 若low_out大于high_out,那么輸出灰度將被反轉。
  • 若gamma值小于1,則映射被加權至較高的輸出;若gamma值大于1,則映射被加權至較低的輸出。
  • 若gamma缺省,則默認為1。

同時,我們用到函數stretchlim,能夠自動的使用imadjust而不必考慮高參數和低參數的問題,其基本語法如下:

Low_High = stretchlim(f)
其中Low_High是一個兩元素向量,用于實現對比度拉伸。默認情況下Low_High中的值指定灰度級,這些灰度級充滿f中底部和頂部1%的所有像素值。
具體使用實驗如下: >> f = imread('C:\Users\86158\Desktop\taiyuan.png'); >> g = rgb2gray(f); >> g1 = imadjust(g, [0 1], [1 0]); >> g2 = imadjust(g, [0.5 0.75], [0 1]); >> g3 = imadjust(g, [], [], 2); >> g4 = imadjust(g, stretchlim(g), []); >> g5 = imadjust(g, stretchlim(g), [1 0]);

我們得到了如下運行結果:

圖1 函數imadjust和stretchlim的實驗結果
如圖1-1所示,使用rgb2gray將一幅彩色圖像變換為我們實驗所需的灰度圖。
如圖1-2所示,使用imadjust將圖像灰度從[0 1]映射到了[1 0],實現了圖像的明暗反轉,得到負片圖像。盡管事實上與原圖相比兩幅圖在視覺內容上是一樣的,但是在負片圖像這種特殊情況下,我們觀察具體的細節結構要比原灰度圖容易的多。同樣的效果也可以使用工具箱函數imcomplement得到。
如圖1-3所示,使用imadjust將0.5到0.75之間的灰度擴展到整個[0 1]范圍,利用這種對比度拉伸方法可以強調感興趣的灰度區。
如圖1-4所示,對[low_in high_in]或[low_out high_out]使用[ ]、gamma指定為2來壓縮灰度級的低端擴展高端,將較亮的部分映射為更暗的輸出,得到與圖1-3類似的結果,但增加了許多灰度值。
如圖1-5所示,使用默認情況下的stretchlim函數,和原圖像相比對比度有所提升,可以觀察到一些細節。
如圖1-6所示,增強了負片圖像的對比度,得到了比負片效果更加明顯的細節效果。

3.2 函數im2uint8

在執行對數變換時,希望使得壓縮值出現在完整的顯示范圍內,可以使用im2uint8將會把值限定在[0, 1]范圍內的二值圖像轉變為限定值為[0, 255]內的uint8類。最簡單的方法是使用語句:

>> gs = im2uint8(mat2gray(s));
具體實驗如下:

圖2 函數im2uint8的實驗結果
如圖2所示,使用函數im2uint8對二值圖進行處理,命令為: >> s = imread('C:\Users\86158\Desktop\sample.jpg'); >> imshow(s); >> s2 = im2uint8(mat2gray(log(1 + double(s)))); >> imshow(s2);

通過兩張圖對比可以發現,圖像將較窄的范圍映射到了較寬的范圍,視覺效果得到很大提升,能夠觀察到許多原圖像丟失的細節。

4. 直方圖處理

直方圖是多種空間域處理技術的基礎。
灰度級為[0, L - 1]范圍的數字圖像的直方圖是離散函數h(rk) = nk,這里rk是第k級灰度,nk是圖像中灰度級為rk的像素個數。經常以圖像中像素的總數(用n表示)來除它的每一個值得到歸一化的直方圖。因此,一個歸一化的直方圖由P(rk)=nk/n給出,這里k=0, 1, …, L - 1。 簡單的說,P(rk)給出了灰度級為rk發生的概率估計值。
歸一化直方圖所有分量之和應等于1。

灰度直方圖具有如下特征:

  • 直方圖僅能描述圖像中每個灰度級具有的像素個數,不能表示圖像中每個像素的位置信息;
  • 任一特定的圖像都有唯一的直方圖,不同的圖像可以具有相同的直方圖;
  • 如果一幅圖像由兩個不連接的區域組成,則整幅圖像的直方圖等于兩個不連接的區域的直方圖之和;
  • 直方圖的形態與正態分布的曲線形態類似。

4.1 生成并繪制圖像直方圖

MATLAB工具箱中有一個處理圖像直方圖的核心函數imhist,其基本語法是:

h = imhist(f, b)

其中,f為輸入圖像,h為其直方圖,b是用來形成直方圖的“容器”數目(若b未包含在此參量中,則其默認值為256)。一個“容器”僅是灰度范圍的一小部分。

例如,如果正在處理一幅uint8類的圖像且令b=2,則灰度范圍被分成兩部分:0至127和128至255。所得的直方圖將有兩個值:h(1),等于圖像中其值在區間[0, 127]內的像素數;h(2),等于圖像中其值在區間[128, 255]內的像素數。使用如下表達式,可以得到歸一化直方圖:

p = imhist(f, b) / numel(f)
如下圖為利用沒有規定輸出的函數imhist繪制的直方圖,其語句為: imhist(g);

圖3 在工具箱利用默認值得出的直方圖

然而,繪制直方圖還有許多其他方法,如bar,stem和plot等。

使用函數:bar(horz, z, width)可將直方圖利用條形圖來繪制。其中z是一個包含將被繪制的點的行向量;horz是一個與z同維數的向量,它包含了水平刻度的增量;width是一個介于0和1之間的數。換句話說:horz的值給出了水平增量,而z的值是相應的垂直值。若horz被省略,水平軸會從0至length(z)等分為若干單位。當width的值為1時,豎條較明顯;當width的值為0時,豎條是垂直線。width的默認值為0.8。

繪制條形圖時,通常會通過將水平軸等分位幾段來降低其分辨率。使用bar函數的語句及效果圖如下:

>> h = imhist(g, 25); >> horz = linspace(0, 255, 25); >> bar(horz, h);

圖4 利用bar函數繪制的條形圖

通過觀察對比可以看出,條形圖的垂直刻度跨越了更寬的范圍,因為每個條形圖的高度是由一個范圍的所有像素決定的,而不是由單一值的所有像素決定的。

桿狀圖與條形圖相似,其基本語法為:stem(horz, z, ‘LineSpec’, ‘fill’)。其中z是一個包含了將被繪制的點的行向量,horz與函數bar中的說明相同,參量LineSpec來自一個三值組。詳細的參數表格見《數字圖像處理(MATLAB版)》P35。fill為標記點用三值組中的第一個元素指定的顏色來填充。使用stem函數的語句及效果圖如下:

>> h = imhist(g, 25); >> horz = linspace(0, 255, 255); >> stem(horz, h, 'fill')

圖5 利用stem函數繪制的桿狀圖

函數plot是將一組點用直線連接起來,其語法為:plot(horz, z, ‘LineSpec’)。其中各參數的定義同桿狀圖。利用函數plot繪制直方圖的語法及圖像如下圖所示:

>> h = imhist(g, 25); >> plot(h)

圖6 利用plot函數繪制的直方圖

使用stem函數和plot函數的明顯區別在于:stem繪制的是離散圖像,而plot繪制的是連續圖像。函數plot經常用語顯示變換函數。

4.2 直方圖均衡化

4.2.1 直方圖均衡

直方圖均衡化:通過原始圖像灰度的非線性變換,使其直方圖變成均勻分布,以增加圖像灰度值的動態范圍,從而達到增強圖像整體對比度、使圖像變清晰的效果。

直方圖均衡化的目的:尋找變換函數,該函數產生有均勻直方圖的輸出圖像。也就是得到一幅灰度級豐富且動態范圍大的圖像。該函數僅僅依靠輸入圖像直方圖中的信息就可以自動達到這一效果。

直方圖均衡化的特點:

  • 圖像均衡化處理后,圖像的直方圖是平直的,即各灰度級具有相同的出現頻數,那么由于灰度級具有均勻的概率分布,圖像看起來就更清晰了。
  • 直方圖均衡化實質上是減少圖像的灰度級以換取對比度的加大。
  • 在均衡過程中,原來的直方圖上頻數較小的灰度級被歸入很少幾個或一個灰度級內,故得不到增強。
  • 若這些灰度級所構成的圖像細節比較重要,則需要采用局部區域直方圖均衡。
  • 考慮連續函數并且讓變量r代表待增強圖像的灰度級。假設r被歸一化到區間[0, L - 1],且r=0表示黑色及r=L - 1表示白色。對于任一滿足上述條件的r,我們將注意力集中在變換形式上:

    s = T(s) 0 ≤ r ≤ L - 1 假設變換函數T(r)滿足以下條件:
  • T( r)在區間0 ≤ r ≤ L - 1中為單值且單調遞增
  • 當0 ≤ r ≤ L - 1時,0 ≤ T( r) ≤ L - 1
  • 滿足這些條件是為了保證原始圖像不會變性,保持原始圖像灰度級高的地方仍然高,低的仍然低;同時輸出圖像灰度值的變化范圍與原始圖像的灰度值變化范圍是一樣的。

    那么現在的問題就是求函數T,使結果圖像的直方圖均勻分布。一幅圖像的灰度級可視為區間[0, L - 1]內的隨機變量。隨機變量的基本描繪是其概率密度函數。令Pr( r)和Ps(s)分別表示隨機變量r和s的概率密度函數。由基本概率論得到的基本結果是,若Pr( r)和T( r)已知,且在感興趣的值域上T( r)是連續且可微的,則變換(映射)后的變量s的PDF可由下式得到:

    這樣,輸出灰度變量s的PDF就由輸入灰度的PDF和所用的變換函數決定。在圖像處理中,就使用如下的變換函數得到想要的函數T。

    對于離散值,處理概率與和,而不是概率密度與積分。一幅圖像中的灰度級rk出現的概率近似為:

    其中MN為圖像的總像素,nk為灰度為rk的像素個數,由此可以得到變換的離散形式為:

    需要注意的是:上式中的rk和sk都是歸一化后的值,并且在實際的應用中,輸入和輸出的數字圖像的灰度級應該是一致的,如對一幅256個灰度級的數字圖像進行直方圖均衡,結果圖像應該也是256灰度級的。

    這樣,已處理的圖像將輸入圖像中灰度為rk的各像素映射到輸出圖像中灰度級為sk的對應像素。在這個公式中,變換T(rk)稱為直方圖均衡或直方圖線性變換。

    與連續形式不同,一般不能證明離散變換能產生均勻概率密度函數的離散值。
    直方圖均衡化具有完全“自動化”的特點。可以直接使用從已知圖像提取的信息,而不需要更多的參數說明。
    計算簡單性也是直方圖均衡化的一個優點。

    4.2.2 histeq函數

    直方圖均衡由工具箱中的函數histeq實現,其語法為:g = histeq(f, nlev)
    其中f為輸入圖像,nlev是為輸出圖像設定的灰度級數,與imhist不同,默認值為64。

    • 若nlev與L(輸入圖像中可能的灰度級總數)相等,則histeq直接執行變換函數。
    • 若nlev小于L,則histeq試圖分配灰度級,以便得到近似平坦的直方圖。

    在很大程度上,將nlev賦值為灰度級最大可能數量(通常為256),因為這樣能夠利用直方圖均衡方法得到較為正確的直方圖結果。

    使用函數histeq完成直方圖均衡化,語句如下:

    >>imshow(f) >>figure, imhist(f) >>g = histeq(f, 256) >>figure, imshow(g) >>figure, imhist(g)

    得到的結果如下圖所示:

    圖7 直方圖均衡化實例

    從上圖中可以看出,直方圖均衡化后,在平均灰度及對比度方面的改進是非常明顯的。對比度增加源于直方圖在整個灰度級上的顯著擴展。灰度級增加源于均衡化后的圖像直方圖中灰度級的平均值高于原始值,雖然并不能生成一個平坦的直方圖,但它具有能增加圖像灰度級的動態范圍的特性。

    4.3 直方圖匹配(規定化)

    直方圖均衡生成了自適應的變換函數,從這個意義上說,它是以給定圖像的直方圖為基礎的。然而一旦對一幅圖像的變換函數計算完畢,它將不再改變,除非直方圖有改變。但這種方法在某些應用上并不是最好的方法。特別是,能夠規定處理后的圖像的直方圖形狀在某些應用中十分有用。這種生成特定直方圖的圖像的方法,稱為直方圖匹配或直方圖規定化。

    實現直方圖匹配的工具箱函數histeq的語法如下:g = histeq(f, hspec)。
    其中f為輸入圖像,hspec為規定的直方圖(一個規定值的行向量),g為輸出圖像,輸出圖像的直方圖近似于指定的直方圖hspec。該向量包含有對應于等分容器的整數計數值。histeq的特性是當length比圖像f中的灰度級數小很多時,圖像g的直方圖通常會較好的匹配hspec。

    在使用了直方圖規定化后,會保持原有直方圖的基本形狀,但會出現更平滑的過渡。在使用直方圖均衡化得到的結果的基礎上,直方圖規定化圖像的改進會使圖像外觀得到明顯改進,是一種直接的處理。然而,一般來說,并沒有規定直方圖的規則,對于任何給定的增強任務,都要借助于實際分析。

    4.4 局部直方圖處理

    有時對圖像小區域細節的局部增強也可以使用直方圖處理。局部增強的解決方法就是在圖像中每一個像素的鄰域中,根據灰度級分布(或其他特性)設變換函數。

    直方圖處理技術很容易適應局部增強,該過程定義一個方形或矩形的鄰域并把該區域的中心從一個像素移至另一個像素,在每一個位置的鄰域中該點的直方圖都要被計算,并且得到的不是直方圖均衡化就是規定化的變換函數。這個函數最終被用來映射鄰域中心像素的灰度。

    5. 總結

    灰度變換和直方圖處理都是對圖像像素進行處理,來達到處理對比度和圖像閾值,最終實現圖像增強的目的。在使用灰度變換時,當我們需要增強嵌入圖像的暗色區域中的白色或灰色區域,即黑色部分占主導的圖像時,選用圖像反轉;若圖像像素值的動態范圍較大,使用對數變換完成對圖像灰度級的擴展和壓縮;若我們考慮的實際實現需要分段函數來表達,那就需要選擇分段線性變換函數來實現圖像的增強。

    作為灰度變換的直方圖處理,描述了圖像中灰度分布情況,能夠很直觀的展示出圖像中各個灰度級所占的多少。假如圖像的灰度分布不均勻,其灰度分布集中在較窄的范圍內,使圖像的細節不夠清晰,對比度較低。通常采用直方圖均衡化及直方圖規定化兩種變換,使圖像的灰度范圍拉開或使灰度均勻分布,從而增大反差,使圖像細節清晰,以達到增強的目的。

    直方圖均衡化,對圖像進行非線性拉伸,重新分配圖像的灰度值,使一定范圍內圖像的灰度值大致相等。這樣,原來直方圖中間的峰值部分對比度得到增強,而兩側的谷底部分對比度降低,輸出圖像的直方圖是一個較為平坦的直方圖。直方圖的均衡化實際也是一種灰度的變換過程,將當前的灰度分布通過一個變換函數,變換為范圍更寬、灰度分布更均勻的圖像,也就是將原圖像的直方圖修改為在整個灰度區間內大致均勻分布。因此擴大了圖像的動態范圍,增強圖像的對比度。通常均衡化選擇的變換函數是灰度的累積概率。

    直方圖的均衡化自動的確定了變換函數,可以很方便的得到變換后的圖像,但是在有些應用中這種自動的增強并不是最好的方法。有時候,需要圖像具有某一特定的直方圖形狀(也就是灰度分布),而不是均勻分布的直方圖,這時候可以使用直方圖規定化。

    直方圖規定化,也叫做直方圖匹配,用于將圖像變換為某一特定的灰度分布,也就是其目的的灰度直方圖是已知的。這其實和均衡化很類似,均衡化后的灰度直方圖也是已知的,是一個均勻分布的直方圖;而規定化后的直方圖可以隨意的指定,也就是在執行規定化操作時,首先要知道變換后的灰度直方圖,這樣才能確定變換函數。規定化操作能夠有目的的增強某個灰度區間,相比于,均衡化操作,規定化多了一個輸入,但是其變換后的結果也更靈活。

    總結

    以上是生活随笔為你收集整理的数字图像处理——第三章 空间域图像增强(灰度变换和直方图处理)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。