Чому програмне забезпечення може виправити баланс білого для файлів RAW точніше, ніж це можливо для JPEG?


11

Чому корекції балансу білого JPEG після обробки не такі точні, як баланс білого з Raw?

Я розумію, що під час зйомки jpeg камера всередині робить наступні кроки:

  1. Перетворіть необроблені дані датчика, використовуючи алгоритм (демозахист / деберинг).
  2. Перетворити в лінійний простір

    а. Використовуючи орієнтоване значення таблиці відображення на лінійний простір

    б. Потім рівень чорного кольору для кожного пікселя обчислюється та віднімається.

    c. Значення для кожного пікселя змінюється на 0,0 - 1,0 за допомогою Whitelevel

    г. Значення шкали масштабуються в межах від 0,0 до 1,0 логічного діапазону.

  3. Зображення кольорового простору камери в просторі CIE XYZ з регулюванням балансу білого

    а. Перетворити в XYZ (D50) за допомогою CameraToXYZ_D50 = Chromatic_adapatation_matrix * CameraToXYZ_matrix

  4. Перетворити CIE XYZ в sRGB

    а. Обчисліть лінійний RGB за допомогою CIE XYZ для лінійної матриці RGB

    б. Обчисліть Rec709 sRGB, використовуючи перетворення гамма-кривої на лінійний RGB

  5. Перетворіть sRGB в 8 біт і стисніть за допомогою JPEG

Якщо це правильно, я не розумію, чому Jpeg не міг виправити баланс білого так само, як Raw!

Це просто через втрату стиснення JPEG та 32-бітного файлу tiff не виникло б цієї проблеми?

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


1
Що змушує вас вважати, що JPEG WB не такий точний, як сирий? Що ви маєте на увазі під точним ? Ви маєте на увазі, що камера, як правило, не здогадується так добре, як кваліфікована людина, яка використовує необроблений додаток для перетворення? Або щось інше?
Майкл C

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

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

5
Перше зображення НЕ "Оригінальний необроблений файл". Це одне з нескінченно можливої ​​кількості інтерпретацій необроблених даних, які твоє додаток для перетворення сировини виробляло та відображало на екрані у 8 бітах.
Майкл С

2
Напевно, це не найважливіший момент, але ваш крок 2 - це насправді два чіткі етапи, і вони можуть бути виконані не в тому порядку, в якому ви їх представляєте (що було б додатковим способом, яким СБ "запікається" в остаточний JPEG колір).
junkyardsparkle

Відповіді:


9

Чому програмне забезпечення може виправити баланс білого для файлів RAW точніше, ніж це можливо для JPEG?

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

Коли ви використовуєте білий клікер у "сирому" файлі, ви не виправляєте зображення, що відображається на екрані (це jpeg-подібне 8-бітове візуалізація, яке є однією з багатьох можливих інтерпретацій даних у файлі "необроблене зображення" ). Ви повідомляєте додатку для перетворення сировини повернутись та перетворити дані у вихідному файлі у зображення, що відображається, використовуючи інший набір множників каналів кольорів.

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

Неочищений файл містить набагато більше інформації, ніж відображається на моніторі, коли ви «відкриваєте» необроблений файл. Сирі файли зображень містять достатньо даних, щоб створити майже нескінченну кількість різних інтерпретацій цих даних, які вмістяться у 8-бітовий файл JPEG.²

Щоразу, коли ви відкриваєте необроблений файл і дивитесь його на екрані, ви не переглядаєте "THE raw file". ³ Ви переглядаєте одне з майже незліченної кількості можливих інтерпретацій даних у вихідному файлі. Самі необроблені дані містять одну (монохромну) міру значення яскравості на кожній лунці пікселя. З датчиками маскуваних камер Bayer (переважна більшість кольорових цифрових камер використовують фільтри Bayer) кожен піксельний колодязь має перед собою кольоровий фільтр, який є "червоним", "зеленим" або "синім" (фактичні "кольори" фільтри у більшості масок Байєра є десь від злегка жовтувато-зеленого до оранжево-жовтого для «червоного», злегка синювато-зеленого для «зеленого» та злегка синювато-фіолетового для «блакитного» -ці кольори більш-менш відповідають центру чутливості для трьох типів шишок у наших сітківках ). Для більш повного обговорення того, як ми отримуємо інформацію про кольори з єдиних значень яскравості, виміряних на кожному піксельному колодязі, будь ласка, див. Файли RAW, що зберігають 3 кольори на піксель або лише один?

