Dlaczego oprogramowanie może korygować balans bieli dokładniej dla plików RAW niż w przypadku plików JPEG?


11

Dlaczego korekty balansu bieli JPEG po przetwarzaniu nie są tak dokładne jak balans bieli w przypadku Raw?

Rozumiem, że podczas fotografowania JPEG kamera wykonuje następujące czynności:

  1. Konwertuj nieprzetworzone dane czujnika za pomocą algorytmu (demozaikowanie / debayering).
  2. Konwertuj na przestrzeń liniową

    za. Używanie tabeli przeglądowej odwzorowuje surową wartość na przestrzeń liniową

    b. Poziom czerni dla każdego piksela jest następnie obliczany i odejmowany.

    do. Wartość każdego piksela jest następnie przeskalowywana do 0,0 do 1,0 za pomocą Whitelevel

    re. Skalowane wartości są przycinane do zakresu logicznego od 0,0 do 1,0.

  3. Mapowanie przestrzeni kolorów kamery do przestrzeni CIE XYZ z regulacją balansu bieli

    za. Konwertuj na XYZ (D50) za pomocą CameraToXYZ_D50 = Chromatic_adapatation_matrix * CameraToXYZ_matrix

  4. Konwertuj CIE XYZ na sRGB

    za. Oblicz liniowy RGB za pomocą CIE XYZ na liniową matrycę RGB

    b. Oblicz Rec709 sRGB przy użyciu transformacji krzywej gamma na liniowym RGB

  5. Konwertuj sRGB na 8bit i kompresuj przy pomocy JPEG

Jeśli to prawda, nie rozumiem, dlaczego Jpeg nie mógł skorygować balansu bieli w taki sam sposób jak Raw!

Czy to po prostu ze względu na stratną kompresję JPEG i 32-bitowego pliku tiff nie miałby tego problemu?

wprowadź opis zdjęcia tutaj


1
Co sprawia, że ​​uważasz, że JPEG WB nie jest tak dokładny jak surowy? Co rozumiesz przez dokładne ? Czy masz na myśli, że aparat zwykle nie zgaduje tak dobrze, jak potrafi wykwalifikowany specjalista używający aplikacji do konwersji raw? Albo coś innego?
Michael C,

Mam na myśli to, że jeśli powiem mojemu aparatowi, aby zapisał kopię tego samego obrazu w formacie raw i JPEG, a następnie otworzy je oba w lightroomie i spróbuje zrobić poprawny balans bieli za pomocą próbnika kolorów, klikając dokładnie to samo miejsce na obrazie, surowe okaże się idealne, gdy JPEG nadal ma dziwny kolor.
skyde

2
To jest zupełnie inne pytanie. Zamierzam edytować tytuł, aby odzwierciedlić to, o co myślę, że pytasz ...
Proszę przeczytać mój profil

5
Pierwszy obraz NIE jest „oryginalnym nieprzetworzonym plikiem”. Jest to jedna z nieskończonej liczby interpretacji nieprzetworzonych danych, które twoja aplikacja do konwersji danych nieprzetworzonych wytworzyła i wyświetliła na ekranie w 8-bitach.
Michael C,

2
Prawdopodobnie nie jest to najważniejszy punkt, ale twój krok 2 to tak naprawdę dwa odrębne kroki i nie można ich wykonać w kolejności, w jakiej je prezentujesz (co byłoby dodatkowym sposobem, w jaki WB jest „wypiekane” do ostatecznego JPEG kolor).
junkyardsparkle

Odpowiedzi:


9

Dlaczego oprogramowanie może korygować balans bieli dokładniej dla plików RAW niż w przypadku plików JPEG?

Istnieje zasadnicza różnica między pracą z rzeczywistymi surowymi danymi w celu uzyskania innej interpretacji surowych danych niż początkowa 8-bitowa interpretacja surowego pliku widocznego na ekranie w porównaniu do pracy z 8-bitowym JPEG, w którym cała informacja jest plik jest tym, co widzisz na ekranie.

