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

Комментарии 98

А почему в подвале топика нет блока со словами "Минутка заботы об нло?"

Надеюсь, не понадобится :) Поставить плашку может только редакция, кажется
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
ШОК! Айтишники попытались провести над Путиным обряд обращения в шакала!

В котика же!

Видимо имеется ввиду измерение степени сжатия JPEG в @бучих шакалах.
Ну в одном из промежуточных скачков, там похоже Фантомас засветился.
И внесут «Законопроект о запрете применения формата JPEG к фотографиям представителей власти»
Бедные дурналисты…
НЛО прилетело и опубликовало эту надпись здесь
Независимые журналисты у нас не являются 5-ой ветвью власти (в отличие от дурналистов, которые срастились с остальными ветвями), а 5-ой колонной (бьющей в набат), которую пытаются всеми силами выдавить с информационного поля, т.е. все выглядит ровно наоборот.

Мне кажется сабж — типа гидрашки. Плотность сильно большая, не сжимается.

рашки

И немедленно двушечка
НЛО прилетело и опубликовало эту надпись здесь
Знакомый Тимур спрашивает: Есть видео с 2257-ю кадрами преобразования сабжа?
Вечером выложу архив с фотками
Progressive JPEG «наоборот».
Прикольно что даже на макроблоках потеряли цвет.

Если была цель скомпенсировать изменения размера, то вместо умножения на 0.8 стоило делить на 1.2. Сейчас там изображение становится в среднем на 2% меньше с каждым преобразованием (1.2 * 0.8 = 0.96).


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

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

Да, теперь шакалы вполне себе jpeg-овые)

тут ВВП какой-то неканоничный :)
Это оригинал.
Готово! Смотрите под КДПВ
Хотелось бы ещё увидеть график изменения размера изображения (в КБ) от этих перезаливаний.
Добавил размер файла в график с качеством
НЛО прилетело и опубликовало эту надпись здесь
А если Чака Норриса перезаливать?
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
>Боюсь, на 9000 шаге пользователю не удастся скачать файл, потому что файл с Чаком сам скачает пользователя.
fixed!
Интересно, что будет, если после распаковки Jpeg использовать различные алгоритмы улучшения Jpeg, deblock и прочее?
Наприемр Topaz JPEG to RAW AI. Ведь была даже идея встроить такие штуки в стандарт декодера, и что-то похожее на это реализовали в h264, in-loop deblocking, и ещё что-то более сильное в h265.

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

Медведева что-ли?

Такое уже было несколько лет назад, теперь мы знаем как оно вышло.

Скорее:

image
имеет смысл, как и ботокс
Очень странный рикролл :)

Плохой пример, тут то ли видак плохо трекинг держит, либо исходная кассета уже изношенная — из-за раздваивания контуров видео быстро в кашу превратилось. Вот перезаписи покачественнее, тут долго издевались:


PAL (если не открывается из-за копирастов — дубль)


MESECAM

Ух… Слишком символично, даже слёзы наворачиваются.
А mp3 после многократного перекодирования как звучит?
Как песни Егора Крида.
My is Linus Torvalds, and I pronounce PulseAudio as Pshshshhsshshhhhh
НЛО прилетело и опубликовало эту надпись здесь
Иллюстрация к пункту «Почему и на каком этапе JPEG сжимает с потерями» не совсем правильная. «Восстановленное» изображение должно быть покрыто JPEG-артефактами.

Минутка наркомании, не судите строго: я не смог быстрым поиском найти информацию о JPEG-инвариантных изображениях (изображения, которые не меняются в результате однократного сжатия/восстановления). Если предположить, что таковые существуют, то для них верно (примерно) следующее:
I = JPEG-1 (JPEG (I))
Можно пойти дальше: Пусть I0 — исходное изображение. Строим последовательность In= JPEG-1(JPEG(In-1)). Существует ли такое неотрицательное конечное N, что для любого n > N: In+1= In= J, где J — инвариантный JPEG-образ исходного изображения? Единственнен ли такой образ если он существует? Является ли он нетривиальным (отличается ли от равномерно-залитого прямоугольника, например). Можно ли найти простое преобразование из I0 в J и использовать J как исходное изображение, которое не будет меняться при сжатии/восстановлении JPEG (хотя бы при каком-то фиксированном наборе параметров), но при этом для человека будет слабо отличаться от исходного?

