2013-03-28 48 views
5

開發一個圖像皮膚檢測應用程序。使用Aforge.net或c#做一些類似於Photoshop的Auto Tone的東西,或者使用c#

但是我的相機有一個問題,那就是試圖補償光線,結果圖像不好,在大多數情況下,我對圖像有冷或暖的效果。 當我使用photoshop時,有一個AutoTone函數可以規範圖像並減少這個問題。

Image

Image after Photoshop AutoTone

隨着aforge我想用直方圖均衡化()過濾器,但結果是非常糟糕:

Image after HistogramEqualization

// create filter 
HistogramEqualization filter = new HistogramEqualization(); 
// process image 
filter.ApplyInPlace(sourceImage); 

所以我的問題是: 有是Accord或Aforge的一項功能,可以獲得相同的結果Photoshop的自動調整? 如果沒有,有一些圖書館或腳本可以做到這一點?

謝謝大家。

回答

3

我使用LevelsLinear過濾器和基於它的圖片統計:

ImageStatistics stats = new ImageStatistics(sourceImage); 
LevelsLinear levelsLinear = new LevelsLinear { 
    InRed = stats.Red.GetRange(0.90), 
    InGreen = stats.Green.GetRange(0.90), 
    InBlue = stats.Blue.GetRange(0.90) 
}; 

levelsLinear.ApplyInPlace(sourceImage); 

您可以用範圍內發揮調整的結果。

+0

哇,這個正常化是完美的! 非常感謝。 – Univers3

1

您可能不希望均衡直方圖,因爲正如您所看到的,通常不會有太多紅色的照片會產生大量紅色並使其看起來很髒。相反,你可能想要檢查幾乎無處不在的色調偏差。例如,您的原始照片可能在幾乎每個像素都偏向於藍色,因此可能不應該在那裏。尋找最低限度的偏見,並隨處取消。

更實際的解決方案是試用相機上的白平衡設置,以查看最佳結果。選擇正確的預設會利用一種算法,它可能與您手動編寫的算法一樣好。但是,也許你在做這個學習體驗。

+0

這是一個例子,但我的程序是爲攝像頭,沒有太多的設置。 我需要在c#中的東西。 – Univers3

相關問題