Заявление mattdm " о том, что размытие в значительной степени обратимо, если вы делаете то же самое в обратном порядке ", подняло вопрос в моей голове. Поворот - это геометрическое преобразование изображения, состоящее из пространственного преобразования координат и интерполяции интенсивности. Если поворот не кратен 90 градусам, то алгоритм интерполяции играет решающую роль.
В таких случаях, если мы используем алгоритм интерполяции с усреднением (например, бикубический), операция с потерями *. Но можем ли мы вместо этого использовать другой подход (например, интерполяцию ближайшего соседа) и сделать наше повернутое изображение «не повернутым»?
(*) Это только мое чувство (я до сих пор не могу подтвердить это математическим доказательством): поскольку мы не можем точно знать, какой пиксель внес вклад в значение, мы не можем обратить вспять усреднение. Но я не уверен, что мы не можем использовать вероятностные методы для точной оценки исходных значений.
Хотя мне не хватает необходимых математических навыков, я сам выполнил несколько тестов (с gimp), но после антивращения изображения отличаются:
Тест 1

Рисунок 1 - Исходное изображение (256x256)

Рисунок 2 - Слева направо: а) изображение повернуто на 9,5 градусов по часовой стрелке; б) изображение снова повернуто на 9,5 градусов против часовой стрелки; и в) разница между изображениями. Для этих операций я использовал ближайший сосед интерполяция. Изображения уменьшаются после выполнения операций, чтобы лучше соответствовать макету сайта.
Рисунок 3 - Слева направо: а) изображение повернуто на 9,5 градусов по часовой стрелке; б) изображение снова повернуто на 9,5 градусов против часовой стрелки; и в) разница между изображениями. Для этих операций я использовал бикубическую интерполяцию. Изображения уменьшаются после операций, чтобы лучше соответствовать макету сайта.
Тест 2
Следуя предложению @ unapiedra, я сделал более простой тест: вращение матрицы 2x2. Этот случай неинтересен, поскольку в зависимости от угла все ячейки поворачиваются на один и тот же угол, или ни одна ячейка не поворачивается. То есть вращение всегда без потерь.
Итак, я попытался снова с матрицей 3x3 и поворотом на 30 градусов:

Рисунок 4 - Слева направо: а) исходное изображение; б) изображение повернуто на 30 градусов по часовой стрелке; в) изображение повернуто на 30 градусов против часовой стрелки; г) разница. Изображения увеличены, чтобы соответствовать этому сайту.
В этом случае различия очевидны. Вращение явно с потерями ... Но что произойдет, если я увеличу масштаб до вращения?
Тест 3

Рисунок 5 - Слева направо: а) исходное изображение; б) изображение увеличено в 6 раз; в) увеличенное изображение повернуто на 30 градусов по часовой стрелке; г) изображение повернуто на 30 градусов против часовой стрелки; д) уменьшенное преобразованное изображение; и е) разница (без разницы). Изображения увеличены, чтобы соответствовать этому сайту.
В этом случае я увеличиваю масштаб в 6 раз. Обоснование выбора этого фактора (к сожалению, неверно, как я видел в контрпримере):
Пиксель, повернутый на 30 градусов, имеет координаты снизу слева направо: [0,0] - [0,3660, 1,3660]. То есть самая короткая проецируемая сторона имеет длину 0,36 пикселей. Теорема выборки требует, чтобы мы производили выборку с двойной скоростью.
Таким образом, для точной выборки изображения, повернутого на 30 градусов, я должен дискретизировать каждые 0,17 пикселя, получая коэффициент изменения размера х 5,88; 3 x 5,88 = 17,64, таким образом, я ресамплирую исходное изображение в изображение 18x18.