|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.05.2012, 10:35 | #1 | ||
Форумчанин
Регистрация: 22.03.2009
Сообщений: 110
|
Кодирование JEPG. Предсказать алгоритм Хаффмана.
Доброго времени суток!
Вобщем недавно столкнулся с проблеммой: Необходимо, что бы в картинке после обработки скриптом осталась нужная мне строка. На сам алгоритм повлиять я не могу. Изображение проходит сжатие по Хаффману. Начал разбиратся в этой теме. Вобщем, появилась идея подобрать такие вхождения, которые после кодировки дадут нужную мне последовательность символов - мою строку. Задача, теоритически реальна, но моих знаний в областе высшей математики недостаточно. Суть такова: Цитата:
Как? Насколько я понял, я могу править "дерево". Тоесть подобрав нужную частоту, и создав свое дерево, я смогу добится результата. Все, вроде, просто, но сжатие JEPG имеет "немного" более сложную реализацию, которую я не смог осилить. Там сначала идет сжатие самого изображение со 100% (исходная картинка), до 90% (картинка ПЕРЕД прогоном по хаффману), а после уже уплотнение. Так вот, любой EXIF заменяется следующим: Цитата:
Спасибо. |
||
08.05.2012, 10:55 | #2 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Не совсем понятна постановка.
Если "дан алгоритм, который неизвестен и который нельзя менять, но нужно найти строку, которая после пропускания через этот алгоритм становится требуемой", то, боюсь, кроме перебора ничего не существует, а перебор будет продолжаться больше времени существования Вселенной. PS. То, что Вы описали, не является алгоритмом Хаффмана. |
08.05.2012, 10:59 | #3 |
Форумчанин
Регистрация: 22.03.2009
Сообщений: 110
|
Вы не поняли.
Нужно не найти строчку. Нужно задать такие входные данные для алгоритма, которы ПОСЛЕ обработки алгоритмом будут содержать нужную мне строку. p.s. любые JEPG изображения кодируются по Хаффману. к примеру: До кодирования --------- после кодирования asm38sfd93mf93 --------- naskd831w2dj0120d (Неизвестно) --------- My_string |
08.05.2012, 11:24 | #4 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Я правильно понял, что Вам нужно.
Но не понял, чем Вы располагаете. Если алгоритм для Вас "черный ящик", то только перебор длительностью намного больше, чем можно себе позволить. Т.е. задача практически неразрешимая. Хаффман - далеко не единственное преобразование, используемое при JPEG сжатии. И то, что Вы описали - не Хаффман. |
08.05.2012, 11:53 | #5 | |
Форумчанин
Регистрация: 22.03.2009
Сообщений: 110
|
Не совсем черный
Цитата:
|
|
08.05.2012, 17:42 | #6 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Наверное, можно. Длина текстовой строки будет ограничена 64 символами + понадобится подогнать коэффициенты таблицы квантования и включить их в JPEG. Стандарт такие фокусы позволяет, но любой нормальный кодировщик заменит таблицу квантования своей.
UPD: ну можно ещё "в лоб" 1. Взять картинку (лучше однотонную серую) 2. Изменить 1 байт 3. Пережать определённым кодером с указанным качеством 4. Проверить, изменился ли байт после сжатия. Если изменился - вписать значение ещё раз, и перейти к п.3. Если не изменился - сдвинуть позицию на 1, записать новый байт, перейти к п.3 В итоге удалось втиснуть сторку размером 52 байта, которая сохраняется в файле при пережатии gd-jpeg'ом с качеством 90, отключённой оптимизацией и прогрессией. 000002A0 DA 00 0C 03 01 00 02 11 03 11 00 3F 00 E2 65 92 Ú..........?.âe’ 000002B0 48 45 4C 4C 4F 20 57 4F 52 4C 44 20 59 4F 55 52 HELLO WORLD YOUR 000002C0 20 54 45 58 54 20 47 4F 45 53 20 48 45 52 45 20 TEXT GOES HERE 000002D0 42 4C 41 48 20 42 4C 41 48 20 42 4C 41 48 20 41 BLAH BLAH BLAH A 000002E0 4E 44 20 52 45 E4 F7 8A 9A 8A 92 9C A4 6E 4F D2 ND REä÷ŠšŠ’œ¤nOÒ
пыщь
Последний раз редактировалось JTG; 08.05.2012 в 18:52. |
09.05.2012, 12:03 | #7 | |
Форумчанин
Регистрация: 22.03.2009
Сообщений: 110
|
Хм... Попробовал заменить лобой байт на свой, загрузил, структура сильно изменилась, повторил с той же позицеей - в результате картинка перестала загружатся(
Цитата:
|
|
09.05.2012, 13:59 | #8 |
Форумчанин
Регистрация: 22.03.2009
Сообщений: 110
|
Получается записать не большие значения, но на некоторых символах картинка просто отказывается грузится(
|
10.05.2012, 19:02 | #9 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Хз, у меня получилось при помощи XnView (там используется gd-jpeg)
пыщь
|
11.05.2012, 19:39 | #10 |
Форумчанин
Регистрация: 22.03.2009
Сообщений: 110
|
Ну вот к примеру:
Оригинал Код:
Код:
Дальше меняю следующий байт Код:
Есть идеи? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Кодирование изображений, предсказать алгоритм Хаффмана | Pirotexnik | Общие вопросы по программированию, компьютерный форум | 0 | 08.05.2012 10:30 |
Алгоритм Хаффмана | [BeNdeR] | Общие вопросы Delphi | 0 | 02.03.2012 20:48 |
Эффективное кодирование информации методами Шеннона-Фано и Хаффмана в Delphi | LoveCookies | Помощь студентам | 0 | 06.11.2011 01:19 |
Алгоритм Хаффмана | 0479 | Помощь студентам | 1 | 15.09.2010 11:53 |
Алгоритм Хаффмана. | Vetal115 | Общие вопросы по Java, Java SE, Kotlin | 0 | 22.04.2010 22:23 |