Czy zmniejszanie stopniowo naruszy jakość?

10

Czy w Photoshopie będzie różnica w jakości, gdy raster zostanie zmniejszony o 75% jeden raz, a nie dwa razy o 50% ? W obu przypadkach ostateczny rozmiar będzie taki sam: 25% oryginału.

Powodem, dla którego pytam, jest to, że czasami chcę zmniejszyć obraz, o którym wiem, że został wcześniej zmniejszony. Nienawidzę konieczności CTRL + Z (cofanie) sto razy do stanu, w którym obraz był w oryginalnym rozmiarze. Jeśli nie wpłynie to na ostateczną jakość, wolę po prostu przeskalować obraz tam i teraz.

JoJo
źródło
1
Zakładam, że masz na myśli „50% raz kontra 25% dwa razy”? Nawet tak (100%-75%)*(100%-75%) != 50%. Ale wierzę, że wiem, co masz na myśli, a odpowiedź na to brzmi „nie” i naprawdę nie będziesz w stanie powiedzieć różnicy, jeśli taka będzie.
Mateen Ulhaq
2
Nie jest to odpowiedź, ale możliwe rozwiązanie twojego problemu w ⁋2: jeśli to możliwe, przekonwertuj warstwę, której rozmiar chcesz zmienić, na Inteligentny Obiekt, można go przeskalować tam iz powrotem bez żadnego wpływu na jakość oryginalnego pliku.
Jari Keinänen
1
@muntoo Zredagowano, aby powiedzieć 75% raz i 50% dwa razy. 25% dwa razy jest tak naprawdę większe niż 50% raz.
JoJo

Odpowiedzi:

10

To wiki społeczności, więc możesz naprawić ten straszny, okropny post.


Grrr, bez LaTeX. :) Chyba będę musiał zrobić co w mojej mocy.


Definicja:

Mamy obraz (PNG lub inny bezstratny format *) o nazwie A o rozmiarze A x od A y . Naszym celem jest skalowanie go o p = 50% .

Obraz („tablica”) B będzie wersją A „skalowanej bezpośrednio” . Będzie miał B s = 1 liczbę kroków.

A = B B s = B 1

Obraz („tablica”) C będzie wersją A „przyrostowo skalowaną” . Będzie miał C s = 2 liczbę kroków.

A ≅ C C s = C 2


The Fun Stuff:

A = B 1 = B 0 × p

C 1 = C 0 × p 1 ÷ C s

A ≅ C 2 = C 1 × p 1 ÷ C s

Czy widzisz te ułamkowe moce? Teoretycznie obniżą jakość obrazów rastrowych (rastry wewnątrz wektorów zależą od implementacji). Ile? Przekonamy się, że dalej ...


Dobre rzeczy:

C e = 0, jeżeli p 1 ÷ C s ∈ ℤ

C e = C s, jeżeli p 1 ÷ C s ∉ ℤ

Gdzie e oznacza błąd maksymalny (najgorszy scenariusz), z powodu błędów zaokrąglania liczb całkowitych.

Teraz wszystko zależy od algorytmu zmniejszania skali (Super Sampling, Bicubic, Lanczos sampling, Nearest Neighbor itp.).

Jeśli używamy najbliższego sąsiada (The worst algorytm cokolwiek o dowolnej jakości), „prawdziwa” błędu maksymalnego ( C t ) będzie równa C e . Jeśli korzystamy z dowolnego innego algorytmu, komplikuje się, ale nie będzie tak źle. (Jeśli chcesz techniczne wyjaśnienie, dlaczego nie będzie tak złe, jak najbliższy sąsiad, nie mogę dać ci jednego, bo to tylko zgadywanie. UWAGA: Hej matematycy! Napraw to!)


Kochaj swojego bliźniego:

Stwórzmy „tablicę” obrazów D o D x = 100 , D y = 100 i D s = 10 . p jest nadal takie samo: p = 50% .

Algorytm najbliższego sąsiada (straszna definicja, wiem):

N (I, p) = scal XXDuplikaty (floorAllImageXYs (I x, y × p), I) , gdzie mnożone są tylko same x, y ; nie ich wartości kolorów (RGB)! Wiem, że tak naprawdę nie możesz tego zrobić z matematyki, i właśnie dlatego nie jestem LEGENDARNYM MATEMATYKIEM proroctwa.

( mergeXYDuplicates () zachowuje tylko najniższe / lewe „ x ” elementy „ x ” w oryginalnym obrazie I dla wszystkich znalezionych duplikatów i odrzuca resztę).

