Как проверить, есть ли в изображении пиксели вне sRGB? - Фотопедия
3 голосов
/ 26 августа 2017

С 2016 года новые продукты Apple (например, iPhone 7) используют цветовое пространство P3 вместо цветового пространства sRGB. Поэтому мне интересно измерить практическое влияние на некоторые снимки, которые я снял.

Учитывая файл JPEG, как я могу проверить, содержит ли он пиксели, не входящие в sRGB? И как я могу пометить их, например, сделать их розовыми или желтыми? (или почти эквивалентно: как я могу проверить, оказывает ли преобразование в sRGB какое-либо разрушительное воздействие на изображение?)

Например, на www.astramael.com есть различные примеры изображений, которые могут быть представлены в Adobe RGB или sRGB, но не могут быть точно представлены с помощью sRGB. Если вы прокрутите немного вниз, вы увидите картинку, где все не sRGB-пиксели были заменены светло-красными пикселями, чтобы сделать разницу видимой. Как можно создать такой образ? Какие инструменты можно использовать для этого?

Моя мотивация заключается в том, что я хочу проверить влияние цветового пространства, которое отличается от sRGB. Я не сомневаюсь, что есть реальные цвета, которых нет в sRGB. Но есть ли какие-либо цвета вне sRGB на фотографиях, которые я снял на своем iPhone 7? Насколько часто встречаются цвета вне sRGB?

Обновление: Было бы неплохо иметь для этого бесплатный или открытый инструмент. Я не хочу устанавливать Adobe Photoshop или подобное тяжелое приложение. Фактически, средство командной строки размером 300 КБ может решить эту проблему. Я разработчик для iOS и macOS, поэтому было бы хорошо, если бы программа работала и на этой платформе (это включает возможность установки, следуя стандартным инструкциям по установке, приведенным в документации). Для меня это (вероятно) будет возможность написать такую ​​программу самостоятельно; но я надеялся, что кто-то уже сделал это.

Ответы [ 3 ]

2 голосов
/ 27 августа 2017

Foundry Nuke или Blackmagic Design Fusion выполняют операции с числами с плавающей запятой, которые позволяют вам выполнять тесты такого типа. По сути, все сводится к тому, чтобы преобразовать ваше изображение из DCI-P3 в цветовое пространство sRGB и проверить наличие отрицательных чисел в выходном изображении / массиве. Вот пример в Nuke Foundry:

The Foundry Nuke - DCI-P3 to sRGB

Это дерево узлов, которое вы можете скопировать и вставить в приложение:

set cut_paste_input [stack 0]
version 10.5 v2
Read {
inputs 0
file /Users/kelsolaar/Downloads/Italy-P3.jpg
format "600 400 0 0 600 400 1 "
origset true
name Read1
selected true
xpos -50
ypos 11
}
set N30e152e0 [stack 0]
push $N30e152e0
Colorspace {
illuminant_in DCI-P3
primary_in DCI-P3
name Colorspace1
selected true
xpos -50
ypos 91
}
Expression {
expr0 "r < 0 ? 1 : 0"
expr1 "g < 0 ? 1 : 0"
expr2 "b < 0 ? 1 : 0"
name Expression1
selected true
xpos -50
ypos 115
}
Viewer {
inputs 2
frame_range 1-100
input_number 1
name Viewer1
selected true
xpos -50
ypos 139
}

Если вам удобно с Python, вы также можете использовать Color следующим образом:

import numpy as np

import colour
import colour.plotting

DCI_P3 = colour.read_image('/Users/kelsolaar/Downloads/Italy-P3.jpg')

sRGB = colour.RGB_to_RGB(DCI_P3, colour.DCI_P3_COLOURSPACE, colour.sRGB_COLOURSPACE)

colour.plotting.image_plot(np.where(sRGB < 0, 1.0, 0.0), 'sRGB - Out of Gamut')

sRGB - Out of Gamut

Исходное изображение доступно по этому адресу: https://webkit.org/blog-files/color-gamut/Italy-P3.jpg

Как упомянуто @doug в комментариях ниже, и учитывая, что оригинальный пост посвящен изображениям в целом, а также специфическим для изображений iPhone, важно отметить, что цвета с высокой цветностью и яркостью могут также переполнять [0- 255] диапазон. Эти значения необходимо учитывать, если вы кодируете свои изображения в контейнере с низким динамическим диапазоном, например JPEG, PNG или любой целочисленный формат изображения.

1 голос
/ 26 августа 2017

Большинство механизмов управления цветом должны иметь механизм для выделения пикселей вне гаммы при преобразовании изображения из одного цветового пространства в другое.

Ваша программа для редактирования изображений может иметь функцию для выделения пикселей гаммы (возможно, не версии iphone, но возможность для настольных компьютеров, которые используют управление цветом и позволяют переключаться между цветовыми пространствами).

Если вы пишете свои собственные программы, у littleCMS (бесплатный механизм управления цветом, работающий с профилями ICC) определенно есть такой механизм, и если вы будете искать в Интернете, вы можете обнаружить, что кто-то уже собрал подходящую утилиту.

0 голосов
/ 27 августа 2017

Одно приложение, которое может показать вам, это Final Cut Pro X. Другое приложение - Motion.

В FCPX создайте новый проект и обязательно выберите Rec. 709 как цветовое пространство:

FCPX New Project Dialog

Импортируйте свое изображение в свою библиотеку, а затем поместите его в новый проект. В меню «Вид» холста выберите «Яркость» или «Насыщенность» (вам, вероятно, следует проверить оба):

FCPX Canvas View Menu

Если у вас есть какие-либо значения за пределами гаммы, он должен отображать зебра-полосы следующим образом:

FCPX Zebra Stripes

В Motion вы можете просто поместить отснятый материал на холст, открыть меню «Каналы» холста и выбрать «Экспозиция» или «Насыщенность»:

Motion Zebra Stripes

...