2016-05-06 2 views
2

Я знаю, что подобие косинуса можно использовать для измерения того, как два изображения или аудио похожи.Как представить изображение или аудио через векторы для сходства косинусов?

Но я не понимаю, как изображение может быть представлено как вектор N-мер. Для текстового документа d каждый размер i-th представляет собой термин t_i, а его скалярная составляющая представляет собой частоту внутри документа. Проблема в том, что я не могу определить одно и то же «отображение» для файла изображения (или аудио).

Единственное решение, которое меня охватывает, состоит в том, что мы имеем вектор в M-измерениях, где M - количество пикселей в изображениях (миллионы измерений? Это безумие!), и значение «сколько темный пиксель «с максимальным значением, представляющим белый, но я твердо думаю, что это решение не используется. Я понятия не имею, как это можно сделать для аудиофайла.

ответ

1

Кривая Гильберта ... кривая заполнения пространства, которая отображает 2D-изображение на 1D-линию ... каждый пиксель посещается один раз и только один раз в пространственном шаблоне, который прекрасно обрабатывает изменения плотности пикселей ... на каждом пикселе интенсивность записывается ... в результате 1D линии вашего вектора готова к поперечному продукта с линией генерируемой из другого источника изображения, используя ту же технику,

use this to compute pixel intensity (Y) из значений RGB источника изображения пикселей:

Y = 0.2126 * R + 0.7152 * G + 0.0722 * B 

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

Допустим, что наш образ 16 на 16, поэтому у нас 256 пикселей, представленных в нашей строке на 256 одинаково разнесенных точек ... Если мы выберем для генерации звука из нашего изображения, мы можем разместить осциллятор синусоидальной волны на каждом из этих 256 точек и диск объем каждого осциллятора с помощью измерения интенсивности пикселя точки (Y) ... одновременно мы управляем частотой каждого генератора по его положению в линии ... от низкой до высокой частоты человеческого слуха (от 200 Гц до 2 кГц) по всей длине строки ... вводят время, генерируя звук в течение короткого времени ... в каждый момент времени складывайте высоту кривой по всем осцилляторов и делить на 256 (вырезать звуковые сэмплы) ... это аудио является звуковым отображением нашего исходного изображения ... это преобразование обратимо ... мы можем так же легко начать с звука и сгенерировать изображение ... с помощью наших 1D вектор (Y) значения как посредник

Вот отличный клип на эту идею https://www.youtube.com/watch?v=DuiryHHTrjU

Важно отметить, что этот метод является полностью обратимым ... если мы начнем с аудио мы можем создать изображение и поэтому мы получаем доступ к вектору посредника ... do a Fourier Transform FFT на коротком аудиоклипе, чтобы преобразовать его из временной области в его частотную область. Это приводит к набору частот, каждый из которых имеет значение амплитуды ... каждое значение частоты это p ut в положение в нашем векторе посредника для представления выходного пикселя ... значение интенсивности выходного пикселя приводится из амплитуды БПФ для этой частоты ... затем сделайте кривую Гильберта в обратном направлении, чтобы отобразить нашу 1D векторную линию в выходной 2D image

+0

Извините, но я понимаю, что эта техника делает перевод с изображения на звук, что не то, что я просил: я хотел знать, как создать вектор в размерности N (где, вероятно, N большой) из изображение и как сделать то же самое, но с источником звука вместо изображения – justHelloWorld

 Смежные вопросы

  • Нет связанных вопросов^_^