2011-02-12 28 views
3

Что является самым простым способом для правильно настроить яркость, контрастность и гамму изображения. Слово «правильно» здесь, потому что я знаю, как выполнить эти настройки ненадлежащие: цикл по всем пикселям RGB и выполните следующие действия для каждого канала:Яркость, контрастность, регулировка гаммы с C++, Qt

int changeBrightness(int value, int brightness) { 
    return qBound<int>(0, value + brightness * 255/100, 255); 
} 
int changeContrast(int value, int contrast) { 
    return qBound<int>(0, int((value - 127) * contrast/100) + 127, 255); 
} 
int changeGamma(int value, int gamma) { 
    return qBound<int>(0, int(pow(value/255.0, 100.0/gamma) * 255), 255); 
} 

Хотя этот код добавит эффект яркость/conrast/гамма-изменение, это выглядит не очень хорошо. Профессиональное программное обеспечение для обработки изображений, например Photoshop, намного лучше.

Какая библиотека лучше всего подходит для такого рода вещей? Я знаю, что есть ImageMagick, но это действительно тяжело, я не хочу ссылаться только на одну особенность сотен. Есть ли легкие альтернативы?

+2

Photoshop может очень хорошо быть что-то делать в дополнение к только основные настройки BRI/CON/гамма, если он не дает те же результаты, как вашей реализации. Я голосовал за OpenCV. –

+0

ImageMagick показывает похожие результаты в Photoshop. Я думаю, что они оба используют правильную технику. Я уверен, что это не ракетная хирургия, но все еще довольно сложная. –

ответ

2

определенно OpenCV

+0

Я действительно искал что-то легкое, выбирая между OpenCV и ImageMagick, я поеду за последним. Кроме того, ссылка на api, которая будет выполнять вышеупомянутые корректировки, поможет –

+0

. Я думаю, что 9 строк, которые вы опубликовали, значительно легче, чем любое другое решение, которое вы могли бы придумать. Что «неправильно» писать самостоятельно? – Luke

+0

Как я уже упоминал - это кажется мне неправильным, потому что та же операция, выполненная в изображениях photoshop yeild с гораздо лучшим качеством. –

Смежные вопросы