LINUX.ORG.RU

Депикселизация JPG-изображений, возможно ли такое технически?

 , , , ,


0

1

Привет ребят. Есть ли на форуме специалисты по графике? Интересует вот что. Во многих графических редакторах вроде Гимпа/фотошопа есть инструменты для пикселизации изображений. Часто такие штуки используют чтобы «пикселить» лица на фотках. «Квадратики» в итоге могут быть большие или маленькие, но суть в том что определить лицо после такой обработки нельзя.

Но в интернете полно онлайн-сервисов и программ, как бесплатных, так и за несколько сотен баксов, утверждающих что их алгоритмы позволяют полностью депикселизировать изображение или его отдельные участки (те же лица).

Получается, что где-то в недрах JPG-файла должна храниться информация о том, каким образом были наложены пиксели, чтобы можно было обратить процесс вспять. Иначе получается, что все эти 100500 программ врут и предлагают услугу, которая неосуществима технически.

Кто объяснит, в чем подвох? Если все так просто, и депикселизацию можно сделать даже в Гимпе (видел какую-то длинную инструкцию), то получается что можно получить исходник любого фото и легко всех деанонить?

Я в графике ничего не понимаю, поэтому призываю специалистов в тред, развеять мифы... Можно или нельзя? И если можно, то в каких форматах такое можно провернуть?

Перемещено jollheef из multimedia

anonymous

И если все-таки возможно, есть ли разница между пикселизацией, блюром (размытием) и черным прямоугольником (вдруг и его можно «снять», хотя звучит как фантастика)?

anonymous ()

Это весьма широкий вопрос. Даже несколько широких вопросов. Информация в рамках одного изображения теряется, это факт. В «недрах» ничего не хранится, иначе не было бы уменьшения размера изображения, и восстановить потерянную информацию невозможно никак. Но если творчески подойти к вопросу, а именно выйти за рамки конкретного изображения, то возможно многое. Например, если натренировать нейронку на тонне изображений лиц и скормить ей пикселизованное изображения, есть высокий шанс получить что-то осмысленное. Если, скажем, от глаза у нас осталось 3x3 пикселя, глаза мы в них никак не увидим. Но если мы знаем что эти 9 пикселей - часть лица, и даже конкретно глаз, а различимых типов и расположений глаза у нас не так много (вспомните как составляется фоторобот), то вполне можно додумать что было до пикселизации под эти 9x9 пикселей. В среднестатистическом случае это даст какой-то результат. В частных случаях нет. Скажем, если в тренировочном наборе не было бельма или закрытого глаза, или макияжа, то соответствующие детали нейронка не восстановит. Или другой кейс - мне всегда было интересно как работала пикселизация лиц на телевидении 90-х. Кажется, что замозаенная область была зафиксирована в пределах кадра, и яркость каждого квадратика выбиралась скорее не как среднее яркостей всех точек в нём, а как значение центральной точки. А это значит что если взять видео и прикинуть как снятый человек двигал головой, то можно восстановить оригинальное лицо достаточно точно.

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

slovazap ★★★★★ ()
Последнее исправление: slovazap (всего исправлений: 1)

Видел такое на нейронках и рядом было оригинальное изображение. Очень неплохо учитывая что 99% информации взялось из ниоткуда. Всё зависит от того насколько замозаичено, если сделано по-понятиям, пара пикселей на всё лицо, то вряд ли будет очень похоже в результате. Если что-то видно, то вполне.

anonymous ()
Ответ на: комментарий от slovazap

Спасибо, очень толковый ответ! Значит, если надо замаскировать что-то, и не хочется черных квадратов, то можно комбинацию блюр + крупную пикселизацию, и будет хорошо?

anonymous ()
Ответ на: комментарий от anonymous

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

KivApple ★★★★★ ()
Ответ на: комментарий от slovazap

А что касается не мозаики, а, например, блюра, то с ним ещё проще, ибо информация там даже не теряется (кроме краёв изображения), и есть обратная функция.

Я не спец по теории этих вещей, но если заблюренный результат передается в lossy-формате, часть информации по-любому теряется необратимо

annulen ★★★★★ ()
Ответ на: комментарий от annulen

Проблема в том что блюр (как и голографическое преобразование) это эдакий raid5, который равномерно размазывает данные по области, так что сжатие может нанести меньше вреда, чем нанесло бы несжатой картинке.

anonymous ()

Иначе получается, что все эти 100500 программ врут и предлагают услугу, которая неосуществима технически.

Осуществима. Просто вместо оригинальной информации какая-нибудь эвристика додумывает, чотам было под пикселизацией. Если знать, что должно было быть (в данном случае - лица), то можно неплохо так наваять. Но 100% информации не восстановить гарантированно.

Bfgeshka ★★★★★ ()
Ответ на: комментарий от anonymous

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

Значит, если надо замаскировать что-то, и не хочется черных квадратов, то можно комбинацию блюр + крупную пикселизацию, и будет хорошо?

Я не думаю что вправе тут давать конкретные советы, я с ML и анализом изображений не работал и представление имею сугубо теоретическое. Я бы исходил из предположения что любая комбинация преобразований исходного изображения всё ещё содержит информацию, по которой может быть восстановлено лицо. Конечно, для восстановления именно вашего преобразования нужно натренировать сеть конкретно для него, а для этого его нужно знать, но на незнание полагаться нельзя ибо это security through obscurity. А вот надёжно будет, наверное, заменить лицо на исходном изображении и его уже пикселизовать. Что проще и эквивалетно - закрывать лицо готовым изображением мозаики, но сделанной по другому лицу или вообще не по лицу, т.е. получаем чёрный квадрат по механизму действия и, но эстетически привлекательнее.

slovazap ★★★★★ ()