При создании JPEG, как я могу минимизировать появление артефактов?


10

Существуют 2 основных фактора, которые, по-видимому, приводят к цифровым артефактам при создании изображений JPEG: алиасинг и сжатие.

Пример:

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

Это правильная вещь? Т.е. поскольку сжатие без потерь создает высокодетализированное изображение, артефакты, возникающие в результате наложения псевдонимов, будут более заметными, поэтому баланс можно найти, используя правильное сжатие, хотя это ухудшит качество изображения.

редактировать

Я только что сохранил этот JPEG в mspaint (3.46KB):

Lossless

Вот тот же JPEG с максимальным сжатием (самое низкое качество, 0,5 КБ):

с потерями

Вот еще тот же JPEG с 50% сжатием (обратите внимание на разницу в размере, 1,29 КБ):

не Half-нет-опций

То же самое 50% -ое сжатие, но сохраненное как «прогрессивный JPG», сохранило исходные данные EXIF ​​и XMP и «попыталось сохранить с исходным качеством JPG» (вы можете заметить, что вокруг нет серых пикселей, 2,96 КБ):

Половина опций

И, наконец, то же самое, что и раньше с отключенной выборкой цветности (тот же размер файла, 2,96 КБ):

не Half-нет-цветность


1
Просто любопытно, с чем вы взяли jpg, размер файла меньше? Если это помогает вашей конкретной ситуации, знаете ли вы о сжатии dxt или текстурах полей расстояния?
Алан Вульф

1
Мне непонятно, каков твой вопрос. Хотите знать, хорошо ли сжимать с использованием JPEG? Хотите знать, какие изображения хорошо сжимаются в формате JPEG? Или вы уже используете JPEG и хотите знать, как создавать свои изображения, чтобы минимизировать артефакты, вызванные JPEG?
Мокоша

@AlanWolfe Я сталкивался с несколькими случаями, когда я мог использовать только JPEG (в основном в веб-приложениях), и поэтому мне было нужно, чтобы он был в формате JPEG. Спасибо, но я не был знаком ни со сжатием dxt, ни с текстурами полей расстояний. Из того, что я видел в википедии , алгоритмы dxt отличаются от алгоритмов, используемых в JPEG. Вы имеете в виду, что их можно использовать для создания JPEG?
Armfoot

@ Мошока, спасибо, это больше связано с твоим последним вопросом: как минимизировать «визуальное воздействие», вызываемое артефактами в изображениях JPEG?
Armfoot

имейте в виду, что у mozjpegкомпрессора есть специальная хитрость, чтобы производить меньше искажений на изображениях такого типа. (и в целом он более эффективен, чем обычные авторы JPEG). Вы пробовали это?
Отображаемое имя

Ответы:


9

Сжатие JPEG включает три основных этапа:

  1. Chroma subampling . Изображение преобразуется из RGB в YCbCr цветовое пространство, в котором яркость или яркость (Y) , хранится отдельно от цветности или цветовых компонентов, Cb и Cr. Компонент Y поддерживается с полным разрешением, но Cb и Cr подвергаются пониженной дискретизации, обычно до половины разрешения по каждой оси. Это использует тот факт, что зрительная система человека более чувствительна к мелким деталям яркости, чем цвета.

  2. Частотное квантование. Изображения Y, Cb и Cr преобразуются в частотное представление, разбивая их на блоки 8x8 и применяя дискретное косинусное преобразование (вариант преобразования Фурье) к каждому блоку. В результате получается матрица чисел, которые описывают амплитуды разных пространственных частот в блоке. Эти числа могут быть затем квантованы (округлены до выбранного количества битов точности). Различные уровни квантования используются для разных частот, используя относительно низкую чувствительность нашей визуальной системы к высоким частотам. Именно здесь вступает в игру настройка качества кодера JPEG: более низкие качества используют более грубое квантование.

  3. Энтропийное кодирование . Квантованные значения DCT пропускаются через энтропийный кодер, который без потерь сжимает поток битов, используя меньше битов для представления более общих значений, что-то вроде файла zip.

Шаги 1 и 2 - с потерями, и каждый производит свой тип артефактов (хотя есть некоторые совпадения). Подвыбор цветности имеет тенденцию размывать острые края между областями разных цветов. Это особенно заметно в векторном искусстве, где яркие фигуры улавливают порочные зазубрины по краям. Частотное квантование в целом размывает мелкие детали, а также создает блочные артефакты при настройках низкого качества, потому что DCT выполняется на блочной основе. Это особенно заметно по тексту.

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


Большое спасибо за ваше подробное объяснение Натан +1. Я понимаю, что алгоритмы сжатия имеют свои ограничения для JPEG, но я просто хотел выяснить, существует ли правильный баланс степени сжатия вместе с другими параметрами (при сохранении), которые могут сделать артефакты менее заметными. Я отредактировал мой вопрос с образцами.
Armfoot
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.