Kiedy używasz białego klikacza na „surowym” pliku, nie poprawiasz obrazu wyświetlanego na ekranie (który jest jak JPEG 8-bitowy rendering, który jest jedną z wielu możliwych interpretacji danych w surowym pliku obrazu ). Mówisz aplikacji do konwersji raw, aby cofnęła się i ponownie przekonwertowała dane w pliku raw na obraz do wyświetlenia przy użyciu innego zestawu mnożników kanałów kolorów.

Tworzysz kolejny obraz z tych samych nieprzetworzonych danych, które zostały użyte do utworzenia pierwszej wersji wyświetlanej na ekranie. Ale aplikacja wraca do samego początku i wykorzystuje wszystkie dane w pliku surowym do stworzenia drugiej, odmiennej interpretacji danych surowych w oparciu o różne instrukcje dotyczące sposobu przetwarzania tych danych. To nie zaczyna się od ograniczonej ilości informacji wyświetlanych na ekranie i ich poprawiania. Gdyby tak się stało, uzyskałbyś taki sam wynik jak podczas pracy z JPEG. ¹

Surowy plik zawiera znacznie więcej informacji niż jest wyświetlany na monitorze po „otwarciu” surowego pliku. Surowe pliki obrazów zawierają wystarczającą ilość danych, aby stworzyć prawie nieskończoną liczbę różnych interpretacji tych danych, które zmieszczą się w 8-bitowym pliku JPEG .²

Za każdym razem, gdy otwierasz surowy plik i patrzysz na niego na ekranie, nie wyświetlasz „Surowego pliku”. ³ Oglądasz jedną z niemal niezliczonej liczby możliwych interpretacji danych w surowym pliku. Same surowe dane zawierają pojedynczą (monochromatyczną) wartość jasności mierzoną przez każdy dołek piksela. W przypadku zamaskowanych czujników aparatu Bayer (zdecydowana większość kolorowych aparatów cyfrowych korzysta z filtrów Bayera) każda studnia pikseli ma przed sobą filtr kolorów , który jest albo „czerwony”, „zielony”, albo „niebieski” (rzeczywiste „kolory” filtry w większości masek Bayera są od lekko żółtawo-zielonego do pomarańczowo-żółtego dla „czerwonego”, lekko niebieskawo-zielonego dla „zielonego” i lekko niebieskawo-fioletowego dla „niebieskiego” -kolory te mniej więcej odpowiadają środkowi wrażliwości trzech rodzajów stożków w naszych siatkówkach ). Aby uzyskać pełniejsze omówienie tego, w jaki sposób uzyskujemy informacje o kolorze z pojedynczych wartości jasności mierzonych przy każdym dobrze pikselu, zobacz pliki RAW przechowujące 3 kolory na piksel, czy tylko jeden?

Zmieniając balans bieli surowego pliku, nie wprowadzamy zmian do 8-bitowej interpretacji surowego pliku widocznej na ekranie, wprowadzamy zmiany w sposobie interpretacji liniowych 14-bitowych monochromatycznych nieprzetworzonych danych i następnie wyświetlane na ekranie ze zaktualizowanym balansem bieli.Oznacza to, że w pełni wykorzystujesz 16384 dyskretne monochromatyczne kroki liniowe, które zawiera nieprzetworzony plik dla każdego piksela, a nie 256 dyskretnych kroków z korekcją gamma w trzech kanałach kolorów dla każdego piksela widocznego na 8-bitowym ekranie jako reprezentacja tego surowego pliku. Korzystasz również ze wszystkich innych informacji zawartych w surowych danych obrazu, w tym takich jak zamaskowane piksele i inne informacje, które są odrzucane, gdy plik jest konwertowany na format 8-bitowy, aby wyświetlić go na ekranie.

