Как можно кодировать черно-белую картинку в ".wav" -файл? - PullRequest
0 голосов
/ 13 марта 2012

Как можно кодировать черно-белую картинку в ".wav" -файл? Я знаю, что это возможно с помощью «стенографии». Но я не знаю, это алгоритмы. Какие алгоритмы существуют? И какие книги / источники являются лучшими для понимания их принципов?


Отредактировано:

На самом деле у меня есть стерео WAV-файл. Моя задача - расшифровать картинки с него. Задание говорит, что частоты левого канала показывают координату X, частоты правого канала показывают координату Y декартовой системы координат. Эти точки составляют картинку с текстовым сообщением. Итак, я должен написать программу для этого. Я понятия не имею, что мне делать.

Ответы [ 2 ]

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

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

Для восстановления изображения потребуется программное обеспечение, которое откроет волновой файл, возьмет младший значащий бит из каждого семпла и поместит эти биты вместе друг с другом в (например) файл JPEG.

Чтобы представить вещи в перспективе, на компакт-диске есть два канала, содержащие 16-битные сэмплы с частотой 44,1 кГц, поэтому для кодирования довольно типичного полноцветного JPEG-файла вам потребуется всего лишь около 10 секунд звукового сигнала (например, , 100 КБ или около того). Волновой файл типичной ~ 3-минутной поп-песни может довольно легко скрыть около 15-20 полноцветных изображений.

Редактировать: (для ответа на отредактированный ответ). Это немного сложнее иметь дело. Отдельный образец не может представлять какую-либо частоту; это просто представляет амплитуду в данный момент времени. Чтобы получить частоту, вам нужно количество выборок за период времени, и вам нужно знать точный период для преобразования.

Как только вы это знаете, вы делаете БПФ для сэмплов. Это скажет вам относительную силу сигнала на всех возможных частотах. Предположительно, вы бы выбрали самый сильный и масштабировали соответственно. Сделайте то же самое для другого канала и нарисуйте пиксель в этой точке.

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

Ваши уши не чувствительны к небольшим изменениям в звуковом файле.

Файлы WAV - это НЕКОМПРЕССИРОВАННЫЕ данные, поэтому это просто файл из 16-24 бит символов.Ваши уши не могут заметить небольшие различия между битами.Все, что вам нужно сделать, это периодически вводить битовые значения, которые представляют изображение в данных.

Таким образом, если вы вставляете один пиксель на каждые 1000 точек данных, вы можете скрыть изображение (даже не зашифровав его) в волновом файле.Если пользователь воспроизводит файл, он не может его услышать.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...