Мне нужно обработать первое «оригинальное» изображение, чтобы получить что-то похожее на второй «улучшенный». Я применил некоторые вычисления naif, и новое изображение имеет более контрастные и более сильные цвета, но в более высоких цветовых областях появляется цветное отверстие. Я понятия не имею о обработке изображений, было бы здорово, если бы вы предложили мне, какие концепции и/или алгоритмы я мог бы применить, чтобы получить результат без этой проблемы.Как улучшить цвет и контраст изображения
ответ
Преобразование изображения в HSB (Hue, Saturation, Brightness)
цветового пространства.
Умножьте насыщенность на некоторую величину. Используйте значение отсечки, если это требует платформа.
Примера в Mathematica:
satMult = 4; (*saturation multiplier *)
imgHSB = ColorConvert[Import["http://i.imgur.com/8XkxR.jpg"], "HSB"];
cs = ColorSeparate[imgHSB]; (* separate in H, S and B*)
newSat = Image[ImageData[cs[[2]]] * satMult]; (* cs[[2]] is the saturation*)
ColorCombine[{cs[[1]], newSat, cs[[3]]}, "HSB"]] (* rebuild the image *)
Таблица увеличение значения насыщенности:
"дыры", которые вы видите в обработанных изображениях являются темнее области исходного изображения, которые пошли на отрицательные значения с помощью вашего алгоритма затемнения. Я подозреваю, что эти значения вне диапазона записываются на новое изображение в виде положительных чисел, поэтому они попадают в верхнюю часть шкалы яркости. Например, предположим, что значение пикселя равно 10, и вы вычитаете 12 из всех пикселей, чтобы немного их затемнить. Этот пиксель будет переполняться и станет -2. Когда вы пишете его обратно в файл, -2 получает представление как 0xfe в шестнадцатеричном формате, а это 254, если вы принимаете его как неподписанное число.
Вы должны использовать алгоритм, который поддерживает значения пикселей в допустимом диапазоне или, по крайней мере, вы должны «закрепить» значения в допустимом диапазоне. Типичная функция зажима определяется как C макрос будет:
#define clamp(p) (p < 0 ? 0 : (p > 255 ? 255 : p))
Если добавить выше макрос к вашей функции обработки она будет заботиться о «дырах», но вместо этого теперь вы будете иметь темные цвета в тех местах, ,
Если вы готовы к чему-то более продвинутому, here on Wikipedia, у них есть формулы яркости и контраста, которые используются GIMP. Они будут делать довольно хорошую работу с вашим изображением, если вы выберете правильные коэффициенты.
Настоящая статья wikipedia хорошо объясняет выравнивание гистограммы для усиления контраста.
Код для черно-белых изображений:
unsigned char* EnhanceContrast(unsigned char* data, int width, int height)
{
int* cdf = (int*) calloc(256, sizeof(int));
for(int y = 0; y < height; y++) {
for(int x = 0; x < width; x++) {
int val = data[width*y + x];
cdf[val]++;
}
}
int cdf_min = cdf[0];
for(int i = 1; i < 256; i++) {
cdf[i] += cdf[i-1];
if(cdf[i] < cdf_min) {
cdf_min = cdf[i];
}
}
unsigned char* enhanced_data = (unsigned char*) malloc(width*height);
for(int y = 0; y < height; y++) {
for(int x = 0; x < width; x++) {
enhanced_data[width*y + x] = (int) round(cdf[data[width*y + x]] - cdf_min)*255.0/(width*height-cdf_min);
}
}
free(cdf);
return enhanced_data;
}
- 1. Я пытаюсь улучшить контраст изображения, используя следующий код
- 2. Установить контраст изображения в android
- 3. Как я могу улучшить контраст самозагрузки зебра полосатая таблицы
- 4. Как увеличить контраст изображения с opencv C++?
- 5. JMagick - Как изменить яркость и контраст?
- 6. Обработка изображений - Яркость и контраст
- 7. изменить контраст изображения в DM Scripting
- 8. TextView контраст на более светлом фоне изображения в Android
- 9. Как улучшить цвета и контрастность шумового изображения
- 10. Яркость и Контраст для холста изображения с JavaScript
- 11. Яркость и контраст в цветном изображении
- 12. Как улучшить качество изображения ReportLab?
- 13. Как улучшить качество изображения matplotlib?
- 14. Как улучшить производительность изображения DataGridView?
- 15. Как улучшить качество изображения CGLayer
- 16. Балансирующий контраст и яркость между сшитыми изображениями
- 17. Как увеличить/уменьшить контраст растрового изображения с помощью MFC?
- 18. Как использовать OpenGL Hue, Яркость, Контраст для изображения
- 19. Как сделать контраст курсора с фоном?
- 20. улучшить производительность приложения изображения
- 21. Как удалить контраст из recaptcha?
- 22. найти низкий контраст края
- 23. Как изменить цвет изображения
- 24. односторонний контраст гипотеза SAS
- 25. Обновить цвет изображения или цвет фона изображения
- 26. получить основной цвет изображения и отобразить этот цвет как блок
- 27. Как улучшить качество изображения для печати?
- 28. Как улучшить качество изображения Gnuplot html5?
- 29. Как улучшить качество изображения в pdf?
- 30. Как улучшить качество изображения uiimage? (слишком размытым)
Спасибо, that's точно как там происходит. Я буду смотреть на этот сайт в Википедии. – Daniel