Weźmy losowy piksel: D 0 39,23 . Następnie stosuj D n + 1 = N (D n , p 1 ÷ D s ) = N (D n , ~ 93,3%) w kółko.

c n + 1 = podłoga (c n × ~ 93,3%)

c 1 = podłoga ((39,23) × ~ 93,3%) = podłoga ((36,3 21,4)) = (36,21)

c 2 = podłoga ((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)

Gdybyśmy tylko raz dokonali prostej skali, mielibyśmy:

b 1 = podłoga ((39,23) × 50%) = podłoga ((19,5,11,5)) = (19,11)

Porównajmy b i c :

b 1 = (19,11)

c 10 = (15,8)

To błąd (4,3) pikseli! Spróbujmy tego z końcowymi pikselami (99,99) i uwzględnij rzeczywisty rozmiar błędu. Nie powtórzę tutaj całej matematyki, ale powiem ci, że staje się (46,46) , błędem (3,3) w stosunku do tego, co powinno być, (49 , 49) .

Połączmy te wyniki z oryginałem: „prawdziwy błąd” to (1,0) . Wyobraź sobie, że dzieje się tak z każdym pikselem ... może to mieć znaczenie. Hmm ... Cóż, prawdopodobnie jest lepszy przykład. :)


Wniosek:

Jeśli obraz ma początkowo duży rozmiar, nie będzie miał znaczenia, chyba że wykonasz wiele pomniejszeń (patrz „Przykład z prawdziwego świata” poniżej).

Pogarsza się maksymalnie o jeden piksel na krok przyrostowy (w dół) w Najbliższym sąsiedztwie. Jeśli wykonasz dziesięć pomniejszeń, twój obraz będzie nieco gorszej jakości.


Przykład ze świata rzeczywistego:

(Kliknij na miniatury, aby powiększyć).

Skalowanie zmniejszane o 1% przyrostowo za pomocą Super Sampling:

Oryginalny Zmniejszono x1 Zmniejszono x10 Powiększ w zmniejszonej skali x1 Powiększ w zmniejszonej skali x10

Jak widać, Super Sampling „rozmywa” je, jeśli zastosowano je kilka razy. Jest to „dobre”, jeśli wykonujesz jedną przeskalowanie. Jest to złe, jeśli robisz to stopniowo.


* W zależności od edytora i formatu może to potencjalnie coś zmienić, więc upraszczam i nazywam to bezstratnym.

muntoo
źródło
zrobiłeś dużo wysiłku lol .... + 1
Jack
2
+1 za wysiłek ... -1000 za myślenie, że nasi artyści przeczytają to wszystko. Przewinąłem do pix :-). I masz rację.
Dawson
Świetna odpowiedź, ale nie jestem pewien, jak dobre przykłady wykorzystują najbliższego sąsiada lub supersamplowanie; zwłaszcza, że ​​interpolacja dwuububowa jest domyślna w Photoshopie. Przeczytałem też odwrotną stronę podczas powiększania obrazu: powiększanie stopniowe daje nieco lepsze wyniki niż powiększanie one-stop: photo.stackexchange.com/a/3985/1913 Dlaczego nie byłoby tak w przypadku zmniejszenia?
Jari Keinänen,
1
@koiyu Bicubic jest gorszy niż Supersampling, IIRC. Podczas zmniejszania obrazu obraz traci dane. [Nie do końca prawda, ale:] Większość algorytmów skalowania w dół ma na celu utratę tych danych przy jednoczesnym usuwaniu krawędzi wywoływanych przez najbliższego sąsiada przez „rozmycie” krawędzi. To rozmycie sumuje się. [Zgadnij] Jeśli obraz jest powiększany, poprawiany jest „rekurencyjnie”. Założę się, że istnieje algorytm (y), w których ta rekurencyjna jakość, choć droga w procesorze, powoduje mniej rozmycia obrazu niż w przypadku jednoczesnego skalowania. [/ Zgadnij]
Mateen Ulhaq
Przeklnij imgur za usunięcie moich zdjęć po bezczynności. Czy ktoś zna usługę, w której obrazy są „trwałe”?
Mateen Ulhaq,
5

JoJo pyta o jakość. Większość odpowiedzi dotyczy dokładności pikseli , co nie ma żadnego znaczenia dla projektanta, a nawet fotografa.

Jakość jest miarą tego, jak przekonujący i przyjemny jest wynik końcowy, a nie „dokładność”. Dobrym przykładem jest tutaj klonowanie lub uzupełnianie zawartości zastępujące niechciane części obrazu prawdopodobnymi pikselami: wyglądają dobrze, ale z pewnością nie można ich uważać za dokładne.