To, jak będzie wyglądał obraz widziany na monitorze po otwarciu pliku raw, zależy od tego, jak aplikacja użyta do otwarcia pliku interpretuje dane surowe w pliku, aby uzyskać widoczny obraz. Ale to nie jest „jedyny” sposób wyświetlania „oryginalnego pliku raw”. W ten sposób twoja aplikacja - lub kamera, która utworzyła podgląd JPEG dołączony do pliku raw - przetworzyła informacje w pliku raw, aby wyświetlić je na ekranie.

Każda aplikacja ma własny zestaw domyślnych parametrów, które określają sposób przetwarzania nieprzetworzonych danych. Jednym z najważniejszych parametrów jest sposób wyboru balansu bieli używanego do konwersji surowych danych. Większość aplikacji ma wiele różnych zestawów parametrów, które może wybrać użytkownik, który może swobodnie zmieniać indywidualne ustawienia w ramach zestawu instrukcji używanych do początkowej interpretacji danych w surowym pliku. Wiele aplikacji będzie korzystać z mnożników balansu bieli / kanałów kolorów oszacowanych przez aparat (w przypadku korzystania z aparatu AWB) lub wprowadzonych przez użytkownika (w przypadku korzystania z aparatu z korekcją CT + WB) w momencie wykonania zdjęcia. Ale to nie jedyny uzasadniony balans bieli, który można wykorzystać do interpretacji surowych danych.

W przypadku 14-bitowego nieprzetworzonego pliku istnieje 16 384 dyskretnych wartości między 0 (czysta czerń) a 1 (czysta biel). Pozwala to na bardzo małe kroki między każdą wartością. Ale są to monochromatyczne wartości luminancji. Kiedy dane są demozaikowane, stosowane są krzywe gamma i następuje konwersja do określonej przestrzeni kolorów, mnożniki konwersji WB są zwykle stosowane do tych 14-bitowych wartości. Ostatnim krokiem w tym procesie jest ponowne mapowanie uzyskanych wartości do 8-bitów przed wykonaniem stratnej kompresji pliku. 8 bitów dopuszcza tylko 256 dyskretnych wartości między 0 (czysta czerń) a 1 (czysta biel). Zatem każdy krok między wartościami jest 64 razy większy niż w przypadku 14-bitów.

Jeśli następnie spróbujemy zmienić balans bieli przy tych stopniach stopniowania, obszary, które próbujemy rozszerzyć, wypchną każdy z kroków w danych, których używamy, więcej niż jeden krok w wynikowym pliku. Tak więc gradacje w tych obszarach stają się jeszcze grubsze. Obszary, które zmniejszamy, popychają każdy z tych kroków na mniejszą przestrzeń niż pojedynczy krok w wynikowym pliku. Ale wtedy wszystkie te kroki są ponownie dopasowywane, aby pasowały do ​​256 stopniowej gradacji między „0” a „1”. Często skutkuje to paskowaniem lub posteryzacją zamiast płynnych przejść.

¹ Aby być szybszym i mniej wymagającym zasobów, niektóre aplikacje do przetwarzania surowego będą miały tryb „szybki”, który faktycznie modyfikuje istniejącą 8-bitową reprezentację na ekranie po przesunięciu suwaka ustawień. Często skutkuje to pasemkami lub innymi niepożądanymi artefaktami, takimi jak purpurowy odcień widoczny w przesuniętym kolorze jpeg w pytaniu. Jest to jednak stosowane tylko do oglądanego podglądu. Kiedy plik jest konwertowany i zapisywany (eksportowany), te same instrukcje są w rzeczywistości stosowane do surowych danych, ponieważ są ponownie przetwarzane, a pasmowanie lub inne artefakty nie są widoczne (lub nie są tak poważne).

² Pewnie, możesz zrobić zdjęcie, które zawiera jeden czysty kolor w całym polu widzenia. ale większość zdjęć zawiera szeroką gamę odcieni, odcieni i poziomów jasności.

³ Proszę zobaczyć: Dlaczego moje obrazy RAW są już kolorowe, jeśli debajkowanie jeszcze się nie zakończyło?

