Це вікі спільноти, тому ви можете виправити цю страшну страшну публікацію.
Grrr, без LaTeX. :) Гадаю, мені просто доведеться зробити все можливе.
Визначення:
У нас з'явилося зображення (PNG або інший формат * без втрат) на ім'я A розміром A x від A y . Наша мета - масштабувати його на p = 50% .
Зображення ( «масив») B буде «безпосередньо масштабується» версія А . Він матиме B s = 1 кількість кроків.
A = B B s = B 1
Зображення ( «масив») C буде «поступово масштабируются» версія А . Він матиме C s = 2 кількість кроків.
A ≅ C C s = C 2
Веселі речі:
A = B 1 = B 0 × p
C 1 = C 0 × p 1 ÷ C s
A ≅ C 2 = C 1 × p 1 ÷ C s
Чи бачите ви ці дробові сили? Вони теоретично погіршать якість з растровими зображеннями (растри всередині векторів залежать від реалізації). Скільки? Ми розберемося далі ...
Хороші речі:
C e = 0, якщо p 1 ÷ C s ∈ ℤ
C e = C s, якщо p 1 ÷ C s ∉ ℤ
Де e представляє максимальну помилку (найгірший сценарій) через цілі помилки округлення.
Тепер все залежить від алгоритму зниження масштабу (Super Sampling, Bicubic, Lanczos sample, Найближчий сусід тощо).
Якщо ми використовуємо Найближчий сусід ( найгірший алгоритм будь-якої якості), "справжня максимальна помилка" ( C t ) буде дорівнює C e . Якщо ми використовуємо будь-який з інших алгоритмів, він ускладнюється, але це не буде так погано. (Якщо ви хочете отримати технічне пояснення, чому це не буде так погано, як Найближчий сусід, я не можу дати вам одну причину - це лише здогадка. ПРИМІТКА: Ей, математики! Виправте це!)
Любіть свого ближнього:
Зробимо «масив» зображень D з D x = 100 , D y = 100 і D s = 10 . p - все одно: p = 50% .
Найближчий сусідній алгоритм (я знаю жахливе визначення):
N (I, p) = mergeXYDuplicates (floorAllImageXYs (I x, y × p), I) , де множуються лише самі x, y ; не їхні кольорові (RGB) значення! Я знаю, що ти не можеш це зробити з математики, і саме тому я не ЛЕГЕНДАРНИЙ МАТЕМАТИК пророцтва.
( mergeXYDuplicates () зберігає лише найменший / лівий-самий x, y "елементи" у вихідному зображенні I для всіх знайдених дублікатів, а відкидає решту.)
Візьмемо випадковий піксель: D 0 39,23 . Потім застосовуйте D n + 1 = N (D n , p 1 ÷ D s ) = N (D n , ~ 93,3%) знову і знову.
c n + 1 = підлога (c n × ~ 93,3%)
c 1 = підлога ((39,23) × ~ 93,3%) = підлога ((36,3,21,4)) = (36,21)
c 2 = підлога ((36,21) × ~ 93,3%) = (33,19)
c 3 = (30,17)
c 4 = (27,15)
c 5 = (25,13)
c 6 = (23,12)
c 7 = (21,11)
c 8 = (19,10)
c 9 = (17,9)
c 10 = (15,8)
Якби ми зробили просту шкалу лише один раз, ми мали б:
b 1 = підлога ((39,23) × 50%) = підлога ((19,5,11,5)) = (19,11)
Порівняємо b і c :
b 1 = (19,11)
c 10 = (15,8)
Це помилка (4,3) пікселів! Спробуємо це з кінцевими пікселями (99,99) та врахуємо фактичний розмір помилки. Я більше не буду займатися тут математикою, але скажу вам, що це (46,46) , помилка (3,3) від того, що має бути, (49,49) .
Давайте поєднаємо ці результати з оригіналом: "реальна помилка" дорівнює (1,0) . Уявіть, якщо це відбувається з кожним пікселем ... це може призвести до зміни. Хм ... Ну, мабуть, є кращий приклад. :)
Висновок:
Якщо ваше зображення спочатку має великі розміри, воно насправді не має значення, якщо ви не зробите кілька масштабів зменшення розміру (див. "Приклад реального світу" нижче).
Це погіршується на максимум один піксель на поступовий крок (вниз) у Найближчому сусіді. Якщо ви зробите десять зменшених масштабів, ваш образ буде дещо погіршений у якості.
Приклад із реального світу:
(Клацніть на ескізи для збільшення зображення.)
Зменшення масштабу на 1% поступово, використовуючи Super Sampling:

Як бачимо, Super Sampling "розмиває" його, якщо застосовується кілька разів. Це "добре", якщо ви робите одну зменшену шкалу. Це погано, якщо ви робите це поступово.
* Залежно від редактора та формату, це потенційно може змінити значення, тому я простою і називаю його без втрат.
(100%-75%)*(100%-75%) != 50%. Але я вважаю, що я знаю, що ви маєте на увазі, і відповідь на це "ні", і ви насправді не зможете сказати різницю, якщо така є.