W Photoshopie główna praktyczna różnica między zmniejszaniem przyrostowym a zmniejszaniem w jednym ujęciu polega na tym, że zajmuje to znacznie więcej czasu. Jeśli pobierasz opłatę za godzinę, na pewno idź 1% na raz. Jeśli nie, zmniejsz rozmiar w jednym ujęciu. Najpierw ustaw obraz jako Inteligentny obiekt, na wypadek gdybyś chciał później stworzyć większą wersję.

Bez względu na używany algorytm (a komentarz Dawsona na temat tych algorytmów jest martwy - są niesamowite), zmniejszenie rozmiaru powoduje wyrzucenie pikseli. Algorytm odejmuje piksele i modyfikuje inne, zgadując, jak sprawić, by wyglądały prawidłowo. Dobry algorytm dobrze zgaduje; daje efekt, który wygląda przekonująco, ale nie jest dokładny w żadnym sensownym znaczeniu. Szczerze mówiąc, dokładny - inny niż kolor! - nie jest tym, czego szukasz, chyba że jesteś naukowcem, w którym to przypadku prawdopodobnie nie zmniejszyłby się w pierwszej kolejności.

Obraz, który został zmniejszony przy użyciu zwykłego algorytmu bicubic, często korzysta z odrobiny wyostrzania, ale jeśli tworzysz pliki JPEG dla Internetu, wyostrzanie zwiększy rozmiar pliku.

Prawidłowa jakość projektu to jakość, której potrzebujesz do produktu końcowego. Wszystko, co wykracza poza to, dodaje czasu, ale nie wartości, do twojej pracy.

[Edycja: Odkąd wzmianka o rozszerzeniu w odrodzeniu tego pytania przez koiyu. Dodałem kilka komentarzy na ten temat.]

Istnieje pomysł, że jeśli poprawisz obraz małymi krokami, w przeciwieństwie do jednego gigantycznego skoku, otrzymasz nieco lepszy („nieco mniej zły” byłby dokładniejszy) wynik. Scott Kelby promował ten pomysł kilka lat temu i być może było to prawdą od PS 7. Nie widziałem niczego, co przekonałoby mnie, że jest poprawne dzisiaj. Nie sprawdziłem się w moich własnych testach, z powrotem wokół PS CS2 i 3, ale trzeba powiedzieć, że nie marnowałem na nich dużo czasu.

Nie spędzałem czasu na dokładnych testach, ponieważ niewielka różnica między „obniżoną jakością obrazu” a „nieco mniejszą jakością obrazu” nie ma praktycznej wartości: żadna z nich nie jest użyteczna. W mojej własnej pracy moja prosta zasada brzmi: „Nie powiększaj”. Ze względu na praktyczność w pracach projektowych obraz, który ma nieco zbyt niską rozdzielczość do określonego celu, zawsze lepiej wygląda tak, jak jest, niż ten sam obraz „powiększony” do „poprawnej” rozdzielczości w dowolnym procesie natknąć się, w tym na fraktale i odmiany dwuububowe.

Alan Gilbertson
źródło
„Jeśli pobierasz opłatę za godzinę, idź za każdym razem 1%”. ...Nie ortodoksyjny? :)
Mateen Ulhaq,
BTW, czy postrzegane „rozmycie” nie jest wykonywane celowo przez algorytmy zmniejszania skali?
Mateen Ulhaq,
Bicubic nie rozmywa się z intencji, ale lekkie zmiękczenie jest powszechnym artefaktem. Kiedy to nastąpi, skromne wyostrzenie go naprawia.
Alan Gilbertson,
1
@muntoo: „Jeśli pobierasz opłatę za godzinę ...” to łagodny sarkazm, który jest powszechny w dyskusjach na temat przepływów pracy projektowej, aby podkreślić, że nieefektywne i marnotrawne wykorzystanie czasu pracy jest zarówno nieefektywne, jak i marnotrawione.
Alan Gilbertson,
+1 Wiele dobrych bitów: „Jakość jest miarą tego, jak przekonujący i satysfakcjonujący jest wynik końcowy, a nie jak„ dokładny ”.”, „Dokładny ... nie jest tym, czego szukasz, chyba że jesteś naukowiec ”,„ niewielka różnica między „pogorszoną jakością obrazu” a „nieznacznie mniejszą jakością obrazu” nie ma żadnej praktycznej wartości ”
Farray,
3

