Как преобразовать цветовую шкалу MATLAB Lab в цветовую шкалу OpenCV Lab?

Я пытаюсь выбрать цвета в MATLAB, используя Приложение Color Thresholder, а затем используйте выходные данные L * a * b в OpenCV. Но, кажется, несоответствие масштаба. Ниже приведены шкалы L * a * b в MATLAB и OpenCV:

  1. MATLAB: 0 ‹= L ‹= 100; -100 ‹= а ‹= 100; и -100 ‹= б ‹= 100

Лабораторные весы MATLAB

  1. OpenCV: 0 ‹= L ‹= 100; -127 ‹= а ‹= 127; и -127 ‹= б ‹= 127

согласно этим двум источникам: Источник 1; и Источник 2

Похоже, нам нужны следующие диапазоны L * a * b для 8-битных изображений в OpenCV:

0 ‹= L ‹= 255; 0 ‹= а ‹= 255; и 0 ‹= б ‹= 255

Как мы конвертируем из MATLAB в цветовую шкалу OpenCV L * a * b для 8-битных изображений?


person Arun Kumar    schedule 14.10.2018    source источник


Ответы (1)


Matlab использует спецификации Международного консорциума по цвету для представления цвета в своем наборе инструментов для обработки изображений. Спецификация профилей ICC почти повсеместно используется для спецификации цвета и преобразования.

ICC Lab уточнила, что LAB используется для преобразования пространства профиля в различные разрешения. Для 8 бит используются беззнаковые 8 битные значения. L* отображается 0->0 и 100->255. Для a* и b* значения ограничены диапазоном от -128 до +127. Таким образом, фактическое кодирование добавляет 128 к a* и b*, чтобы получить беззнаковые значения от 0 до 255.

Представление этих и других битов большего размера можно найти в таблицах 12 и 13 в разделе 6.3.4.2 спецификации здесь:

http://color.org/specification/ICC1v43_2010-12.pdf

Большинство программ, таких как Photoshop, файлы Tiff и т. д., используют форматы ICC. Кроме того, функции Matlab включают в себя различные функции преобразования, такие как lab2uint8(lab), которые можно использовать для преобразования значений точки сглаживания Lab в их правильное представление в фиксированных размерах, таких как 8-битные целые числа без знака.

person doug    schedule 14.10.2018