To by tłumaczyło pasy lub posteryzację na obrazie spowodowaną zmniejszoną precyzją, ale nadal powinno być możliwe przesunięcie białego punktu we właściwej pozycji, nie?

Możesz zmienić kolor pliku JPEG w pewnym stopniu, ale nie ma już większości informacji potrzebnych do uzyskania wszystkich kolorów, które można wytworzyć przy użyciu surowych danych. Został odrzucony podczas konwersji do RGB i redukcji do 8 bitów przed kompresją. Jedyne, co pozostało ci do pracy, to wartości każdego piksela w tych trzech kanałach kolorów. Krzywe odpowiedzi dla każdego z tych kanałów mogą być przerysowane, ale wszystko to podnosi lub obniża wartość dla tego kanału kolorów w każdym pikselu obrazu. Nie wycofuje się i nie wykonuje ponownych prób demasowania na podstawie nowych mnożników kanałów, ponieważ te informacje nie są zachowane w JPEG.

Należy koniecznie zrozumieć, że w przykładowym obrazie dodanym do pytania drugi obraz nie pochodzi od pierwszego obrazu. Zarówno pierwszy, jak i drugi obraz to dwie różne interpretacje dokładnie tych samych surowych danych.Żadna z nich nie jest bardziej oryginalna niż druga. Żadne z nich nie jest bardziej „poprawne” niż inne pod względem bycia prawidłową reprezentacją danych zawartych w surowym pliku. Oba są całkowicie uzasadnionymi sposobami wykorzystania danych w surowym pliku do utworzenia obrazu 8-bitowego. Pierwszy to sposób, w jaki twoja aplikacja do konwersji raw i / lub podgląd JPEG generowany w kamerze zdecydował się na interpretację danych. Drugi to sposób, w jaki aplikacja do nieprzetworzonej konwersji zinterpretowała dane po tym, jak powiedziałeś, jakie surowe wartości czujników chcesz przetłumaczyć jako szary / biały. Po kliknięciu tej samej części obrazu JPEG, wiele informacji o kolorze potrzebnych do poprawienia obrazu tak, aby wyglądało na to, że druga wersja nieprzetworzonego pliku już tam nie była, a zatem nie mogła zostać użyta.

Czy to po prostu ze względu na stratną kompresję JPEG i 32-bitowego pliku tiff nie miałby tego problemu?

Nie, chociaż kompresja stratna stanowi jej dużą część. Podobnie jest z redukcją do 8 bitów, co sprawia, że ​​każdy krok między „0” (czysta czerń) a „1” (pełne nasycenie) jest 64X tak duży, jak w przypadku 14-bitowego surowego pliku. Ale wykracza to poza kompresję JPEG.

Kilka akapitów tej odpowiedzi na RAW na TIFF lub PSD 16bit traci głębię kolorów :

Po przekształceniu danych w nieprzetworzonym pliku w plik TIFF z poprawką gamma, proces ten jest nieodwracalny.

Pliki TIFF mają wszystkie te etapy przetwarzania „upieczone” do zawartych w nich informacji. Mimo że nieskompresowany 16-bitowy plik TIFF jest znacznie większy niż typowy nieprzetworzony plik, z którego pochodzi, ze względu na sposób, w jaki każdy z nich przechowuje dane, nie zawiera wszystkich informacji potrzebnych do odwrócenia transformacji i odtworzenia tych samych dokładnych danych zawarte w surowym pliku. Istnieje prawie nieskończona liczba różnych wartości w danych na poziomie pikseli nieprzetworzonego pliku, które mogłyby zostać użyte do utworzenia określonego pliku TIFF. Podobnie istnieje prawie nieskończona liczba plików TIFF, które można wygenerować z danych w pliku surowego obrazu, w zależności od podjętych decyzji dotyczących przetwarzania nieprzetworzonych danych w celu utworzenia pliku TIFF.

