Нещодавно, прочитавши пост про голографічне кодування від eresik, відкрив для себе раніше не відому мені річ, що:
відновити повне зображення об'єкта можна по будь-якому шматочку голографічного знімка (з погіршенням якості зображення)
Перше що спало на думку, це "Вау круто! Треба буде поекспериментувати з цим теж ". Пізніше забувши про цю задумку натрапив на черговий топік від Valler, де автор розвинув ідею реалізувавши кодування кольорових зображень.
Мене дуже зацікавила сама ідея відновлення зображення з частково зіпсованої картинки.
У топіках про голографічне кодування в очі відразу кидаються дві речі:
1) Навіть якщо закодоване зображення не псувати, то при відновленні, зображення все одно виходить з спотвореннями.
2) Закодоване зображення має містити багато надлишкової інформації. Це чудово видно з топіку, де автор кодує картинку 16х16 у зображення розміром 256х256 (збільшення розміру в 256 разів!).
Трохи поміркувавши, я швидко зрозумів, що все банально просто, за умови, що зображення псується тільки великими сконцентрованими шматками.
Наприклад, є зображення і ось воно зіпсувалося:
Який жах, тепер ми не знаємо, що було з правого боку картинки! Так чому б не зробити так:
1) Беремо зображення і перемішуємо всі пікселі за певним алгоритмом (який дає хороший рандомальний розкид і при цьому дозволяє відновити зворотний порядок).
2) Коли зображення псується в певній ділянці, вся ця зіпсованість поширюється рівномірно по всьому зображенню.
3) Після чого застосувавши різні фільтри можна отримати вихідне зображення (відносно) в дуже хорошій якості.
Трохи картинок з додатку, який я написав для перевірки своїх думок.
І так, кодуємо зображення:
Закодоване зображення псується:
Відновлюємо зображення:
Застосовуйте фільтр. На жаль моїх знань в обробці зображень вистачило тільки на написання фільтра заповнюючого зіпсовані пікселі середнім значенням оточуючих його нормальних пікселів:
Начебто результат цілком хороший. Краще ніж при голографічному кодуванні. При цьому ніякої надлишкової інформації немає, а також якщо закодоване зображення не було зіпсоване, то при декодуванні ми отримуємо 100% копію оригіналу без артефактів.
Кілька додаткових картинок. При 50% зіпсованих даних:
При 75% зіпсованих даних:
Ось і все.
Я думаю, що для людей, які щільно займаються обробкою зображень і кодуванням інформації, мої методи здаються занадто не освіченими, але не судіть суворо, я всього лише хотів поділитися своїми думками.
UPD:
Додав приклади відновлення при великих розмірах зображення. В архіві вихідне зображення (3872x2592) і три розкодовані зображення при 25%, 50% і 75% втрати даних.
Звантажити архів 49.4 Mb