Коли ви змінюєте баланс білого необробленого файлу, ви не вносите змін у 8-бітну інтерпретацію необробленого файлу, який ви бачите на екрані, ви вносите зміни в інтерпретацію лінійних 14-бітових монохроматичних необроблених даних і потім відображається на екрані з оновленим балансом білого.Тобто ви використовуєте повну перевагу тих 16,384 дискретних монохроматичних лінійних кроків, які містить необроблений файл для кожного пікселя, а не 256 дискретних гамма-виправлених кроків у трьох кольорових каналах для кожного пікселя, який ви бачите на своєму 8-бітовому екрані як представлення цього необробленого файлу. Ви також використовуєте всю іншу інформацію, що міститься в неочищених даних зображення, включаючи таку інформацію, як маскувані пікселі та іншу інформацію, яка відкидається при перетворенні файлу у 8-бітний формат для відображення на екрані.

Як буде виглядати зображення, яке ви бачите на моніторі під час відкриття неочищеного файлу, визначається тим, як програма, яку ви використовували для відкриття файлу, інтерпретує необроблені дані у файлі для отримання видимого зображення. Але це не єдиний спосіб відображення "ІЗОБРАЖЕНОГО файлу". Це лише те, як ваша програма - або камера, яка створила попередній перегляд jpeg, прикріплений до неочищеного файлу - обробила інформацію в сирому файлі, щоб відобразити її на екрані.

Кожна програма має власний набір параметрів за замовчуванням, які визначають спосіб обробки необроблених даних. Один з найбільш значущих параметрів - це вибір балансу білого, який використовується для перетворення вихідних даних. Більшість додатків мають багато різних наборів параметрів, які може бути обраний користувачем, який може вільно змінювати окремі налаштування в межах набору інструкцій, що використовуються для початкової інтерпретації даних у вихідному файлі. Багато програм використовуватимуть множники балансу білого / кольорового каналу, оцінені камерою (при використанні AWB в камері) або введені користувачем (при використанні в камері корекції CT + WB) під час зйомки фотографії. Але це не єдиний законний баланс білого, який можна використовувати для інтерпретації необроблених даних.

Із 14-бітним неочищеним файлом існує 16 384 дискретних значень між 0 (чисто чорний) та 1 (чисто білий). Це дозволяє робити дуже маленькі кроки між кожним значенням. Але це монохромні значення освітленості. Коли дані зменшуються, застосовуються криві гамма та перетворюється на певний кольоровий простір, до цих 14-бітних значень зазвичай застосовуються множники перетворення ВБ. Останнім кроком у процесі є перекомпонування отриманих значень до 8-біт, перш ніж робити стиснення втрачених файлів. 8-біт дозволяє лише 256 дискретних значень між 0 (чисто чорний) і 1 (чисто білий). Таким чином, кожен крок між значеннями на 64X більший, ніж у 14-бітних.

Якщо ми потім спробуємо змінити СБ за допомогою цих значно кращих градацій, області, які ми намагаємося розширити, натискають на кожен із кроків у даних, які ми використовуємо далі, ніж на один крок у отриманому файлі. Тож градації в цих районах стають ще грубішими. Області, які ми скорочуємо, висувають кожен із цих кроків у менший простір, ніж один крок у отриманому файлі. Але потім ці кроки переосмислюються відповідно до градації 256 ступенів між "0" і "1". Це часто призводить до обв'язки або постеризації замість плавних переходів.

¹ Для того, щоб бути більш швидким та менш ресурсоємним, деякі необроблені програми оброблять режим "швидкого", який фактично модифікує існуюче 8-бітове представлення на екрані під час переміщення повзунка налаштувань. Це часто призводить до обв'язки та інших небажаних артефактів, наприклад, фіолетового відтінку, який ви бачите у кольоровому зсуві jpeg у питанні. Це застосовується лише до попереднього перегляду, який ви переглядаєте. Коли файл конвертується та зберігається (експортується), фактично застосовуються ті самі вказівки до необроблених даних, що і під час їх переробки, а обв'язки чи інші артефакти не бачать (або не є такими серйозними).

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

³ Будь ласка, дивіться: Чому мої зображення RAW вже кольорові, якщо дебарінг ще не зроблений?

Це пояснило б смугу або постеризацію зображення, спричинену зниженою точністю, але все ж має бути можливим переміщення білої точки в правильному положенні ні?

Ви можете змінити колір jpeg на ступінь, але більшості інформації, необхідної для отримання всіх кольорів, які ви можете створити за допомогою необроблених даних, вже немає. Він був відкинутий під час перетворення в RGB та зменшення до 8 біт до стиснення. Єдине, що вам залишилося попрацювати - це значення кожного пікселя в цих трьох кольорових каналах. Криві відгуку для кожного з цих каналів можуть бути перероблені, але все, що потрібно, це підвищити або зменшити значення для цього кольорового каналу у кожному з пікселів зображення. Він не повертається і не повторює демонстраційне оцінювання на основі нових множників каналів, оскільки ця інформація не зберігається в JPEG.

Важливо розуміти, що в прикладі зображення, доданому до питання, друге зображення не походить від першого зображення. І перший, і другий зображення - це дві різні інтерпретації абсолютно однакових необроблених даних.Жоден не оригінальніший за інший. Він не є більш "правильним", ніж інший, з точки зору того, що це дійсне представлення даних, що містяться у вихідному файлі. Обидва вони є цілком законними способами використання даних у сирому файлі для створення 8-бітного зображення. По-перше, це те, як ваша необроблена програма перетворення та / або попередній перегляд jpeg, створений у вашій камері, вирішили інтерпретувати дані. По-друге, це те, як ваша сировина-програма для перетворення інтерпретувала дані після того, як ви сказали їй, які неотримані значення датчика ви хочете перевести як сірі / білі. Коли ви натиснули на ту саму частину зображення jpeg, значна частина кольорової інформації, необхідної для виправлення зображення, виглядала так, що другої версії неочищеного файлу вже не було, і тому його не можна було використовувати.

Це просто через втрату стиснення JPEG та 32-бітного файлу tiff не виникло б цієї проблеми?

Ні, хоча стиснення втрат - це велика його частина. Так само зменшення до 8 біт, що робить кожен крок між "0" (чисто чорний) і "1" (повна насиченість) 64X таким же великим, як і для 14-бітного необробленого файлу. Але це виходить за межі стиснення jpeg.

Кілька абзаців з цієї відповіді на RAW на TIFF або PSD 16bit втрачають глибину кольору :

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

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

Перевага 16-бітних TIFF у порівнянні з 8-бітовими TIFF - це кількість кроків між найтемнішими та найяскравішими значеннями для кожного кольорового каналу зображення. Ці більш точні кроки дозволяють отримати додаткові маніпуляції перед тим, як остаточно перейти у 8-бітний формат, не створюючи артефактів, таких як смуга у зонах градації тоналів.

Але тільки тому, що 16-бітний TIFF має більше кроків між "0" і "65,535", ніж 12-бітний (0-4095) або 14-бітний (0-16383) необроблений файл, це не означає, що файл TIFF показує однаковий або більший діапазон яскравості. Коли дані в 14-бітовому сировинному файлі були перетворені у файл TIFF, чорна точка могла бути обрана при такому значенні, як 2048. Будь-якому пікселю у сирому файлі зі значенням, меншим за 2048, буде присвоєно значення 0 в TIFF. Так само, якби біла точка була встановлена ​​на, скажімо, 8,191, то будь-яке значення у сирому файлі вище 8191 було б встановлено у 65,535, і найяскравіша зупинка світла у сирому файлі була б безповоротно втрачена. У яскравому файлі все яскравіше, ніж вибрана біла точка, має однакове значення в TIFF, тому жодна деталь не зберігається.

Тут існує велика кількість існуючих питань, які охоплюють більшу частину тієї ж основи. Ось декілька з них, які можуть бути вам корисними:

Файли RAW зберігають 3 кольори на піксель або лише один?
RAW to TIFF або PSD 16bit втрачає глибину кольору.
Як почати з налаштувань JPEG в камері в Lightroom?
Чому зовнішній вигляд файлів RAW змінюється при переході від "lighttable" до "darkroom" у Darktable?
nikon d810 керівництво WB не те саме, що "Як знято" в Lightroom
Чому зображення RAW виглядають гірше, ніж JPEG у програмах редагування?
Зіставляйте кольори в Lightroom з іншими інструментами для редагування.
Під час зйомки в RAW вам потрібно після цього обробляти зображення, щоб зображення було добре?