Zaletą 16-bitowych formatów TIFF w porównaniu do 8-bitowych formatów TIFF jest liczba kroków między najciemniejszymi i najjaśniejszymi wartościami dla każdego kanału koloru na obrazie. Te drobniejsze kroki pozwalają na więcej dodatkowych manipulacji przed ostatecznym przekształceniem do formatu 8-bitowego bez tworzenia artefaktów, takich jak pasmowanie w obszarach gradacji tonalnej.

Ale tylko dlatego, że 16-bitowy TIFF ma więcej kroków między „0” a „65.535” niż 12-bitowy (0-4095) lub 14-bitowy (0-16383) surowy plik, nie oznacza to, że plik TIFF pokazuje ten sam lub większy zakres jasności. Gdy dane w 14-bitowym surowym pliku zostały przekształcone w plik TIFF, czarny punkt mógł zostać wybrany przy wartości takiej jak 2048. Dowolnemu pikselowi w surowym pliku o wartości mniejszej niż 2048 przypisano by wartość 0 w TIFF. Podobnie, gdyby punkt bieli został ustawiony na powiedzmy na 8191, wówczas dowolna wartość w pliku surowym wyższa niż 8191 byłaby ustawiona na 65 535, a najjaśniejszy punkt zatrzymania światła w pliku surowym zostałby nieodwracalnie utracony. Wszystko jaśniejsze w surowym pliku niż wybrany biały punkt ma taką samą wartość w TIFF, więc żaden szczegół nie jest zachowywany.

Istnieje wiele istniejących pytań, które dotyczą w dużej mierze tego samego tematu. Oto kilka z nich, które mogą okazać się pomocne:

Pliki RAW przechowują 3 kolory na piksel, czy tylko jeden?
16-bitowy
format RAW na TIFF lub PSD traci głębię kolorów Jak zacząć od ustawień JPEG w aparacie w Lightroom?
Dlaczego wygląd plików RAW zmienia się po przejściu z „Lighttable” na „Darkroom” w Darktable?
Nikon d810 manual WB to nie to samo co „As Shot” w Lightroomie
Dlaczego obrazy RAW wyglądają gorzej niż JPEG w programach do edycji?
Dopasuj kolory w Lightroomie do innych narzędzi edycyjnych
Czy robiąc zdjęcie w formacie RAW, musisz go przetworzyć, aby zdjęcie wyglądało dobrze?

Dlaczego jakość obrazu między aparatem a ekranem komputera jest niższa
Dlaczego moje zdjęcia wyglądają inaczej w programie Photoshop / Lightroom vs narzędzie Canon EOS / w aparacie?
Dlaczego moje zdjęcia wyglądają inaczej w aparacie niż po zaimportowaniu do laptopa?
Jak emulować przetwarzanie w aparacie w Lightroom?
Konwersja jpg w aparacie vs. lightroom jpg
Dlaczego mój podgląd Lightroom / Photoshop zmienia się po załadowaniu?


2
To by tłumaczyło pasy lub posteryzację na obrazie spowodowaną zmniejszoną precyzją, ale nadal powinno być możliwe przesunięcie białego punktu we właściwej pozycji, nie?
skyde

2
Tak, to ma sens, mówiąc, że możliwe jest przycięcie koloru z surowego po przekonwertowaniu na gamę kolorów TIFF. Z tego powodu nadal straciliśmy informacje, które mogą być potrzebne do korekcji balansu kolorów.
skyde

1
Jestem z skyde: tylko mniej dyskretnych kroków w rozdzielczości kolorów nie oznacza, że ​​balans bieli daje dobre widoczne różne wyniki. Zwłaszcza jeśli wersja JPEG ma intensywny fioletowy odcień. Bardziej odpowiednią teorią byłoby to, że możliwe wartości wewnętrznej korekty są ograniczone do węższego zakresu w formacie jpeg niż w stanie surowym, co dodatkowo wiąże się z faktem, że wartość surowa jest interpretowana na podstawie danych czujnika surowego, a wartość jpeg to dyskretne wartości kolorów.
Horitsu