Zasadniczo wielokrotne skalowanie obniży jakość w trakcie pojedynczego skalowania do ostatecznego rozmiaru, ale często różnica będzie minimalna. W szczególności skalowanie mniejsze o dokładne proporcje, takie jak przykład (2: 1, 2: 1) w porównaniu z (4: 1), będzie miało bardzo małą degradację w porównaniu do pojedynczego skalowania. Oczywiście najlepiej jest wykonywać wszystkie modyfikacje w najwyższej rozdzielczości, a następnie skalować tylko raz na końcu. Kiedy dokładne skalowanie nie jest początkowo znane, można wykonać serię testowych skalowań, aby znaleźć odpowiedni rozmiar, a następnie zanotować rozmiar, wyrzucić obraz testowy i wykonać pojedyncze skalowanie do tego rozmiaru z oryginału.

mgkrebbs
źródło
1
Mówisz, że skalowanie przyrostowe jest gorsze, ale czy istnieje dowód teoretyczny?
JoJo
1
Właśnie zrobiłem zrzut ekranu z konfiguracją wielu monitorów, a następnie użyłem Photoshopa, aby przeskalować jedną wersję do 25%, a jedną 50, a następnie 50. Dwa wyniki były identyczne pod względem pikseli. Byłem zaskoczony
horatio
@Jojo: Nie mam teoretycznego dowodu do zaoferowania (i dowód zależy od tego, który z kilku algorytmów interpolacji został użyty w skalowaniu). Myślę, że możesz to praktycznie pokazać: zrób nietrywialny obraz, powiedzmy 400x400, przeskaluj go do 380px, to do 360, a to do 340. Porównaj to z jednym skalowanym z oryginału do 340px. Nie próbowałem tego, ale myślę, że nastąpi większe rozmycie, chociaż może nie być wcale tak widoczne. Zauważ, że sugerowane skalowanie nie używa dobrych proporcji.
mgkrebbs
1
Zrobiłem ćwiczenie. Oto wersja 1-skalowa, a tutaj wersja skalowana 3x . Utratę szczegółów widać w cienkich liniach w dolnej środkowej części. Dzięki powiększeniu możesz zobaczyć podobne w wielu miejscach. Była to interpolacja sześcienna przez Gimp i wykorzystywała pliki PNG, aby uniknąć stratnej kompresji.
mgkrebbs,
1

To pytanie jest NIESAMOWITE! ... Myślę, że wszyscy stajemy się zbyt techniczni.

Obraz 100 x 100 pikseli = 10000 pikseli ogółem

Skalowanie obrazu w dół powoduje wyciągnięcie pikseli. Skalowanie dodaje je. Tak czy inaczej, oprogramowanie „zgaduje”, jak zmienić plik.

Pojedyncza redukcja: 90 x 90 (1900px usunięto z informacji o oryginalnym pliku)

Zmniejszenie o 2 stopnie : 95 x 95 (usunięto 975 pikseli), 90 x 90 (kolejne 925). Szczegóły, które można tutaj złapać, to całkowita usunięta 1900 pikseli - 975 z nich NIE było częścią oryginalnej informacji .

Oryginalny obraz jest zawsze najlepszy. Mniej „generacji” zawsze oznacza lepszą jakość (najbliższą jakości pierwotnej).

DOWÓD (i odpowiedź na komentarz @ mutoo)

wprowadź opis zdjęcia tutaj

To proste ... to algorytm ... to nie jest zestaw ludzkich oczu. Są tutaj 3 kolory. 100% czerni, 50% czerni i bieli (obraz w skali szarości). Bez względu na to, jak go skaluję - menu rozmiaru obrazu, narzędzie do przekształcania, RGB, CMYK, 100 x 100px, 10 x 10 cali, wyniki są takie same:

Wzdłuż czarnej / szarej krawędzi znajduje się 80% czerni (kolor, który nie istnieje). Wzdłuż białej / szarej krawędzi znajduje się 7% czerni (nie istnieje). [tutaj nie jest zaproszenie do argumentu antyaliasowego]

Jak wszyscy wiemy (będąc człowiekiem i wszystkim), idealne zmniejszenie lub powiększenie dałoby pudełko w paski czarno-szaro-białe. Nadal odkryłem, że jedna iteracja (w górę lub w dół) stworzyła lepszą replikę niż wiele.

