Чи зменшення масштабів поступово пошкодить якість?


10

Чи не буде різниці в якості фотографії, коли растр зменшується на 75% один раз , на відміну від зменшення на 50% двічі ? В обох випадках остаточний розмір буде однаковим: 25% від оригіналу.

Причина, яку я запитую, полягає в тому, що іноді мені хочеться зменшити масштаб зображення, яке, на мою думку, було зменшено раніше. Я ненавиджу CTRL + Z (скасувати) сто разів до стану, коли зображення було у вихідному розмірі. Якщо остаточна якість не впливає, я б просто змінив масштаб зображення прямо там і далі.


1
Я припускаю, що ви маєте на увазі "50% один раз проти 25% двічі"? Тим не менш , (100%-75%)*(100%-75%) != 50%. Але я вважаю, що я знаю, що ви маєте на увазі, і відповідь на це "ні", і ви насправді не зможете сказати різницю, якщо така є.
Mateen Ulhaq

2
Не відповідь, а можливе рішення вашої проблеми в ⁋2: якщо можливо, перетворіть шар, який ви збираєтеся змінити, в Smart Object, його можна масштабувати вперед і назад без жодних наслідків для якості оригінального файлу.
Ярі Кейненен

1
@muntoo Відредаговано, щоб сказати 75% один раз і 50% двічі. 25% вдвічі насправді більше 50% одного разу.
JoJo

Відповіді:


10

Це вікі спільноти, тому ви можете виправити цю страшну страшну публікацію.


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:

Оригінал Масштаб x1 Невеликий розмір x10 Збільшити масштаб x1 Збільшити масштаб x10

Як бачимо, Super Sampling "розмиває" його, якщо застосовується кілька разів. Це "добре", якщо ви робите одну зменшену шкалу. Це погано, якщо ви робите це поступово.


* Залежно від редактора та формату, це потенційно може змінити значення, тому я простою і називаю його без втрат.


Ви доклали багато зусиль, хале .... + 1
Джек

2
+1 для зусиль ... -1000, якщо ми думаємо, люди, які мислять, ми все це прочитаємо. Я прокрутив пікс :-). І ви зробили свою думку.
Доусон

Чудова відповідь, але я не впевнений, наскільки хорошими прикладами є використання найближчого сусіда або супер вибірки; тим більше, що двостулкова інтерполяція є Photoshop за замовчуванням. Також я читав зворотнє під час збільшення зображення: ступінчасте збільшення дає дещо кращі результати, ніж збільшення в одну зупинку: photo.stackexchange.com/a/3985/1913 Чому це не може бути зменшенням?
Jari Keinänen

1
@koiyu Bicubic гірше, ніж Supersampling, IIRC. Під час зменшення масштабу зображення втрачає дані. [Не зовсім вірно, але:] Більшість алгоритмів зниження масштабів призначені для втрати цих даних, видаляючи при цьому неприємність найближчого сусіда, створюючи трохи розмивання країв. Це розмивання посилюється. [Здогадайтесь] Якщо зображення збільшується, воно «рекурсивно» покращується. Надіюсь, існує алгоритм, в якому ця рекурсивна якість, хоча і дорога в процесорі, створює меншу розмитість у зображенні, ніж при
збільшенні масштабів

Прокляття за видалення моїх зображень після бездіяльності. Хтось знає службу, в якій зображення є "постійними"?
Mateen Ulhaq

5

JoJo запитує про якість. Більшість відповідей стосуються точності пікселів , що для дизайнера чи навіть фотографа не має значення.

Якість - це міра того, наскільки переконливий і приємний кінцевий результат, а не наскільки він "точний". Як чудовий випадок, клонування або вміст, що знає вміст, замінюють небажані частини зображення правдоподібними пікселями: вони виглядають правильно, але їх точно не можна вважати точними.

У Photoshop головна практична різниця між зменшенням поступово та зменшенням розміру за один кадр полягає в тому, що це займає значно більше часу. Якщо ви заряджаєте за годину, то неодмінно йдіть 1% за раз. Якщо ні, зменшіть розмір в один кадр. Зробіть спочатку зображення розумним об’єктом, якщо ви хочете пізніше зробити більшу версію.

Незалежно від того, яким алгоритмом ви користуєтесь (і коментар Доусона щодо цих алгоритмів мертвий - вони дивовижні), зменшення розміру викидає пікселі. Алгоритм віднімає пікселі та модифікує інші, вгадуючи, як зробити так, щоб вони виглядали правильно. Хороший алгоритм робить хороші здогади; це дає вам результат, який виглядає переконливо, але він не є точним у будь-якому змістовному сенсі. Чесно, точно - крім кольору! - це не те, що ви шукаєте, якщо ви не вчений, і в цьому випадку ви, мабуть, не були б зменшеними в першу чергу.

Зображення, зменшене розміром за допомогою звичайного бікубічного алгоритму, часто отримує вигоду від невеликої різкості, але якщо ви створюєте jpegs для Інтернету, точність збільшить розмір файлу.

Правильна якість дизайну - це якість, яка вам потрібна для вашого кінцевого продукту. Все, що перевищує це, додає вашій роботі час, але не цінний.