1
Przyłączam się tutaj również do skyde. To po prostu długa, nieistotna historia o różnicach między formatami raw i JPEG. Nie ma tu nic, co faktycznie odpowiadałoby na pierwotne pytanie.
jarnbjo

1
@jarnbjo Większość odpowiedzi jest poświęcona na wyjaśnienie różnicy między rzeczywistymi surowymi danymi w pliku obrazu a tym, co widzi się na ekranie, gdy „przegląda się” jedną z wielu możliwych interpretacji surowych danych. Z mojego doświadczenia wynika, że ​​większość tego typu pytań powstaje z powodu podstawowego braku zrozumienia, że ​​to, co widzi się na ekranie, nigdy nie jest „THE” surowym plikiem. Z mojego doświadczenia wynika, że ​​stwierdzenie tego na kilka różnych sposobów zwiększa szanse, że żarówka w końcu przejdzie do pytającego. YMMV.
Michael C

3

Prosta odpowiedź polega na tym, że aparat i procesor RAW (LR, Darktable, by wymienić tylko kilka) używają różnych algorytmów do przetwarzania plików RAW. Powodów jest wiele i nie możemy ocenić tych algorytmów, ponieważ wiele z nich to tajemnice handlowe. Na przykład temperatura barwowa światła dziennego Canona (EOS 700D) wynosi około 5200 K, a Lightroom 5500 K. W niektórych sytuacjach robi to różnicę.

Mówiąc ściślej, pliki RAW nie mają wstępnie zdefiniowanej temperatury kolorów. Jest on zawarty jako meta informacje. Procesory RAW stosują określone balans bieli podczas wykonywania opisanych operacji.

Edycja: i na podstawie komentarza: Nie można zmienić dużej temperatury kolorów w pliku JPEG, ponieważ jest on już „ugotowany”. Temperatura kolorów jest już zastosowana i nie ma wystarczającej głębi kolorów, aby „przesunąć” kolory.


Algorytmy Darktable nie są tajemnicami handlowymi.
Proszę przeczytać mój profil

@mattdm, prawda. Ale te z LR, ON1, CaptureOne i innych nieobsługiwanych procesorów RAW to ...
Romeo Ninov

Ale czy coś takiego jest naprawdę istotne dla pytania? Podstawy korekcji balansu bieli są powszechnie znane i wdrażane w otwartym oprogramowaniu.
Proszę przeczytać mój profil

Podstawy tak. Ale wdrożenie może być inne. I dokładnie te szczegóły są zwykle trzymane w tajemnicy (w przypadku oprogramowania nieobjętego zasobami)
Romeo Ninov

1

Możliwe jest balansowanie bieli JPEG, ale narzędzia edycyjne używane w RAW w porównaniu z innymi obrazami zwykle zachowują się inaczej (różne algorytmy). Dalej:

  • Narzędzie zakraplacz jest nieprecyzyjne, co sprawia, że trudne do powtórzenia wyników.

  • Bit-depth of JPEG ogranicza, ile kolory mogą być przesunięte vs RAW.

  • Krzywa gamma mes wszystko do góry.

  • Obliczenia danych liniowych i danych logarytmicznych zachowują się inaczej.

To nie jest dokładnie tak , jak to działa, ale aby zilustrować:

  • Załóżmy, że chcesz pomnożyć niektóre dane (1, 4, 8) przez 2. Wynikiem jest (2, 8, 16). W przypadku danych liniowych maksymalny wynik, 16, jest czterokrotnością minimalnego wyniku, 2.

  • Jednak w przypadku reprezentacji logarytmicznych odstęp między sąsiednimi wartościami, takimi jak 2 5 i 2 6 , jest znacznie większy niż różnica między wartościami liniowymi 5 i 6. Ponadto maksymalny wynik, 2 16 , jest nie tylko 32768 razy większy niż min wynik, 2 2 , jest to również 256-krotność pierwotnej wartości, 2 8 .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.