Поскольку eznme не ответил на ваш вопрос (вам нужны отпечатки пальцев, он объясняет сжатие и реконструкцию), вот метод, с которым вы часто сталкиваетесь:
Вы разделяете информацию о цвете и яркости (цветность и яркость) и взвешиваете их по-разному. Иногда вы даже отбрасываете цветность и просто используете часть яркости. Это значительно уменьшает размер вашего отпечатка пальца (~ в три раза) и учитывает то, как мы воспринимаем изображение — в основном по локальной яркости, а не по абсолютному цвету. В качестве бонуса вы получаете некоторую надежность в отношении манипуляций с цветом изображения.
Разделение может быть выполнено по-разному, например. преобразование изображения RGB в YUV или YIQ. Если вы хотите сохранить только компонент яркости, эти два цветовых пространства эквивалентны. Однако они кодируют цветность по-разному. Вот линейное преобразование яркости Y из RGB: Y = 0,299*R + 0,587*G + 0,114*B
Когда вы взглянете на математику, вы заметите, что мы не делаем ничего, кроме создания изображения в градациях серого, принимая во внимание, что мы воспринимаем зеленый ярче красного, а красный ярче синего, когда все они численно равны.
Если вы хотите сохранить немного информации о цветности, чтобы ваш отпечаток был как можно более кратким, вы можете уменьшить разрешение двух компонентов U, V (каждый на самом деле 8 бит). Таким образом, вы можете объединить их обоих в одно 8-битное значение, уменьшив их информацию до 4 бит и объединив их с оператором сдвига (не знаю, как это работает в java). Цветность должна весить меньше по сравнению с яркостью при окончательном расчете расстояния от отпечатка пальца (точечный продукт, о котором вы упомянули).
person
DerManu
schedule
21.03.2012