Это не гарантируется, но это может случиться. Особенно, если вы достаточно долго повторяете процесс кодирования -> декодировать -> кодировать -> декодировать, то он, в конечном счете, опустится на фиксированную точку и перестанет проигрывать качество (если вы придерживаетесь того же качества и того же кодера).
кодирование JPEG выполняется в несколько этапов:
- RGB для преобразования YUV
- DCT (изменение в частотной области)
- Квантование (выбрасывание биты DCT)
- Сжатие без потерь
И декодирование - это тот же процесс назад.
Шаги 1 и 2 имеют ошибки округления (особенно в кодировках с оптимизацией по скорости с использованием целочисленной математики), поэтому для идемпотентного повторного кодирования вам должно быть повезло, чтобы ошибки кодирования и декодирования были небольшими или отменяли друг друга.
Шаг 3, который является основным шагом с потерями, на самом деле является идемпотентным. Если ваши декодированные пиксели преобразуются в аналогичный достаточно DCT, он будет квантовать на одни и те же данные снова!
JPEG XR также использует YUV, поэтому он может испытывать некоторые ошибки округления, но OTOH вместо DCT использует другое преобразование, которое может быть вычислено без ошибок округления, поэтому должно быть проще округлить JPEG-XR, чем другие форматы.
Я не знаю точно, но я не стал бы рассчитывать на это. Особенно между разными двигателями. Даже при использовании одного двигателя приближения, которые могут иметь место, могут не приводить к тому же региону при применении дважды. –
Я бы сказал, нет. После каждого кодирования в jpeg будет больше «потеря». – leppie