Как стать автором
Обновить

Размышления о восстановлении испорченного изображения

Время на прочтение2 мин
Количество просмотров3.4K
Недавно, прочитав пост про голографическое кодирование от eresik, открыл для себя ранее не известную мне вещь, что:
восстановить полное изображение объекта можно по любому кусочку голографического снимка (с ухудшением качества изображения)


Первое что пришло в голову, это «Вау круто! Надо будет поэкспериментировать с этим тоже». Позже забыв про эту задумку наткнулся на очередной топик от Valler, где автор развил идею реализовав кодирование цветных изображений.

Меня очень заинтересовала сама идея восстановление изображения из частично испорченной картинки.



В топиках про голографическое кодирование в глаза сразу бросаются две вещи:
1) Даже если закодированное изображение не портить, то при восстановлении, изображение все равно получается с искажениями.
2) Закодированное изображение должно содержать много избыточной информации. Это отлично видно из топика, где автор кодирует картинку 16х16 в изображение размером 256х256 (увеличение размера в 256 раз!).

Немного поразмыслив, я быстро понял, что ведь всё банально просто, при условии, что изображение портится только большими сконцентрированными кусками.

К примеру, есть изображение и вот оно испортилось:


Какой ужас, теперь мы не знаем, что было с правой стороны картинки! Так почему бы не сделать так:
1) Берем изображение и перемешиваем все пиксели по определенному алгоритму (который дает хороший рандомальный разброс и при этом позволяет восстановить обратный порядок).
2) Когда изображение портится в определенном участке, вся эта испорченность распространяется равномерно по всему изображению.
3) После чего применив различные фильтры можно получить исходное изображение (относительно) в очень хорошем качестве.

Немного картинок из приложения, которое я написал для проверки своих мыслей.
И так, кодируем изображение:


Закодированное изображение портится:


Восстанавливаем изображение:


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


Вроде результат вполне хороший. Получше чем при голографическом кодировании. При этом никакой избыточной информации нет, а также если закодированное изображение не было испорчено, то при декодировании мы получаем 100% копию оригинала без артефактов.

Пару дополнительных картинок. При 50% испорченных данных:

При 75% испорченных данных:


Вот и всё.
Я думаю, что для людей, плотно занимающихся обработкой изображений и кодированием информации, мои методы покажутся слишком не образованными, но не судите строго, я всего лишь хотел поделиться своими мыслями.

UPD:
Добавил примеры восстановления при больших размерах изображения. В архиве исходное изображение (3872x2592) и три раскодированных изображения при 25%, 50% и 75% потери данных.
Скачать архив 49.4 Mb
Теги:
Хабы:
Всего голосов 55: ↑46 и ↓9+37
Комментарии32

Публикации

Истории

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань