nabbla (nabbla1) wrote,
nabbla
nabbla1

Category:

Progressive и Interlaced - терминологическая путаница

Когда речь заходит о видео, то приведённые выше слова - антонимы. Развёртка может быть либо прогрессивной, т.е строка за строкой, сверху вниз, либо чересстрочной - сначала идёт полукадр из нечётных строк, затем из чётных, что было необходимо в телевидении, чтобы при частоте кадров всего 25 Гц человек не замечал бег электронного луча. Отсюда буковка в 1080p / 1080i.

Но в случае картинок JPEG, GIF и PNG эти два слова внезапно становятся синонимами!


Самый простой (Baseline) JPEG хранит картинку в виде блоков 8х8, которые идут слева направо, сверху вниз. Когда такая картинка грузится на сайте при медленном интернете, можно прямо видеть, как прибывают новые данные, и отрисовывается ещё немножко вниз. Вроде бы, по аналогии с видео, такой вариант можно было назвать "прогрессивной разверткой". Как бы не так! Progressive JPEG - это как раз подвид формата JPEG, когда изображение грузится "методом последовательных приближений". Там на самом деле есть целых два различных способа достичь этого: частотное разделение (spectral selection), когда первым делом передают низкочастотные коэффициенты, а уже вслед за ними высокочастотные, так что сначала картинка размыта, но потихоньку проявляются детали. Второй способ - "последовательное приближение" (successive approximation), где передаются все коэффициенты, но сначала старшие разряды, следующим заходом - средние, потом младшие (там довольно большая свобода, как всё это поделить). При таком способе непрогрузившаяся картинка не кажется размытой - на ней множество резких деталей разной величины, но они совершенно случайны. Такое ощущение, что именно этот метод используется в большинстве случаев.

В GIF и PNG считывание строки за строкой тоже никак особенно не называется, а вот вариант, где по первым же принятым байтам начинает строиться нечто, похожее на изображение целиком, называется Interlaced. Это и есть более хитрая "чересстрочная развертка" - в GIF загружается каждая восьмая строка, затем каждая четвертая, каждая вторая и, наконец, недостающие, а в PNG применяется схема Adam7, которая более симметрична - прореживание ведётся и по строкам, и по столбцам. Залипательная картинка из Википедии:



Если сжатие вообще отключено, то размер изображения не изменится, включен ли режим Interlaced или нет - пиксели-то передаются те же самые, только в другом порядке! При наличии сжатия Interlaced получается немножко толще, поскольку пропадает корреляция между соседними пикселями. Со сканами книжек у меня получалось, что в режиме Interlaced файлы занимают на 2% больше места, чем без него, зато при должной реализации эскизы могут формироваться значительно быстрее - на первой итерации Adam7 передаётся лишь 1/64 картинки (т.е по сути, картинка, уменьшенная в 8 раз по каждой координате), нам этого может вполне хватить для эскиза. Когда скан 600 dpi, то первых итераций может хватить даже для полноэкранного изображения, правда, оно выходит не очень качественное - муар (эффект наложения, aliasing) поднимает свою голову.

Почему я это вспомнил - хочу в своём CaesarScan ввести опцию - сохранять в чересстрочном режиме, вот и задумался, "как это по-русски"? О прогрессивном JPEG народ слышал, хотя и он, возможно, остался в эпохе WEB 1.0, когда телефонного модема чудесным образом хватало для рысканья по интернету, а вот чересстрочный PNG - по-моему так и остался диковинкой, хоть и придумали его в 1996 году!
Tags: программки
Subscribe

  • А всё-таки есть польза от ковариаций

    Вчера опробовал "сценарий", когда варьируем дальность от 1 метра до 11 метров. Получилось, что грамотное усреднение - это взять с огромными весами…

  • Потёмкинская деревня - 2

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

  • Очередная несуразность в единицах измерения

    Когда-то я написал программу PhysUnitCalc - калькулятор, умеющий работать с размерностями. Мне казалось, что я наступил уже на все грабли, которые…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 1 comment