Какие значения изображения я должен использовать для создания вейвлета Хаара? - PullRequest
1 голос
/ 03 марта 2011

В настоящее время у меня есть программа на Java, которая будет получать значения rgb для каждого из пикселей изображения.У меня также есть метод для вычисления вейвлета Хаара на двумерной матрице значений.Однако я не знаю, какие значения я должен дать своему методу, который вычисляет вейвлет Хаара.Должен ли я усреднять значение RGB каждого пикселя и компьютерный вейвлет?или, может быть, просто используйте 1 из r, g, b.Я пытаюсь создать уникальный отпечаток для изображения.В другом месте я читал, что это был хороший метод, так как я могу взять точечное произведение двух вейвлетов, чтобы увидеть, насколько схожи изображения друг с другом.

Пожалуйста, дайте мне знать, по каким значениям я должен вычислять вейвлет Хаара.на.Спасибо, Джесс

Ответы [ 2 ]

2 голосов
/ 03 марта 2011

Вы должны рассматривать компоненты R / G / B как разные изображения: создайте одну матрицу для R, G и B каждый, а затем примените вейвлет к отдельным частям.

Затем вы восстанавливаете R / G / B-изображения по 3 вейвлет-сжатым каналам и, наконец, объединяете их в 3-канальное растровое изображение.

1 голос
/ 21 марта 2012

Поскольку eznme не ответил на ваш вопрос (вам нужны отпечатки пальцев, он объясняет сжатие и восстановление), вот метод, с которым вы часто будете сталкиваться:

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

Разделение может выполняться различными способами, например, преобразование вашего изображения RGB в YUV или YIQ цветовое пространство.Если вы хотите сохранить только компонент яркости, эти два цветовых пространства эквивалентны.Тем не менее, они кодируют цветность по-разному.Вот линейное преобразование для яркости Y из RGB: Y = 0,299 * R + 0,587 * G + 0,114 * B

Когда вы смотрите на математику, вы замечаете, что мы ничего не делаем, кроме созданияизображение в градациях серого - принимая во внимание, что мы воспринимаем зеленый цвет ярче, чем красный, а красный ярче синего, когда все они численно равны.

В случае, если вы хотите сохранить немного информации о цвете, чтобы сохранить отпечаток пальца каксжато, насколько это возможно, вы можете уменьшить разрешение двух компонентов U, V (каждый на самом деле 8 бит).Таким образом, вы можете объединить их в одно 8-битное значение, сократив их информацию до 4-битного и объединив их с оператором сдвига (не знаю, как это работает в Java).Цветность должна весить меньше по сравнению с яркостью в конечном расчете расстояния отпечатка пальца (упомянутый вами точечный продукт).

...