Dawson
źródło
Część o „NIE części oryginalnej informacji” nie jest całkowicie poprawna. Na przykład algorytm Najbliższego sąsiada nigdy nie zmienia wartości pikseli; usuwa tylko wybrane piksele. W końcu „nieprawidłowe piksele” zaczynają być usuwane z powodu błędów zaokrąglania liczb całkowitych, więc jakość pogarsza się. Tymczasem „lepsze” algorytmy mogą mieszać kolory pikseli, a niektóre algorytmy skalowania grafiki pikseli mogą nawet przyjmować „domysły”. Prowadzi to do rozmycia, co jest pożądane przy zmniejszaniu pojedynczej skali, ale nie wielokrotności.
Mateen Ulhaq,
[ciąg dalszy] Najbliższy sąsiad jest jeszcze gorszy: usuwa „złe piksele” i sprawia, że ​​twój obraz wygląda jak naprawdę dziwne schody (widok z góry).
Mateen Ulhaq,
Zabiera mnie z powrotem do moich dni ze statystykami - zbuduj go / zrób zdjęcie w takim rozmiarze, jakiego potrzebujesz, aby uzyskać najlepszą możliwą reprodukcję. Wielkie rekwizyty dla ludzi, którzy piszą te algorytmy ... „Stwórzmy JEDNĄ rzecz, która przetworzy WSZYSTKO i sprawi, że będzie wyglądać naprawdę dobrze przez 99% czasu”. <- całkiem hardcorowe rzeczy, poważnie.
Dawson
-1

Najprawdopodobniej tak, ale w większości przypadków nawet nie zauważysz różnicy.

Edycja: Widzę, że ludzie nie lubią mojej odpowiedzi :). Może dlatego, że to proste. IMHO, to nie czyni tego mniej prawdą. Cóż… udowodnij, że się mylę :).

Edycja 2: Chciałem, aby moja odpowiedź była krótka, ale… :)

P: Czy w Photoshopie będzie różnica w jakości, gdy raster zostanie zmniejszony o 75% jeden raz, a nie dwa razy o 50%? W obu przypadkach ostateczny rozmiar będzie taki sam: 25% oryginału.

ZA:

  1. „Najprawdopodobniej tak” - spójrz na post muntoo. Mówi, że każdy krok interpolacji wprowadza pewne drobne błędy. Są to zaokrąglenia lub błędy reprezentacyjne i mogą przyczynić się do pogorszenia jakości. Prosty wniosek: więcej kroków, więcej możliwej degradacji. Zatem „najprawdopodobniej” obraz traci jakość podczas każdego kroku skalowania. Więcej kroków - większa możliwa degradacja jakości. Obraz „najprawdopodobniej” ulegnie pogorszeniu, jeśli zostanie skalowany dwa razy niż jeden. Utrata jakości nie jest pewna - na przykład weź obraz w jednolitym kolorze, ale jak często jakiś projektant przeskaluje podobne obrazy?

  2. „ale w większości przypadków nawet nie zauważysz różnicy” - znowu - post muntoo. Jak duże są potencjalne błędy? W jego przykładach są obrazy skalowane nie w 2, ale w 75 krokach, a zmiany jakości są zauważalne, ale nie dramatyczne. W 75 krokach! Co dzieje się, gdy obraz jest skalowany do 25% w Ps CS4 (bicubic, próbka muntoo, skalowana odpowiednio w jednym i dwóch krokach)?

w jednym kroku w dwóch krokach

Czy ktoś widzi różnicę? Ale jest różnica:

#: 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

I można to zobaczyć, jeśli odpowiednio oznaczone (gm porównaj -wyróżnij kolor fioletowy -plik różny.png one-step.png two-step.png):

różnica między skalowaniem jedno- i dwuetapowym

1 i 2 stanowią moją odpowiedź, którą miałem nadzieję krótko powiedzieć, ponieważ inne były dość skomplikowane;).

Otóż ​​to! :) Oceń to sam.

thebodzio
źródło
1
-1, ponieważ nie jest to prawdziwa odpowiedź. „prawdopodobnie tak” ... w oparciu o co ? „Nie zauważysz różnicy” ... ta strona do kontroli jakości jest skierowana do projektantów , którzy są dokładnie tymi osobami, które zauważą niewielkie różnice w obrazach. Jeśli usuniesz nieobsługiwaną teorię i nieobsługiwane twierdzenie, w Twoim poście nie będzie żadnych innych treści.
Farray,
Na podstawie mojego doświadczenia. Próbowałeś tego? Dobry profesjonalista wie, kiedy zastosować przybliżenie zamiast próbować liczyć, jeśli kolor różni się o ułamek procentu :)
thebodzio
Miałem na myśli: czy próbowałeś przeskalować obraz stopniowo i porównać wyniki z obrazem ponownie próbkowanym w jednym kroku? Nie stosowałem się do twojego doświadczenia.
thebodzio
1
Opracowanie @thebodzio naprawdę pomogło w tej odpowiedzi - a ponieważ opinie negatywne nie są trwałe, usunąłem moje.
Jari Keinänen,