2013-03-28 6 views
5

Im разрабатывает приложение для обнаружения изображения.Сделайте что-то похожее на Auto Tone of Photoshop с Aforge.net или C#

Но есть проблема с моей камерой, которая пытается компенсировать свет, а результат изображения плох, в большинстве случаев у меня холодный или теплый эффект на изображении. Когда я использую Photoshop, есть функция AutoTone, которая нормализует изображение и уменьшает эту проблему.

Image

Image after Photoshop AutoTone

С aforge я хочу использовать фильтр HistogramEqualization(), но результат очень плохо:

Image after HistogramEqualization

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

Так что мой вопрос: Там является функцией в Согласии или в Согласии, чтобы иметь тот же результат автотоном 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