Чому є втрата якості від екрана камери до комп'ютера
Чому мої фотографії виглядають по-різному у програмі Photoshop / Lightroom vs Canon EOS / у камері?
Чому мої зображення на камері виглядають інакше, ніж при імпорті на ноутбук?
Як наслідувати обробку камери в Lightroom?
Конвертація jpg Nikon у фотокамері та світлому залі
Чому мій попередній перегляд Lightroom / Photoshop змінюється після завантаження?


2
Це пояснило б смугу або постеризацію зображення, спричинену зниженою точністю, але все ж має бути можливим переміщення білої точки в правильному положенні ні?
skyde

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

1
Я з skyde: Просто існують менш дискретні кроки в кольоровій роздільній здатності, це не означає, що баланс білого дає хороші видимі різні результати. Особливо, якщо версія jpeg має сильний фіолетовий тон. Більш підходящою теорією було б те, що можливі внутрішні значення корекції затискаються на більш вузький діапазон у jpeg, ніж у сирому, що доходить до того, що сировина інтерпретується із даних невідкритих датчиків, а jpeg - дискретні кольорові значення.
Хоріцу

1
Я приєднуюся до skyde і тут. Це просто довга нерелевантна історія про відмінності між сировиною та форматом jpeg. Тут немає нічого, що насправді відповідає на початкове запитання.
jarnbjo

1
@jarnbjo Більшість відповідей витрачається на пояснення різниці між фактичними вихідними даними у файлі зображень та тим, що бачить на їх екрані, коли "переглядає" одне з багатьох можливих інтерпретацій необроблених даних. З мого досвіду, більшість із цих типів питань виникають через принципове нерозуміння того, що те, що бачить на екрані, ніколи не є "THE" необробленим файлом. Також мій досвід свідчить, що, якщо викладати це декількома різними способами, це збільшує шанси на те, що лампочка нарешті перейде на запитання. YMMV.
Майкл C

3

Проста відповідь полягає в тому, що ваша камера та ваш процесор RAW (LR, Darktable, назовні декілька) використовують різні алгоритми для обробки файлів RAW. Причин багато, і ми не можемо оцінити ці алгоритми, оскільки багато хто є комерційною таємницею. Наприклад, кольорова температура денного світла Canon (EOS 700D) становить близько 5200 К, тоді як у Lightroom 5500K. У деяких ситуаціях це має значення.

Якщо бути точним, файли RAW не мають попередньо визначеної кольорової температури. Він включається як метаінформація. Процесори RAW застосовують конкретні WB, коли вони виконують описані вами операції.

Редагувати: та виходячи з Вашого коментаря: Ви не можете змінити велику температуру кольорів у файлі JPEG, оскільки він уже "приготований". Температура кольору вже застосована, і у вас недостатньо глибини кольору, щоб "змістити" кольори.


Алгоритми Darktable не є комерційною таємницею.
Прочитайте, будь ласка, мій профіль

@mattdm, правда. Але LR, ON1, CaptureOne, інші нересурсові процесори RAW - це ...
Ромео Нінов

Але чи справді це стосується питання? Основи корекції балансу білого широко відомі та реалізовані у відкритому програмному забезпеченні.
Прочитайте, будь ласка, мій профіль

Основи так. Але реалізація може бути різною. І саме ці деталі, як правило, зберігаються в таємниці (для безресурсного програмного забезпечення)
Ромео Нінов

1

Це є можливим балансом білого JPEGs, але інструменти редагування використовуються для роботи на RAW проти інших зображень , як правило, ведуть себе по- різному (різні алгоритми). Далі:

  • Інструмент для крапельниць неточний, що ускладнює повторення результатів.

  • Бітова глибина в форматі JPEG обмежує , скільки кольорів можуть бути зміщені проти RAW.

  • Гамма - крива мур все вгору.

  • Розрахунки на лінійні дані проти логарифмічних даних ведуть себе по-різному.

Це не зовсім так, як це працює, але для ілюстрації:

  • Припустимо, ви хочете помножити деякі дані (1, 4, 8) на 2. Результат - (2, 8, 16). При лінійних даних максимальний результат, 16, в чотири рази перевищує мінімальний результат, 2.

  • Але при логарифмічних поданнях розрив між суміжними значеннями, такими як 2 5 і 2 6 , значно більший, ніж різниця між лінійними значеннями, 5 і 6. Крім того, максимальний результат, 2 16 , не тільки в 32768 разів більший, ніж хв. результат, 2 2 , це також 256 разів перевищує початкове значення, 2 8 .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.