[Редагувати: Оскільки згадувалося про розширення коію відродження цього питання. Я додав деякі коментарі з цього приводу.]

Існує думка, що якщо ви збільшите зображення невеликими кроками, на відміну від одного гігантського стрибка, ви отримаєте дещо кращий ("трохи менше поганого" буде більш точним) результат. Скотт Келбі просував цю ідею кілька років тому, і, можливо, це було правдою, як у PS 7. Я не бачив нічого, що переконувало би мене, що це правильно сьогодні. Це не виявилося в моїх власних тестах, ще навколо PS CS2 та 3, але треба сказати, що я не витрачав на них багато часу.

Я не витрачав час на глибоке тестування, оскільки незначна різниця між "погіршеною якістю зображення" та "трохи менш погіршеною якістю зображення" не має жодної практичної цінності: не застосовується. У моїй роботі моє просте правило: "Не збільшуйте розмір". Що стосується практичності дизайнерських робіт, зображення, яке є занадто низькою роздільною здатністю для певної мети, завжди виглядає краще, оскільки воно є тим самим зображенням, яке має «більший розмір» до «правильної» роздільної здатності будь-якого процесу, який я трапляються, включаючи фрактальну та бікубічну варіації.


"Якщо ви заряджаєте за годину, то неодмінно йдіть за 1% за один раз." ... Неортодоксальний? :)
Mateen Ulhaq

BTW, чи не сприймається «розмиття», зроблене алгоритмами зниження масштабу?
Mateen Ulhaq

Бікубік не розмивається за наміром, але незначне пом'якшення є загальним артефактом. Коли це відбувається, скромна загостреність це фіксує.
Алан Гілбертсон

1
@muntoo: "Якщо ви заряджаєте за годину ..." - це легкий сарказм, який часто зустрічається в дискусіях про проектні робочі процеси, підкреслюючи, що неефективне і марнотратне використання робочого часу є неефективним і марним.
Алан Гілбертсон

+1 Багато хороших шматочків: "Якість - це міра того, наскільки переконливим і приємним є кінцевий результат, а не тим, наскільки" точним "він є", "точним ... - це не те, чого ви шукаєте, якщо ви не науковець "," незначна різниця між "погіршеною якістю зображення" та "трохи менш погіршеною якістю зображення" не має практичного значення "
Farray

3

Зазвичай багаторазове масштабування зменшить якість від одного масштабування до остаточного розміру, але часто різниця буде мінімальною. Зокрема, масштабування менших за точними співвідношеннями, як-от ваш приклад (2: 1, 2: 1) проти (4: 1), матиме дуже малу деградацію порівняно з одиничним масштабуванням. Найкраще, звичайно, зробити всі модифікації з найвищою роздільною здатністю, а потім в кінці лише один раз. Коли точне масштабування спочатку не відомо, можна зробити серію тестових шкал, щоб знайти потрібний розмір, потім відзначити розмір, відкинути тестове зображення і виконати одиночне масштабування такого розміру від оригіналу.


1
Ви кажете, що інкрементальне масштабування гірше, але чи є теоретичний доказ?
JoJo

1
Я щойно взяв скріншот моєї настройки мультимонітора, а потім використав Photoshop для масштабування однієї версії до 25%, а однієї 50, а потім 50. Два результати були однаковими в пікселях. Я був здивований
horatio

@Jojo: У мене немає теоретичного доказу (і доказ залежав би від того, який із декількох алгоритмів інтерполяції використовувався в масштабуванні). Я думаю, ви могли це практично показати: зробіть нетривіальне зображення, скажімо, 400x400, масштабуйте його до 380px, що до 360, і що до 340. Порівняйте його з масштабуванням від оригіналу до 340px. Я цього не пробував, але думаю, що буде щось більше розмиття, хоча це може бути не все, що візуально сприймається. Зверніть увагу, що запропоноване масштабування не використовує приємних співвідношень.
mgkrebbs

1
Я зробив вправу. Ось 1-масштабна версія і ось 3-кратна версія . Ви можете побачити втрату деталей у тонких лініях нижньої середини. Зі збільшенням можна побачити подібне у багатьох місцях. Це була кубічна інтерполяція через Gimp, і використовували файли PNG, щоб уникнути стиснення втрат.
mgkrebbs

1

Це питання ДУЖЕ! ... Я думаю, що ми все занадто технічні.

100 x 100 піксельних зображень = 10000 загальних пікселів

Масштабування зображення вниз витягує пікселі. Масштабування додає їх. У будь-якому випадку програмне забезпечення сприймає "освічені здогадки" щодо зміни файлу.

Одне зменшення: 90 x 90 (1900 пікселів видалено з вихідної інформації про файл)

2 Крок зменшення: 95 x 95 (вилучено 975 пікселів), 90 x 90 (ще 925). Тут слід детально назвати інформацію про загальну кількість вилучених 1900 пікселів - 975 з них НЕ були частиною вихідної інформації .

Оригінальне зображення завжди найкраще. Менше «поколінь» завжди прирівнюється до кращої якості (найближчої до початкової якості).

ДОКАЗАННЯ (і відповідь на коментар @ mutoo)

