2013-06-25 61 views
0

昨天我在這裏發現了這個問題: Histogram Normalization顏色直方圖標準化

但是,我嘗試使用一些想法,我得到了鏈接來執行圖像的規範化,我得到了以下結果。在這裏,我將所有像素標準化爲50%,黑白像素除外。 所用式I是:(pixel - min)/(max - min) * 127

pixel = (float)src.at<uchar>(j,i); 


if (pixel == 255) 
{ 
    img.at<uchar>(j,i) = pixel; 
} 

if (pixel == 0) 
{ 
    img.at<uchar>(j,i) = pixel; 
} 

/*if (min == 0 || max == 0 || (max - min == 0)) 
{ 
    img.at<uchar>(j,i) = pixel; 
} 
else 
{*/ 
    normal__ = ((pixel - min)/(max - min)) * (127); 
    img.at<uchar>(j,i) = normal__; 
//} 

} 

結果:正常化 之前

RED PIXEL: MIN = 0 MAX = 253 
GREEN PIXEL: MIN = 0 MAX = 254 
BLUE PIXEL: MIN = 0 MAX = 255 

圖片enter image description here

使用上述式歸一化後: enter image description here

現在,我CONFI如果我的步驟正確無誤謝謝.. :)

回答

0

由於報表

normal__ = ((pixel - min)/(max - min)) * (127); 
    img.at<uchar>(j,i) = normal__; 

不在一個if-else語句,它們就適用於黑色和白色像素了。那很好嗎?

+0

當我把它放在else語句中時,它會在某個區域獲得扭曲的像素。想知道爲什麼是這個 –

+0

我想這是因爲只留下0和255作爲黑色和白色的級別。產生的歸一化函數不平滑。並非汽車上的所有白色區域都是255像素級別。 您當前的歸一化函數將像素值範圍擴展到0-127範圍內,而圖像的正常範圍爲0-255。這就是爲什麼圖像更暗。規範化函數通常打算做相反的事情;如果像素處於較小範圍內,則它將在0-255之間分散這些值。您可以拍攝低對比度圖像,並使用255而不是127.這應該起作用。 – Totoro

+0

哦,我在那裏看到我的錯誤。對於圖像來說,如果對於每個通道R G B,我還會得到最小和最大像素值。如果min = 0和Max = 255,我將得到與輸入相同的通道。這是正常的嗎? –