Как я могу изменить контраст изображения с помощью OpenCV? - PullRequest
2 голосов
/ 30 декабря 2011

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

Я использую EmguCV, если это уместно.

Ответы [ 3 ]

5 голосов
/ 31 декабря 2011

Если вы используете OpenCV, вам не нужно будет напрямую извлекать гистограмму из изображения.

Если вы хотите отрегулировать контрастность изображения путем выравнивания гистограммы, OpenCV имеет equalizeHist *Функция 1004 *.

Обратите внимание, что выравнивание гистограммы не всегда то, что вы хотите, когда настраиваете контраст изображения.Если вы хотите выполнить контрастное растяжение (очень простой, но эффективный алгоритм), вам нужно только найти минимальный и максимальный уровень серого (значение в пикселях) изображения и применить следующую точечную операцию к каждому пикселю изображения:

newValue = 255 * (oldValue - minValue)/(maxValue - minValue)

Я предполагаю, что каждый пиксель принимает значения в диапазоне 0-255.Кроме того, minValue и maxValue соответствуют минимальному и максимальному значениям уровня серого во входном изображении.

2 голосов
/ 30 декабря 2011

Контрастность - это немного неточный термин при обработке изображений, но обычно вы делаете это, растягивая / сжимая гистограмму

1 голос
/ 30 декабря 2011

Как сказал Мартин, вы хотите изменить изображение, управляя распределением серого и соответственно значений цвета. Общее решение - это кривые, которые вы применяете к гистограмме, вы можете поиграть с такими кривыми в Gimp. Для примеров того, как применить базовые функции обработки изображений и управления гистограммой с OpenCV, вы можете взглянуть на манго

...