Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

Есть программа с именем jpegtran

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

Чтобы повернуть изображение без потерь, вы можете сделать следующее:

$ jpegtran -rotate 180 -perfect -outfile rotated.jpg origin.jpg

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

Ответ 3

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

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

Ответ 4

Из JPEG FAQ:

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

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

Ответ 5

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

Ответ 7

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

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

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

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

Ответ 8

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

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

Ответ 9

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

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

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

Ответ 10

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

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

Например, я попробовал FastStone Image Viewer, XnView, Photosurfer, JPEG Lossless Rotator, ExifPro Image Viewer.

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