введіть тут опис зображення

Це просто ... це алгоритм ... це не набір людських очей. Тут є 3 кольори. 100% чорний, 50% чорний і білий (зображення сірого масштабу). Як би я не масштабував - меню розміру зображення, інструмент перетворення, RGB, CMYK, 100 x 100 пікселів, 10 х 10 дюймів, результати однакові:

Уздовж чорного / сірого краю ви знайдете 80% чорного (колір, який не існує). Уздовж білого / сірого краю ви знайдете 7% чорного (не існує). [тут не запрошення для аргументу проти псевдоніму]

Як ми всі знаємо (будучи людиною, і все), ідеальне зменшення чи збільшення збільшило б чорно-сіру / білу смугасту коробку. І я все-таки виявив, що одна ітерація (вгору чи вниз) створювала кращу репліку, ніж множина.


Частина про "НЕ частина вихідної інформації" не зовсім коректна. Наприклад, алгоритм "Найближчий сусід" ніколи не змінює значення пікселів; він видаляє лише вибрані пікселі. Зрештою, "неправильні пікселі" починають видалятися через цілі помилки округлення, тому якість погіршується. Тим більше "кращі" алгоритми можуть поєднувати кольори пікселів, а деякі алгоритми масштабування піксельних зображень можуть навіть приймати "здогадки". Це призводить до розмивання, що бажано, коли ви робите одну шкалу вниз, але не кратну.
Mateen Ulhaq

[продовження] Найближчий сусід все-таки гірший: він видаляє "неправильні пікселі" і робить ваше зображення схожим на справді дивну сходи (вид зверху).
Mateen Ulhaq

Повертає мене до моїх днів фотоапаратів - збирайте / знімайте його потрібного розміру для найкращого відтворення. Великий реквізит для людей, які пишуть ці алгоритми ... "Давайте створимо ОДНУ річ, яка обробить ВСЕ, і зробить це справді добре 99% часу". <- досить хардкор, серйозно.
Доусон

-1

Напевно, так, але в більшості випадків ви навіть не зможете помітити різницю.

Редагувати: Я бачу, що людям не подобається моя відповідь :). Може тому, що це просто. ІМХО, це не робить його менш правдивим. Ну… доведіть мене неправильно :).

Редагувати 2: Я хотів би відповісти короткою, але… :)

Питання: Чи буде різниця в якості, коли растр зменшується на 75% один раз, а не зменшується на 50% двічі? В обох випадках остаточний розмір буде однаковим: 25% від оригіналу.

A:

  1. "Найімовірніше, так", - погляньте на повідомлення muntoo. Він каже, що кожен крок інтерполяції вносить деякі незначні помилки. Вони є помилками округлення або представлення, і вони можуть сприяти погіршенню якості. Простий висновок: більше кроків, більше можлива деградація. Тож "найімовірніше" зображення втратить якість під час кожного кроку масштабування. Більше кроків - більш можлива деградація якості. Тож зображення "найімовірніше" буде приниженим, якщо його масштабувати в два рази, ніж в одному. Втрати якості не впевнені - наприклад, візьміть суцільне кольорове зображення, але як часто будь-який дизайнер може масштабувати подібні зображення?

  2. "але в більшості випадків ви навіть не зможете помітити різницю" - знову ж таки - повідомлення muntoo. Наскільки великі потенційні помилки? У його прикладах є зображення, що не в 2, а в 75 кроків, а зміни якості помітні, але не є різкими. За 75 кроків! Що відбувається, коли зображення зменшується до 25% в Ps CS4 (бікубічний, зразок muntoo, масштабується відповідно в один і два етапи)?

за один крок в два кроки

Хтось може побачити різницю? Але різниця є:

#: gm compare -metric mse one-step.png two-step.png Image Difference (MeanSquaredError):
           Normalized    Absolute
          ============  ==========
     Red: 0.0000033905        0.0
   Green: 0.0000033467        0.0
    Blue: 0.0000033888        0.0
   Total: 0.0000033754        0.0

І їх можна помітити, якщо вони правильно позначені (нім. Порівняти -вігр. Фіолетовий -файл. Diff.png one-step.png two-step.png):

різниця між одно- та двоступеневим масштабуванням

1 і 2 дає мою відповідь, яку я сподівався тримати коротко, оскільки інші були досить досконалими;).

Це воно! :) Судіть самі.


1
-1 тому, що це не справжня відповідь. "напевно, так" ... на основі чого ? "Ви не зможете помітити різницю" ... цей сайт із забезпечення якості орієнтований на професіоналів-дизайнерів , які є саме тими людьми, які помітять незначні відмінності у зображеннях. Якщо ви видалите непідтримувану теорію та непідтримуване твердження, іншого вмісту у вашій публікації немає.
Farray

Виходячи з мого досвіду. Ви пробували? Хороший професіонал знає, коли використовувати апроксимацію, а не намагатися порахувати, чи колір відрізняється на частку відсотків :)
thebodzio

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

1
Розробка @thebodzio справді допомогла цій відповіді - і оскільки низовики не є постійними, я видалив свою.
Jari Keinänen
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.