直方圖均衡化會造成灰度級的合並【偽輪廓】


  均衡化處理后的圖象只能是近似均勻分布。均衡化圖象的動態范圍擴大了,但其本質是擴大了量化間隔,而量化級別反而減少了

  因此,原來灰度不同的象素經處理后可能變的相同,形成了一片的相同灰度的區域,各區域之間有明顯的邊界,從而出現了偽輪廓

  如果原始圖像對比度本來就很高,如果再均衡化則灰度調和,對比度降低。在泛白緩和的圖像中,均衡化會合並一些象素灰度,從而增大對比度。均衡化后的圖片如果再對其均衡化,則圖像不會有任何變化。

  灰度直方圖均衡化的算法,簡單地說,就是把直方圖的每個灰度級進行歸一化處理,求每種灰度的累積分布,得到一個映射的灰度映射表,然后根據相應的灰度值來修正原圖中的每個像素。

經典的直方圖均衡化算法可能存在以下一些不足:

  1. 輸出圖像的實際灰度變化范圍很難達到圖像格式所允許的最大灰度變化范圍。          
  2. 輸出圖像的灰度分布直方圖雖然接近均勻分布, 但其值與理想值1/n仍有可能存在較大的差異, 並非是最佳值。          
  3. 輸出圖像的灰度級有可能被過多地合並。由於灰度的吞噬也易造成圖像信息的丟失。         

 直方圖均衡化的機理,是將對應像素較少的幾個連續灰度級合並成一個灰度級,通過減少灰度級來實現的均衡化。對於離散灰度級的圖像,不可能做到完全的均衡,我們得到的結果只是一個大致的均衡。

〈=s〈=1。則前后之間存在如下轉換關系:

                  s(k) = T(r(k))

    T(r)為一個單調遞增函數,它的獲得可由下面的公式給出:

                  T(r(k)) = ∑pr(r(j)) , j=0:k

                  pr(r(k)) = n(r(k))/n ,表示每一個灰度值出現的概率

                  n = ∑n(rj) , j=0:L-1 ,圖像總像素值

    計算s(k) = T(r(k),就得到了r(k)~s(k)的映射關系。尋找待處理圖像的灰度值全部轉換成相應灰度值,便完成了直方圖的均衡化操作。

    如某圖像有像素分布:

  • 原灰度級r(k)    : 0      0.1    0.2    0.3    0.4    0.5    0.6    0.7    0.8    0.9     1
  • 像素數n(r(k))   : 15     2      10     11     6      3      9      12     23     8       1
  • 灰度概率pr(r(k)): 0.15   0.02   0.1    0.11   0.06   0.03   0.09   0.12   0.23   0.08   0.01
  • 轉換函數T(r(k)) :  0.15   0.17   0.27   0.38   0.44   0.47   0.56   0.68   0.91   0.99    1
  • 現灰度s(k)      : 0.2    0.2    0.3    0.4    0.4    0.5    0.6    0.7    0.9    1       1

    由此,得到轉換關系為

[轉載]直方圖均衡化

灰度值0、0.1都寫成0.2,概率0.17;合並了

灰度級0.2寫成0.3,概率0.1;

灰度值0.3、0.4都寫成0.4,概率0.17;合並了

灰度級0.5寫成0.5,概率0.03;

灰度值0.6寫成0.6,概率0.09;

灰度級0.7寫成0.7,概率0.12;

灰度值0.8寫成0.9,概率0.23;

灰度級0.9、1寫成1,概率0.09;合並了

matlab實現:
im = imread('image/dipum_images_ch03/Fig0308(a)(pollen).tif');
[m,n] = size(im);
L = 256;   %灰度級L=256
pixel = zeros(1,L);  %
for i=1:L
    temp = find( im==(i-1) );
    len = size(temp);
    pixel(i) = len(1)/(m*n);
end
T = linspace(0,L-1,L);
temp = 0;
for i=1:L
    temp = temp + pixel(i);
    T(i) = temp;
end
s = uint8(T * L);
newim = im;
for i =1:L
    newim(find(im == (i-1))) = s(i);
end
newpixel = zeros(1,L);
for i=1:L
    temp = size( find( newim==(i-1) ) );
    newpixel(i) = temp(1) /(m*n);
end
subplot(2,2,1);imshow(im);
subplot(2,2,2);bar(0:L-1,pixel);
subplot(2,2,3);imshow(newim);
subplot(2,2,4);bar(0:L-1,newpixel);

效果圖:


[轉載]直方圖均衡化

 [轉載]直方圖均衡化_what_lei_新浪博客 http://blog.sina.com.cn/s/blog_14bd3d4230102vlo0.html


全景可視化輔助泊車系統研究 - 豆丁網 http://www.docin.com/p-1007391317-f4.html

 


[精品]一種改進的直方圖均衡化 - 其它資料 - 道客巴巴 http://www.doc88.com/p-3042245231576.html

 


 

解決:

1、動態均衡化和分段直方圖均衡無法解決!

2、局部對比度增強技術

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM