Роздуми про відновлення зіпсованого зображення

Нещодавно, прочитавши пост про голографічне кодування від eresik, відкрив для себе раніше не відому мені річ, що:

відновити повне зображення об'єкта можна по будь-якому шматочку голографічного знімка (з погіршенням якості зображення)

Перше що спало на думку, це "Вау круто! Треба буде поекспериментувати з цим теж ". Пізніше забувши про цю задумку натрапив на черговий топік від Valler, де автор розвинув ідею реалізувавши кодування кольорових зображень.

Мене дуже зацікавила сама ідея відновлення зображення з частково зіпсованої картинки.

У топіках про голографічне кодування в очі відразу кидаються дві речі:

1) Навіть якщо закодоване зображення не псувати, то при відновленні, зображення все одно виходить з спотвореннями.

2) Закодоване зображення має містити багато надлишкової інформації. Це чудово видно з топіку, де автор кодує картинку 16х16 у зображення розміром 256х256 (збільшення розміру в 256 разів!).

Трохи поміркувавши, я швидко зрозумів, що все банально просто, за умови, що зображення псується тільки великими сконцентрованими шматками.

Наприклад, є зображення і ось воно зіпсувалося:

Який жах, тепер ми не знаємо, що було з правого боку картинки! Так чому б не зробити так:

1) Беремо зображення і перемішуємо всі пікселі за певним алгоритмом (який дає хороший рандомальний розкид і при цьому дозволяє відновити зворотний порядок).

2) Коли зображення псується в певній ділянці, вся ця зіпсованість поширюється рівномірно по всьому зображенню.

3) Після чого застосувавши різні фільтри можна отримати вихідне зображення (відносно) в дуже хорошій якості.

Трохи картинок з додатку, який я написав для перевірки своїх думок.

І так, кодуємо зображення:

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

Відновлюємо зображення:

Застосовуйте фільтр. На жаль моїх знань в обробці зображень вистачило тільки на написання фільтра заповнюючого зіпсовані пікселі середнім значенням оточуючих його нормальних пікселів:

Начебто результат цілком хороший. Краще ніж при голографічному кодуванні. При цьому ніякої надлишкової інформації немає, а також якщо закодоване зображення не було зіпсоване, то при декодуванні ми отримуємо 100% копію оригіналу без артефактів.

Кілька додаткових картинок. При 50% зіпсованих даних:

При 75% зіпсованих даних:

Ось і все.

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

UPD:

Додав приклади відновлення при великих розмірах зображення. В архіві вихідне зображення (3872x2592) і три розкодовані зображення при 25%, 50% і 75% втрати даних.

Звантажити архів 49.4 Mb