OpenCV более низкие значения цвета - PullRequest
2 голосов
/ 04 августа 2011

Мне было интересно, есть ли способ понизить цветовую схему изображения. Допустим, у меня есть изображение с 32-битным цветовым диапазоном в RGB. Мне было интересно, можно ли уменьшить его до 8-битной цветовой схемы. Это будет похоже на фильтр «мультфильмов» в таких приложениях, как фотошоп, или если вы измените цветовое пространство экрана с 32-битного истинного цвета на 256 цветов.

Спасибо

Ответы [ 3 ]

0 голосов
/ 04 августа 2011

Если вы хотите наиболее реалистичный результат, взгляните на квантование цвета .По сути, найдите блоки пикселей с аналогичным цветом RGB и замените их одним цветом. Вы пытаетесь свести к минимуму количество изменяемых пикселей, а также то, что каждый новый пиксель отличается от своего исходного цвета, поэтому это проблема параметризации пространства.

0 голосов
/ 04 августа 2011

Вы пробовали пример программы пирамидального фильтра среднего смещения, приведенной в примерах с OpenCV? Упоминание о «мультипликационном» фильтре напомнило мне об этом - цвета сглажены, а тонкие оттенки слиты и уменьшены, что приводит к уменьшению количества присутствующих цветов.

Сокращение основано на пороговом значении, и некоторые эксперименты, несомненно, должны дать удовлетворительные результаты.

0 голосов
/ 04 августа 2011

Ну, вы могли бы сделать convertTo(newimg, CV_8U), чтобы преобразовать его в 8-битный, но это все еще 16 миллионов цветов. Если изображение имеет целочисленные значения пикселей, вы также можете сделать val = val / reductionFactor * reductionFactor + reductionFactor / 2 (или некоторую их оптимизацию) для значений R, G и B каждого пикселя для произвольных коэффициентов уменьшения или val = val & mask + reductionFactor >> 1 для коэффициентов уменьшения, которые являются степенью двойки.

...