Можно ли вращать сжатое изображение JPEG без потери качества?

JPEG-это схема сжатия с потерями,поэтому декомпрессия-манипуляция-рекомпрессия обычно снижает качество изображения для каждого шага. можно ли повернуть изображение JPEG без дальнейших потерь? из того немногого, что я знаю об алгоритме JPEG, наивно кажется возможным избежать дальнейших потерь с небольшим усилием. Какие общие программы обработки изображений (например, GIMP, Paint Shop Pro, Windows Photo Gallery) и графические библиотеки вызывают потерю качества, когда выполнение ротации, а что нет?

10 ответов


Да, это возможно в некоторых случаях: 90-градусные вращения и переворачивания изображений с размерами, кратными 8. Сердце алгоритма JPEG - часть с потерями-включает в себя разбиение изображения на блоки 8x8 пикселей, выполняя дискретное косинусное преобразование на блоке, а затем квантования результата. Существует также некоторое преобразование цветового пространства и сжатие без потерь блоков поверх этого.

вращение или переворачивание блока 8x8 даст DCT с теми же основными коэффициентами, но, возможно, транспонированными и/или с некоторыми изменениями знака в зависимости от преобразования. Таким образом, основные шаги, чтобы повернуть или перевернуть изображение без потерь будет включать в себя:

  1. распаковать и извлечь блоки
  2. транспонировать и / или знак флип коэффициенты DCT для каждого блока
  3. перетасуйте блоки в их новый порядок (в противном случае блоки 8x8 будут повернуты, но все еще на старом месте)
  4. сжимать его все с шагами сжатия без потерь.

существует программа с именем jpegtran

jpegtran-утилита для транскодирования без потерь между различными форматами JPEG.

и вот список приложений, которые предоставляют функцию вращения JPEG без потерь на основе кода IJG


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

также возможно "вручную" (например, программно) повернуть изображение без потерь, если определенные критерии верны - вращение должно быть 90/180 градусов, а ширина/высота должна кратно размеру блока. Вы также можете перевернуть / отразить его. Я не знаю, достаточно ли умны программы изображений для специального случая хотя эта операция. Думаю, нет.


с ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ В ФОРМАТЕ JPEG:

"есть несколько специализированных операции, которые можно выполнить в формате JPEG файл без его распаковки, и таким образом, не подвергая потеря поколений, которую вы обычно получить от загрузки и повторного сохранения изображение в обычном редакторе изображений. В в частности это можно сделать 90-градусные повороты и перевороты без потерь, если размеры изображения кратно файл блок размер (типично 16x16, 16x8, или 8х8 пиксели для цветных jpeg).
...

но вам нужно специальное программное обеспечение; поворот изображения в обычном редакторе изображение не будет без потерь."


не эксперт jpg, но кажется, что ответ будет Да для 90, 180, 270 градусов вращения. (может быть, даже на 360! :))


Да, это возможно.
Быстрый поиск google дал этот список программ что сделать это


согласно превосходной статье на Понимание Интерполяции Цифровых Изображений Шон Макхью:

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

и в конечном итоге завершается

избегайте поворота фотографий, когда это возможно; если выровнено фото требуется это, вращать не более одного раза.


Если вы говорите о вращении изображения JPEG, то дальнейшего сжатия нет? Речь идет о вращающихся местоположениях пикселей.

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


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

Что касается открытия и перекомпрессии, я не уверен, что вы на самом деле получите худшее качество, но тогда я не уверен, как именно работает JPEG.

Я предлагаю вам попробовать сжать, манипулировать и повторно сжать и посмотреть сами, если результат достаточно хорош. Что? достаточно хорошо, при условии вашего заявления.


Если это может помочь :

пытаясь сделать лучше, чем Microsoft (Windows 7) native picture viewer и его параметры поворота Правой Кнопкой Мыши, я попробовал несколько приложений по следующей ссылке:http://jpegclub.org/losslessapps.html

например, я попробовал FastStone Image Viewer, XnView, Photosurfer, JPEG без потерь вращатель, Exifpro Image Viewer.

ни один из них не дает большую картину, чем основной просмотрщик изображений Windows 7 после простого 90° вращение. Это, по общему признанию, ограничено, чтобы закончить так быстро, но я все еще не нашел реального вращения без потерь .jpeg приложение на данный момент, и в любом случае не лучше, чем встроенный Windows one.