«Злом» SmartDeblur 2.2

    Знущатися будемо над чудовою програмою пана YUVladimir під назвою SmartDeblur , яка призначена для виправлення змазаних зображень. Повноцінним зломом це назвати, звичайно, не можна. Так, невелику вправу з картинками.
 
Беремо зіпсовану шевеленки картинку
 
 
 
Проганяємо через демоверсію SmartDeblur і отримуємо
 
 
 
Помічаємо водяні знаки, які нам не подобаються. Якщо повторити експеримент кілька разів з однієї і тієї ж вихідної картинкою, то видно, що знаки дуже статичні: не змінюється ні текст, ні положення написів. Значить, для накладення водяних знаків SmartDeblur просто застосовує якусь маску. Яку саме? Дуже легко впізнати! Підсовуємо програмі біле поле такого ж розміру, як вихідна картинка. Перемикаємо в режим виправлення розмиття Гаусса з радіусом 0.1 і отримуємо
 
 
 
Це і є шукана маска. Простір між написами, до речі, не зовсім біле, хм, ну ладно… Обчислення будемо робити в системі RGB з цілочисельними значеннями від 0 до 255, загалом, без екзотики. Експериментально вдалося визначити, що маска накладається за формулою R out = R in * R mask ÷ 255 , де R in — значення червоного каналу до накладення маски, R mask — значення червоного каналу самої маски, R out — значення червоного каналу, одержуване в результаті накладення маски, & div; — цілочисельне ділення. Для зеленого і синього каналів те ж саме. У графічних редакторах такий спосіб зазвичай називається просто "множення".
 
Проти "множення" будемо застосовувати "поділ". Правда, з втратою точності. Обчислюємо по зворотній формулою R in = R out * 255 ÷ R mask і бачимо
 
 
 
Деякі сліди таки залишилися. Чи то винна втрата точності, чи то я трохи помилився в формулах. Але тепер водяні знаки не так різко кидаються в очі, чого для наших цілей цілком достатньо. І будемо вдячні автору програми SmartDeblur за коментарі.
    
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.