Main Page News Fy++ samples Video Files Contact Me
Articles
  • Как работает временная память в мозгу
  • Потоковая память
  • Временная память - удобная альтернатива
  • Функция создания точки останова на чтение/запись
  • Кремль со спутника
  • Представление цвета
  • Сравнение цветов
  • Детектор движения
  • Сборщик мусора

  • Представление цвета

    Сегодня сделал обескураживающие "открытие": цвета можно намного эффективнее сравнивать, не имея никакого представления об отдельных RGB компонентах.

    Вся операция сравнения на Си выглядит примерно так:

    if (CSL + color1 - color2) % (CSL / 2) > threshold) {...}
    где CSL - Color Space Length (256, чтобы уложиться в байт)

    Естественно, для этого обычные RGB компоненты необходимо конвертировать в компоненты другого вида:

    1) индекс цвета в цветовой циклической палитре 2) яркость этого цвета 3) яркость белого

    Это - гораздо более осязаемые вещи, чем RGB. Наверняка, некоторые уже знают этот эффект, но я в приятном удивлении. Тем более приятно, что дошел до этого сам.

    Обоснование

    HSB, hue, saturation, brightness
    вверху слева - оригинал, вверху справа - цвета без остальных компонентов, снизу слева - яркость цвета, снизу справа - яркость белого

    Смысл идеи прост. Человеческий глаз различает только три основных цвета: красный, зеленый и синий. Люди неопытные используют для сравнения корень из суммы квадратов разницы всех компонент. Но это - ошибка.

    Дело в том, что если присмотреться, то вы обнаружите, что в каждый момент времени только два базовых цвета составляют видимый цвет; те, которые по яркости больше третьего. Самая же блеклая компонента на видимый цвет не влияет, а лишь придает оттенок белизны. Таким образом, не существует никакого RGB "куба", а лишь двумерная цветовая лента: от красного к зеленому, от зелего к синему, от синего к красному. Это очень важно: цветов, состоящих сразу из синего красного и зеленого - не существует! Это будет лишь цвет, составленный из основной пары + белизна. Мысль кажется такой очевидной, когда осознаешь, ведь три компоненты вместе - это градация серого.

    HSB, hue, saturation, brightness, краска, насыщение, яркость цвета

    Все это:

    1) в корне упрощает алгоритм анализа изображения, так как в нем не так важна яркость, сколько цвет;

    2) сама процедура сравнения феноменально ускоряется;

    3) добавляются два дополнительных параметра для фильтрации, которые более вменяемы и понятны.

    Правда, сказать по-правде, у меня возникала сначала проблема, как быстро создать картинку нового вида. Но, подумав, нашел отличное решение с применением таблицы трансляции размером в 65 кило, и еще пары хитростей. Сейчас работаю над этим. Надеюсь, я в теории нигде не просчитался....

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

    Ваше имя:

    Ваш комментарий:

    Articles & posts
    Как работает временная память в мозгуРезюме на статей о работе гиппокампа мозга, ответственного за хранение временной памяти.
    Потоковая памятьИногда нужно выполнить множество операций конкатенации строки, и сделать это максимально быстро. В статье описывается алгоритм и даются исходники одного из методов решения этой задачи.
    Временная память - удобная альтернативаМногие, наверное, сталкивались с "ограничением" языка Си на работу со строками, когда надо возвратить строку или другие объемные данные, созданные внутри функции. Сейчас вы поймете, почему я взял это слово в кавычки :)
    Функция создания точки останова на чтение/записьЭта функция будет полезна при отладке, когда нужно определить, где портятся заданные данные.
    Кремль со спутникаВид со спутника на несколько известных мест. Карты maps.google.com.
    Представление цветаПринцип разложения цветов на составляющие для удобного их сравнения. Существующие два олсновных формата представления цвета.
    Сравнение цветовСоображения по поводу возможного алгоритма сравнения цветов.
    Детектор движенияОбщие соображения насчет алгоритма обнаружения движения.
    Сборщик мусораАльтернатива стандартному алгоритму сборщика мусора, используемому в java.

    Copyright (c) Sapunov Vladimir 2006-2011 e-mail: vladimir@fyzor.com :: login