|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
|
|
Хранение данных в изображениях при сжатии с потерями05.01.2016, 11:12. Показов 1682. Ответов 24
Метки нет (Все метки)
Здравствуйте.
Есть задача требующая реализации алгоритма, позволяющего обеспечить гарантированную передачу данных через "носитель", которым являются файлы изображений, применяющие сжатие с потерями, в частности JPEG. Требуется обеспечить наиболее плотное хранение данных (без потерь) на изображении при условии, что уровень сжатия изображения будет не выше некоторого уровня. Возможны ситуации, когда изображение пересжималось несколько раз. Подскажите с алгоритмом, можно ссылками, никак не составлю правильный запрос для поиска в интернете. Желательно, чтобы также присутствовали варианты попроще для реализации работающего прототипа, а потом уже разбираться с более продуктивными, но требующими больше времени на понимание и реализацию. Есть, например, готовые решения c QR-кодами, но нужно что-то получше.
0
|
|
| 05.01.2016, 11:12 | |
|
Ответы с готовыми решениями:
24
Ошибка при сжатии базы данных Образ раздела занимает 102ГБ при данных на диске всего 24ГБ при стандартном сжатии Run-time error при сжатии базы данных |
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
|
|
| 08.01.2016, 02:29 [ТС] | |
|
Пока что удалоcь найти только пример где каждый бит данных преобразовывался в небольшой квадрат черного или белого цвета. Но это явно не то.
0
|
|
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
|
||
| 12.01.2016, 23:25 [ТС] | ||
|
Задача в использовании именно самой картинки полностью и целиком, как непосредственного носителя данных. но поскольку носитель не надежный, нужно предварительно подготовить данные для противостояния ошибкам, и потом уметь их восстанавливать из картинки.
0
|
||
|
4044 / 2655 / 583
Регистрация: 11.09.2009
Сообщений: 9,488
|
||
| 13.01.2016, 03:39 | ||
|
Вообще, если это не скрытая передача данных в картинках, то чем это отличается от QR-кодов? Допустим, что если формировать картинку в виде текста (нули и единицы, или более различимые знаки - белые и чёрные квадраты), то до тех пор, пока при пересжатиях картинка распознаётся, можно считать, что данные передаются без потерь. Но это в сущности и есть те самые QR-коды... wingblack, в чём изюминка нового велосипеда?
0
|
||
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
|
||||
| 14.01.2016, 14:14 [ТС] | ||||
|
А ведь можно использовать цветные квадратики, учитывать предполагаемые изменения изображения при сжатии, использовать коррекцию ошибок. Или, например, научиться хранить данные таким образом, чтобы даже при сильном сжатии часть данных сохранялась. Например, часть данных сохраняем в огромные квадраты, поверх них формируем по какому-то правилу квадраты поменьше, которые вмещают больше данных, но более подвержены помехам, и т.д. Потом каким-то образом все это пытаемся вытащить. Пока только фантазии, да. 1) на вход передается файл с произвольными данными, и число R от 0 до 100 2) алгоритм на основе данных в файле создает серию изображений - матрицы RGB пикселей размера N*M (bitmap-ы) 3) каждое изображение сохраняется в JPG файл с качеством равным R Далее должен быть обратный процесс 1) читаем серию JPG файлов, извлекаем массивы точек RGB(bitmap) 2) извлекаем данные из изображений согласно нашему алгоритму 3) сохраняем данные в файл Для заданного R содержимое файла с данными на входе и содержимое файла на выходе должны быть одинаковыми. Update: При этом такой алгоритм должен преобразовывать данные в изображения настолько компактно, насколько возможно (минимум используемых пикселей).
0
|
||||
|
4044 / 2655 / 583
Регистрация: 11.09.2009
Сообщений: 9,488
|
||
| 14.01.2016, 17:41 | ||
|
Не по теме: Давайте я вам лучше другую идею подкину. Тоже на основе закона сохранения информации:
0
|
||
| 15.01.2016, 05:12 | ||
|
Если так, то неясно какие трудности (с точки зрения изображения). Ну задал набор цветов (типа палитры) чтобы можно было удобно восстановиться, из тех же соображений размер квадратика. И кодируйте на здоровье, как - это уже др вопрос.
0
|
||
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
|
||
| 15.01.2016, 14:26 [ТС] | ||
|
Для ч/б сразу напрашивается среднее арифметическое по квадрату, и округление серого квадрата до ближайшего ч/б значения. А вот если градации серого, то тут можно попытаться компенсировать возникновение смещения по цветности, но 8-битный квадрат гораздо уязвимее к помехам, и я не знаю что можно придумать на таком первом шаге к уплотнению данных.
0
|
||
|
4044 / 2655 / 583
Регистрация: 11.09.2009
Сообщений: 9,488
|
|
| 15.01.2016, 15:00 | |
|
0
|
|
|
4044 / 2655 / 583
Регистрация: 11.09.2009
Сообщений: 9,488
|
||
| 15.01.2016, 17:54 | ||
|
А вообще, чтобы сделать оптимальное кодирование, надо, чтобы элемент изображения максимально соответствовал виду функции, применяемой в JPEG, чтобы при кодировании получалось минимальное количество коэффициентов и чтобы коэффициенты были максимально простые. Тогда и при многократном перекодировании нарастание ошибок будет минимально, и сжатие максимально. Конечно, до степени сжатия алгоритмов, предназначенных для сжатия данных тут как пешком до Луны - избыточность колоссальная. Считать надо. А то, что в уме у ТС - всего лишь "протокол о намерениях". Кстати, wingblack, а вы вообще алгоритм JPEG хорошо знаете?
0
|
||
|
4044 / 2655 / 583
Регистрация: 11.09.2009
Сообщений: 9,488
|
||
| 16.01.2016, 17:46 | ||
|
Опять "хотим как лучше, а получится как всегда"? (c) В.С.Ч. Сначала сляпаем "какой-нибудь" алгоритм, а потом будем изучать, чегой-то оно при старте падает? Методом "тыка" только дети хорошо получаются. Считать надо. Моделировать. Алгоритм сжатия GPEG "заточен" под сжатие вполне определённого типа данных. Если данные описываются функциями разложения без округления, то такие данные GPEG сохранит без потерь. Вот в эту сторону и надо копать. Добавлено через 6 минут Кстати, wingblack, а что вы будете делать, если картинку пережмут в PNG, GIF, TIFF?
0
|
||
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
|
||
| 16.01.2016, 19:26 [ТС] | ||
|
PNG, если я не ошибаюсь - без потерь или у него есть такой режим - помнится кто-то через него хотел магнет-сылки передавать, и даже что-то делалось на этом поприще.
0
|
||
|
4044 / 2655 / 583
Регистрация: 11.09.2009
Сообщений: 9,488
|
||
| 17.01.2016, 00:47 | ||
![]() Пора вам более подробно раскрыть задачу. Что-то в условии не так. Если это какая-то передача информации с защитой от поисковых роботов, то можно сначала сжать архиватором (можно с паролем), а потом, что получилось, рисовать как QR-коды, только изменив размер картинки.
0
|
||
| 17.01.2016, 13:03 | ||
Я говорю о простом тесте. Заполнили картинку цветными квадратиками 8x8 и сжали. Потом загрузили сжатую картинку и посчитали средний цвет по каждому квадратику. Отклонение умножить на 4 - вот собственно и "шаг палитры" для 8x8 и данного сжатия. Попробовали уменьшить квадратик и.т.п.Не по теме: Вашего мнения о необходимости (глубокого) знания всех деталей jpeg не разделяю. Когда-то (еще в 90-х) читал, помню что идея в преобразовании Фурье и потом упаковка матрицы гармоник "по диагонали". С тех пор я использовал libJPG много раз, иногда компилил из исходников. И академические знания мне ни разу не пригодились. Надо подходить проще - есть алгоритм, ну и есть, менять его все равно не собираемся, просто используем. К тому же на JPG свет клином не сошелся
0
|
||
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
|
|
| 18.01.2016, 13:25 [ТС] | |
|
0
|
|
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
|
|
| 18.11.2016, 15:09 [ТС] | |
|
Недавно вернулся к данному вопросу и смог сделать пробную версию программки по данному топику.
Как результат хождения по граблям: - бит передается как черный или белый квадрат в формате RGB - размер получаемого видео файла: для текста - примерно равен исходному файлу, для сжатых файлов или файлов которые плохо сжимаются архиваторами - примерно в 3 раза больше оригинала. - исходный файл успешно извлекается без изменений после перекодирования видео из-за выкладывания на Youtube, анализ показывает что видео переживет и немного более "жестокое" перекодирование. TODO: - немного переделать код с большей оглядкой на работу через кадры видео для упрощения введения будущих улучшений - проверить необходимость перехода с RGB на цветовое пространство видео. - проверить изменение размера видео-файла и возможности извлечения оригинала при увеличении количества цветов - проверить стоит ли увеличивать плотность данных на одном кадре за счет учета механизма работы кодера видео.
0
|
|
| 18.11.2016, 15:09 | |
|
Помогаю со студенческими работами здесь
20
Сжатие звука с потерями и обратно (или иное сжатие с потерями) Архивация данных с потерями аудио файлов Выборка входящих данных с минимальными потерями
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|