(отличается ли от равномерно-залитого прямоугольника, например)

Предположу что это любая сетка пикселей 8*8 пикселей с однородной заливкой, которые являются неким базисом для сжатия. В том числе прямоугольники кратные 8 пикселям, и с привязкой к сетке пикселей кратным 8.
Вообще в JPG применяется дискретное косинусное преобразование, фактически раскалывается на следующие паттерны с коэффицентами
Заголовок спойлера
image

Применяется начиная с верхнего левого угла змейкой по диагонали.
Чтобы оно пережималось без потерь надо выбирать первые паттерны и желательно с целыми коэффициентами.
Так и как заставить камеру смартфона и клиент ВК пользоваться форматами и алгоритмами сжатия без потерь? На первое ответ raw, на второе не нашёл пока)

Вк все фотографии конвертирует в jpeg. Только через документы можно отправить без сжатия.

Спасибо!
Теперь кажется понятно, почему фотошоп настойчиво предлагает сохранить «в том же качестве» по умолчанию. Надеюсь, что именно для уменьшения ошибок.
ps отдельное спасибо и за статью по ссылке, пришлось предварительно тоже прочитать. Интересуюсь давно, но так и не осилил разобраться. Хотелось на основе готовых таблиц из jpeg файла извлекать какой-нибудь pHash без декодирования всей картинки.
НЛО прилетело и опубликовало эту надпись здесь
Портрет Дориана Грея

Я разочарован, что внутри статьи какие-то фотки кота, вместо Путина.
По крайней мере нижнюю часть статьи, где анализируется вкшный феномен, стоило бы проиллюстрировать получившимся у вас результатом и результатом, получившимся в группе.
А круче видео сделать, да.

А денег на карту вам ещё не надо было автору закинуть?
Добавил видео под КДПВ. Кот, потому что не хотел еще больше триггеров. Да и это не так уж важно. Если пересохранять с тем же качеством, что и у картинок Путина, то визуально не будет заметно разницы от исходной. А в группе VK есть почему-то.

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


P.S. Осталось сопоставить даты внесения искажений и проверить, не проходило ли в те дни каких-либо [минутка заботы НЛО].

Получается по качеству можно определить примерное количество раз которое картинка была закачана и скачана?

Не скачана/закачена, а пересохранена.
К сожалению, я так и не выяснил, что же действительно происходило с изображением.

Может быть это был просто PrintScreen области экрана с последующим сохранением?
Кстати такой эффект часто бывает когда картинке в каком-нибудь простейшем графическом редакторе выкручивают показатель «чёткость» на максимум
НЛО прилетело и опубликовало эту надпись здесь
К сожалению, я так и не выяснил, что же действительно происходило с изображением
возможно, происходит изменение самого изображения на серверах

Именно происходит изменение изображения на vk-сервере. При приёме изображения от пользователя его немного ужимают с потерей качества, а также преобразуют PNG и GIF в JPEG и уменьшают размер изображения до 2048 по большей стороне, если таковой был превышен. Именно по причине обработки изображения на сервере в vk не работает такая вещь, как rarjpeg.

Но это всё если загружать картинку в раздел фотографий. Если же загружать картинку как документ, то её обработки не происходит, можно загружать картинки размером больше чем 2048х2048, rarjpeg работает.
Нет, фотографии не до 2048 уменьшают, а вписывают в 2560x2160.
Немного напомнило, кстати, видео «What I saw before the darkness».

