Как рассчитать цветность / интенсивность цвета в изображении?

Я хотел бы вычислить метрику, которая дает мне значение, которое должно быть выше, если данный цвет является светлым (например, светло-красный) или низким, если этот же цвет является темным (темно-красный). Эта метрика должна быть инвариантом освещения света. Конечно, я считаю, что полное сопротивление освещению невозможно, однако оно должно быть как-то устойчивым к нему.

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

  1. Цветовое пространство LAB: сегмент A* канала основан на положительных значениях, поскольку канал A простирается от -128 (синий) до +128 (красный). Итак, я предполагаю, что я получил сегментированные красные области / пиксели, и теперь мне интересно знать интенсивность каждого из красных пикселей (другими словами, я хотел бы иметь карту интенсивности красного цвета).

    Для количественного определения красных пикселей первое, что можно сделать, - это использовать сам канал сегмента A* и посмотреть на значения A*, означающие, что более низкие положительные значения пикселей A* должны быть темно-красными, в то время как более высокие положительные значения пикселей A* должны быть светло-красными., Однако существует проблема, заключающаяся в том, что если я сравниваю значения A* красных пикселей в изображении, то эти значения на самом деле не соответствуют воспринимаемому красному цвету исходного изображения, а также, вторая проблема заключается в том, что я не могу сравнить два изображения с разными уровни покраснения, так как значения неправильно нормированы или не соответствуют.

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

  2. Цветовое пространство HSV: сегментирует канал оттенка, основываясь на значениях между 10 и 350 градусами, поскольку он представляет красный цвет. И затем посмотрите на соответствующие значения насыщенности (которые говорят о чистоте цвета или цветности или количестве серого, добавленного к чистому цвету). Соответствующие значения насыщенности дадут карту интенсивности красного цвета? Как насчет V (значение)? Тем не менее, я снова предполагаю, что V очень чувствителен к освещению.

    Я уже чувствую некоторые проблемы с подходом HSV: во-первых, сегментирование с использованием канала Hue может быть не лучшим способом, так как цвета не так хорошо разделены. Я бы ожидал некоторые выбросы здесь.

    Другой подход может состоять в том, чтобы использовать канал A* для сегментации красного цвета, а затем посмотреть на соответствующие значения канала S, чтобы узнать карту интенсивности красного цвета в изображении. Это имеет больше смысла?

В конце давайте предположим, что у нас есть изображение с коррекцией освещенности, и теперь, работает ли комбинация либо A* канала и L канала, либо комбинации H канала и S канала или A* канала и S канала, чтобы решить эту проблему?

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

0 ответов

Другие вопросы по тегам