Хотя, конечно, не настолько жесть…
Давно мучает вопрос: есть ли в JPEG-файле запись с каким качеством было сделано сжатие или это вычисляется на основе каких-то данных при декодировании? И если это просто записанное число, то какой стандарт описывает какое число нужно сохранять, чтобы все остальные поняли как было сделано сжатие?
Да, есть, это таблицы квантования. Если упрощенно, то если исходный коэффициент был 13, а шаг квантования 5, то в файле сохранится шаг и число 3 (потому что [13/5] = 3). Декодер умножит 3 на 5 и получит 15 (а не 13).
Таблицы квантования, которые хранятся в хидере джипега, показывают лишь то, как был сжат джипег в последний раз. Что было до этого — совершенно неизвестно. Этот файл уже могли десятки раз сжимать с разными параметрами, а может быть, это первое сжатие. В этом и есть существенная проблема джипега. Подразумевается, что оригинал хранится несжатым, а сжатая картинка используется неизменной. Если это не так, то потери накапливаются с каждым очередным пережатием и со временем качество джипега становится всё хуже.
Да, но это не противоречит моему ответу, так как вопрос был: «есть ли в JPEG-файле запись с каким качеством было сделано сжатие или это вычисляется». DQT это и есть такая запись. А вот утверждение «потери накапливаются с каждым очередным пережатием и со временем качество джипега становится всё хуже» неверно при определенных условиях, про которые я и писал в статье.
Эта запись (одна или две таблицы квантования) может абсолютно не соответствовать тому качеству, которое есть у конкретного джипега. Можно легко сделать ужасный джипег, у которого качество будет 100%. Вы правы в том, что такая запись есть, вопрос лишь в том, насколько она верна.
А вот это место статьи очень интересное: «После любого последующего количества перекодирований с тем же качеством картинка не меняется.» Сколько раз пробовали это сделать? Пришлите пожалуйста исходный файл или ссылку на него, интересно попробовать.
Что касается «определённых условий», то можно их конкретно сформулировать в явном виде, чтобы можно было проверить на практике?
Если размерность и таблицы квантования не меняются, то уже на первых итерациях перекодирования изображение перестает изменяться. Причем чем хуже выбранное качество, чтем быстрее происходит «стабилизация». Значения пикселей как бы «прилипают» к узлам сетки квантования и при неизменной сетке не так просто заставить значение «прыгнуть» на другой узел. Это легко проверить на практике на любой картинке.
При изменении DQT меняется и сетка, поэтому, конечно, качество будет ухудшаться.
Во всём этом самое непонятное — зачем ВК пережимает и без того маленькую по разрешению и по размеру фотку?

Я думаю, они пережимают просто все фотки без разбора. Вероятно, не в последнюю очередь, чтобы гарантированно избавиться от всякого лишнего (типа rarjpg), что может быть добавлено в нагрузку к картинке.

В кота-то за что сжали?
А это применимо только для jpg и на рng тоже будет проявляться?

png — это формат с lossless сжатием.

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

QR код например?
Уже пробовали так стеганографировать: Хватало 5-7%-маски по обоим цветоразностным каналам (глаз острее воспринимает изменение яркости, чем цвета), и ресайзить так, чтобы 1 «пиксель» qr-маски покрывал кратные 8x8-блоки изображения (8х8, 8х16, 16х16, ...). Исходная информация восстанавливалась, имея оригинал изображения, даже со скриншота экрана монитора на телефон. Двойное слепое тестирование показало: человек не видит, что в картинке хранится какая-то другая информация.
А какие изменения в изображении такой метод переживает?
Прошу статью на хабре, с фоточками и разбором.

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

НЛО прилетело и опубликовало эту надпись здесь
Хм, интересное представление процесса DCT, спасибо. В институте мы изучали его только со стороны преобразования Фурье как оператора свертки, где в 2-мерном случае можно выкинуть синусы и оставить только косинусы (ну или наоборот синусы, просто с косинусами работать проще). Ни разу не задумывался, что DCT/IDCT можно представить, как оператор трансляции базиса в 64-мерном пространстве.
Комментарии с Пикабу завезли?
Потрясающе! Вашу бы энергию да на благое дело!)))
А статья действительно интересная, продолжай!)

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

Видео выглядит как какой-то scp объект
Портрет Дориана Грейя
Интересно зачем ВК с течением времени меняет JPEG, quality.
Сначала 87, потом 80, потом обратно 87, а потом 96.
Местом разжились или добавляют случайность в эксперимент?
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации