RU2709652C1 - Обработка пикселей с учетом цветового компонента - Google Patents

Обработка пикселей с учетом цветового компонента Download PDF

Info

Publication number
RU2709652C1
RU2709652C1 RU2018144162A RU2018144162A RU2709652C1 RU 2709652 C1 RU2709652 C1 RU 2709652C1 RU 2018144162 A RU2018144162 A RU 2018144162A RU 2018144162 A RU2018144162 A RU 2018144162A RU 2709652 C1 RU2709652 C1 RU 2709652C1
Authority
RU
Russia
Prior art keywords
color
pixel
component
value
color space
Prior art date
Application number
RU2018144162A
Other languages
English (en)
Inventor
Якоб СТРЕМ
Йонатан САМУЭЛЬССОН
Риккард ШЕБЕРГ
Кеннет АНДЕРССОН
Кристофер ДОВСТАМ
Original Assignee
Телефонактиеболагет Лм Эрикссон (Пабл)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Телефонактиеболагет Лм Эрикссон (Пабл) filed Critical Телефонактиеболагет Лм Эрикссон (Пабл)
Application granted granted Critical
Publication of RU2709652C1 publication Critical patent/RU2709652C1/ru

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/02Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the way in which colour is displayed
    • G09G5/06Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the way in which colour is displayed using colour palettes, e.g. look-up tables
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/02Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the way in which colour is displayed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/46Colour picture communication systems
    • H04N1/64Systems for the transmission or the storage of the colour picture signal; Details therefor, e.g. coding or decoding means therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/46Colour picture communication systems
    • H04N1/64Systems for the transmission or the storage of the colour picture signal; Details therefor, e.g. coding or decoding means therefor
    • H04N1/642Adapting to different types of images, e.g. characters, graphs, black and white image portions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/06Colour space transformation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Color Image Communication Systems (AREA)
  • Processing Of Color Television Signals (AREA)
  • Facsimile Image Signal Circuits (AREA)

Abstract

Настоящие варианты осуществления, в общем случае, относятся к обработке пикселей в изображении, и в частности к такой обработке, которая улучшает значения яркости пикселей. Технический результат заключается в обеспечении усовершенствованной обработки пикселей в изображении. Обработка пикселей содержит проверку, приводит ли цветовая компонента пикселя в цветовом пространстве, дающая наименьшую ошибку между, по меньшей мере, одной цветовой компонентой в другом цветовом пространстве, определенной на основании цветовой компоненты, и, по меньшей мере, одной исходной цветовой компонентой пикселя в другом цветовом пространстве, к выходу любого цветового канала пикселя за пределы допустимого диапазона. Значение цветовой компоненты получается с использованием первой функции/LUT, если цветовая компонента, дающая наименьшую ошибку, не приводит к выходу любого цветового канала пикселя за пределы упомянутого допустимого диапазона. Однако значение цветовой компоненты получается с использованием второй, другой, функции/LUT, если цветовая компонента, дающая наименьшую ошибку, приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона. 4 н. и 35 з.п. ф-лы, 43 ил., 13 табл.

Description

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Настоящие варианты осуществления, в общем случае, относятся к обработке пикселей в изображении и, в частности, к такой обработке, которая улучшает значения яркости пикселей.
УРОВЕНЬ ТЕХНИКИ
В области кодирования видеосигнала, нелинейная передаточная функция преобразует линейные выборки в нелинейные выборки с целью имитации человеческого зрения. При кодировании видео высокого динамического диапазона (HDR), может быть преимущественно использовать сильно нелинейную передаточную функцию. Сильно нелинейная передаточная функция позволяет распределять большое количество кодовых слов на темные области, и меньше кодовых слов на светлые области, где относительное различие в светлоте в любом случае мало.
Пример традиционной обработкой видео HDR показан на фиг. 1. В этой традиционной обработке, функция, обратная передаточной функции (TF-1), например, оптоэлектрическая передаточная функция (OETF), которая обычно является обратной к электрооптической передаточной функции (EOTF), применяется к красной, зеленой и синей цветовым компонентам исходного линейного светового сигнала (RoGoBo) для формирования нелинейного цвета R'G'B'. Первое цветовое преобразование или цветовое преобразование (CT1) применяется к этому нелинейному цвету R'G'B' для получения цвета Y'CbCr 4:4:4, содержащего яркостную компоненту Y и две цветностные компоненты Cb, Cr. Цветностные компоненты Cb, Cr дискретизируются с понижением, например, к четвертому разрешению, дающему Y'CbCr 4:2:0, или половинному разрешению, дающему Y'CbCr 4:2:2. Затем этот цвет Y'CbCr 4:2:0 или 4:2:2 вводится в кодер для получения кодированного представления видеопоследовательности HDR, обычно именуемой битовым потоком в уровне техники. Затем битовый поток декодируется декодером для получения реконструированного цвета Y'CbCr 4:2:0 или 4:2:2. Обработка, обратная вышеописанной, применяется для осуществления повышающей дискретизации цветностных компонентов Cb, Cr к полному разрешению, дающей Y'CbCr 4:4:4. Реконструированный цвет R'G'B' получается путем применения второго цветового преобразования (CT2) к реконструированному цвету Y'CbCr 4:4:4. Этот реконструированный цвет R'G'B' вводится в передаточную функцию (TF), например EOTF, для получения реконструированного линейного цвета RGB.
К сожалению, комбинация сильно нелинейной передаточной функции, понижающей дискретизации 4:2:0 и упорядочения непостоянной яркости вносит в видеоданные заметные артефакты в насыщенных цветах, если используется традиционная обработка, показанная на фиг. 1.
Один способ решения этой проблемы состоит в нахождении значения яркости (Y'), которое будет давать правильную яркость (Yo), где яркость Yo определяется путем применения цветового преобразования к исходному линейному цвету ROGOBO. Один способ нахождение этого значения яркости состоит в осуществлении двоичного поиска, также именуемого поиска делением пополам или уполовинивания интервала, как описано в настоящем приложении A, где раскрыта технология AJUSTY. Например, начиная с интервала [0, 1023] для значения яркостной компоненты Y', если предполагаемое значение, например Y'=512, будет генерировать слишком высокое значение яркости Y, т.е. Y>Yo, то способ продолжается в нижней половине интервала [0, 512] и т.д. Недостаток использования двоичного поиска состоит в том, что число итераций может изменяться. В порядке примера, если используется 10 битов, то для уменьшения интервала в двоичном поиске требуются вплоть до десяти итераций.
Известны методы уменьшения интервала, например, раскрытые в [1]. Способ уменьшения интервала в [1] состоит в нахождении математической границы на Y'. В порядке примера, если нижняя граница Y' равна 324, и верхняя граница Y' равна 455, то интервал [321, 448] может использоваться в двоичном поиске вместо полного интервала [0, 1023]. Поскольку этот интервал имеет ширину только 127 шагов, он будет готов за семь (127<27) итераций вместо десяти. С использованием таких методов можно получать среднее число итераций вплоть до менее двух итераций. Это означает, что его можно эффективно использовать для оффлайновых и неоперативных применений, когда отсчитывается среднее время обработки. Однако, для оперативных применений, обычно необходимо знать заранее сколько произойдет итерацией.
Настоящее приложение A также описывает вариант осуществления, который использует линеаризацию передаточной функции для приближенного вычисления Y', не прибегая к двоичному поиску. Решение линеаризации для вычисления приближенного значения Y' также было описано в [2].
Однако существует проблема со стратегией линеаризации, например, раскрытой в [2]. Линеаризация иногда может заканчивается неудачно, приводя к значениям яркости, которые обуславливают серьезные артефакты. Фактически, в ряде случаев результат полученный, с помощью стратегии линеаризации, оказывается хуже, чем можно было бы получить с использованием традиционной обработки на фиг. 1, что дешевле.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Общая задача состоит в обеспечении усовершенствованной обработки пикселей в изображении.
Эта и другие задачи решаются согласно раскрытым в настоящем документе вариантам осуществления.
Аспект вариантов осуществления относится к способу обработки пикселя в изображении. Способ содержит проверку, приводит ли цветовая компонента пикселя в цветовом пространстве, дающая наименьшую ошибку между, по меньшей мере, одной цветовой компонентой в другом цветовом пространстве, определенной на основании цветовой компоненты в цветовом пространстве, и, по меньшей мере, одной исходной цветовой компонентой пикселя в другом цветовом пространстве, к выходу любого цветового канала пикселя за пределы допустимого диапазона. Способ также содержит получение значения цветовой компоненты в цветовом пространстве с использованием первой функции или первой поисковой таблицы, если цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, не приводит к выходу любого цветового канала пикселя за пределы упомянутого допустимого диапазона. Способ дополнительно содержит получение значения цветовой компоненты в цветовом пространстве с использованием второй, другой функции или второй, другой поисковой таблицы, если цветовая компонента в упомянутом цветовом пространстве, дающая наименьшую ошибку, приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона.
Другой аспект вариантов осуществления относится к устройству обработки пикселя в изображении. Устройство выполнено с возможностью проверки, приводит ли цветовая компонента пикселя в цветовом пространстве, дающая наименьшую ошибку между, по меньшей мере, одной цветовой компонентой в другом цветовом пространстве, определенной на основании цветовой компоненты в цветовом пространстве, и, по меньшей мере, одной исходной цветовой компонентой пикселя в другом цветовом пространстве, к выходу любого цветового канала пикселя за пределы допустимого диапазона. Устройство также выполнено с возможностью получения значения цветовой компоненты в цветовом пространстве с использованием первой функции или первой поисковой таблицы, если цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, не приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона. Устройство дополнительно выполнено с возможностью получения значения цветовой компоненты в цветовом пространстве с использованием второй, другой функции или второй, другой поисковой таблицы, если цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона.
Дополнительный аспект вариантов осуществления относится к устройству для обработки пикселя. Устройство содержит блок определения для определения, приводит ли цветовая компонента пикселя в цветовом пространстве, дающая наименьшую ошибку между, по меньшей мере, одной цветовой компонентой в другом цветовом пространстве, определенной на основании цветовой компоненты в цветовом пространстве, и, по меньшей мере, одной исходной цветовой компонентой пикселя в другом цветовом пространстве, к выходу любого цветового канала пикселя за пределы допустимого диапазона. Устройство также содержит выводитель значения для вывода значения цветовой компоненты в цветовом пространстве с использованием i) первой функции или первой поисковой таблицы, если цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, не приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона и ii) второй, другой функции или второй, другой поисковой таблицы, если цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона.
Еще один аспект вариантов осуществления относится к компьютерной программе, содержащей инструкции, которые, при исполнении по меньшей мере, одним процессором, предписывают, по меньшей мере, одному процессору проверять, приводит ли цветовая компонента пикселя в цветовом пространстве, дающая наименьшую ошибку между, по меньшей мере, одной цветовой компонентой в другом цветовом пространстве, определенной на основании цветовой компоненты в цветовом пространстве, и, по меньшей мере, одной исходной цветовой компонентой пикселя в другом цветовом пространстве, к выходу любого цветового канала пикселя за пределы допустимого диапазона. По меньшей мере, одному процессору также предписывается получать значение цветовой компоненты в цветовом пространстве с использованием первой функции или первой поисковой таблицы, если цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, не приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона. По меньшей мере, одному процессору дополнительно предписывается получать значение цветовой компоненты в цветовом пространстве с использованием второй, другой функции или второй, другой поисковой таблицы, если цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона.
Предложенная технология также обеспечивает носитель, содержащий компьютерную программу. Носитель представляет собой один из электронного сигнала, оптического сигнала, электромагнитного сигнала, магнитного сигнала, электрического сигнала, радиосигнала, микроволнового сигнала или машиночитаемого носителя данных.
Настоящие варианты осуществления снижают опасность возникновения серьезных артефактов в изображениях в результате использования стратегии линеаризации для аппроксимации передаточной функции в ходе обработки пикселей.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Варианты осуществления совместно с их дополнительными задачами и преимуществами можно наилучшим образом понять, обратившись к нижеследующему описанию, приведенному совместно с прилагаемыми чертежами, в которых:
фиг. 1 - схема традиционной обработки пикселей совместно с кодированием и декодированием видеопоследовательностей;
фиг. 2 - диаграмма, иллюстрирующая электрооптическую передаточную функцию (EOTF) перцептивного квантователя (PQ) для разных входных значений;
фиг. 3 - блок-схема последовательности операций, иллюстрирующая способ обработки пикселя согласно варианту осуществления;
фиг. 4 - блок-схема последовательности операций, иллюстрирующая дополнительные, опциональные этапы способа, показанного на фиг. 3 согласно варианту осуществления;
фиг. 5 - блок-схема последовательности операций, иллюстрирующая дополнительный, опциональный этап способа, показанного на фиг. 3 согласно варианту осуществления;
фиг. 6 - блок-схема последовательности операций, иллюстрирующая дополнительные, опциональные этапы способа, показанного на фиг. 5 согласно варианту осуществления;
фиг. 7 - блок-схема последовательности операций, иллюстрирующая дополнительные, опциональные этапы способа, показанного на фиг. 6 согласно варианту осуществления;
фиг. 8 - блок-схема последовательности операций, иллюстрирующая дополнительный, опциональный этап способа, показанного на фиг. 3 согласно другому варианту осуществления;
фиг. 9 - блок-схема последовательности операций, иллюстрирующая дополнительные, опциональные этапы способа, показанного на фиг. 3 согласно другому варианту осуществления;
фиг. 10 - диаграмма, изображающая errRGB как функцию Y'×1023 (Yp×1023).
Фиг. 11 - блок-схема последовательности операций, иллюстрирующая способ обработки пикселя согласно другому варианту осуществления;
фиг. 12 - блок-схема последовательности операций, иллюстрирующая дополнительный этап способа, показанного на фиг. 3 для формирования способа кодирования пикселя в изображении согласно варианту осуществления;
фиг. 13 - блок-схема последовательности операций, иллюстрирующая способ обработки пикселя согласно другому варианту осуществления;
фиг. 14 - блок-схема устройства для обработки пикселя согласно варианту осуществления;
фиг. 15 - блок-схема устройства для обработки пикселя согласно другому варианту осуществления;
фиг. 16 - блок-схема устройства для обработки пикселя согласно дополнительному варианту осуществления;
фиг. 17 - блок-схема, иллюстрирующая пример пользовательского оборудования согласно варианту осуществления;
фиг. 18 - блок-схема устройства для обработки пикселя согласно еще одному варианту осуществления;
фиг. 19 - блок-схема устройства для обработки пикселя согласно дополнительному варианту осуществления;
фиг. 20 схематически демонстрирует распределенную реализацию между несколькими сетевыми устройствами;
фиг. 21 - схема примера системы беспроводной связи с одним или более облачными сетевыми устройствами согласно варианту осуществления;
фиг. 22 - блок-схема последовательности операций, иллюстрирующая способ предобработки пикселя согласно AJUSTY;
фиг. 23 - блок-схема последовательности операций, иллюстрирующая дополнительные, опциональные этапы способа, показанного на фиг. 22;
фиг. 24 - блок-схема последовательности операций, иллюстрирующая дополнительные, опциональные этапы способа, показанного на фиг. 22;
фиг. 25 - блок-схема последовательности операций, иллюстрирующая дополнительные, опциональные этапы способа, показанного на фиг. 24;
фиг. 26 - блок-схема последовательности операций, иллюстрирующая вариант осуществления реализации этапа вывода на фиг. 22;
фиг. 27 - блок-схема последовательности операций, иллюстрирующая дополнительный, опциональный этап способа, показанного на фиг. 26;
фиг. 28 - блок-схема последовательности операций, иллюстрирующая дополнительный этап способа, показанного на фиг. 22 для формирования способа кодирования пикселя;
фиг. 29 демонстрирует технологию вывода скорректированного Y';
фиг. 30 демонстрирует, что в разных областях могут использоваться разные линеаризации;
фиг. 31 - блок-схема последовательности операций, иллюстрирующая способ, который может осуществляться в кодере или в предобработке кодера;
фиг. 32 - схема аппаратной реализации устройства согласно AJUSTY;
фиг. 33 - схема реализации устройства согласно AJUSTY с процессором и памятью;
фиг. 34 - схема пользовательского оборудования согласно AJUSTY;
фиг. 35 - схема реализации устройства согласно AJUSTY с функциональными модулями;
фиг. 36 - схема распределенной реализации AJUSTY между несколькими сетевыми устройствами;
фиг. 37 - схема примера системы беспроводной связи с одним или более облачными сетевыми устройствами согласно AJUSTY;
фиг. 38A-38C - исходное изображение 4:4:4 (фиг. 38A), изображение 4:2:0 после традиционной обработки (фиг. 38B) и изображение 4:2:0 после обработки AJUSTY (фиг. 38C) в случае без сжатия, но только с понижающей дискретизацией и повышающей дискретизацией;
фиг. 39A-39C - исходное изображение 4:4:4 (фиг. 39A), изображение 4:2:0 после традиционной обработки (фиг. 39B) и изображение 4:2:0 после обработки AJUSTY (фиг. 39C) в случае без сжатия, но только с понижающей дискретизацией и повышающей дискретизацией;
фиг. 40 демонстрирует, что линейная яркость, Y в пространстве XYZ CIE1931, совершено разная в исходном изображении (внизу) и обработанном изображении (вверху);
фиг. 41 демонстрирует технологию, которая, путем изменения значения Y' в отдельном пикселе, позволяет достигать линейной яркости Ŷ, которая совпадает с желаемой линейной яркостью Y;
фиг. 42 демонстрирует кривую Бартена для контрастной чувствительности; и
фиг. 43 демонстрирует сравнение между цветовыми гаммами Rec709 и BT.2020.
Подробное описание
Настоящие варианты осуществления, в общем случае, относятся к обработка пикселей в изображении и, в частности, к такой обработке, которая улучшает значения яркости пикселей.
Комбинация сильно нелинейной передаточной функции, понижающей дискретизации цветности и упорядочения неконтрастной яркости вносит серьезные артефакты в видеоданные, в частности для видео HDR и насыщенных цветов. Проблема состоит в том, что цветностные компоненты интерполируются, тогда как яркостная компонента - нет. Поэтому может существовать резкий сдвиг в яркостной компоненте пикселя, но цветностные компоненты не могут следовать, поскольку они интерполируются. Для некоторых цветов, в особенности, насыщенных цветов, получается пиксель совершено неправильной интенсивности, что отчетливо наблюдается как артефакт.
Решения этой проблемы предусматривают нахождение значения яркости (Y'), которое будет давать правильную яркость (Yo) для пикселя. Вычислительно эффективное решение предусматривает линеаризацию передаточной функции для нахождения оптимального значения яркости, не прибегая к более вычислительно дорогостоящим и времязатратным решениям. Как упомянуто в разделе "уровень техники", такие стратегии линеаризации могут, однако, заканчивается неудачно, приводя к значениям яркости, которые обуславливают серьезные артефакты в видеопоследовательности HDR. Фактически, в ряде случаев результат полученный, с помощью стратегии линеаризации, оказывается хуже, чем можно было бы получить вовсе без оптимизации яркости. Эта проблема с традиционными стратегиями линеаризации, например, раскрытыми в [2], проиллюстрированы в настоящем документе ниже.
Заметим, что в AJUSTY и приложении A, исходный пиксель до понижающей дискретизации имеет цвет (Ro, Go, Bo) и получает исходную яркость Yo=wR×Ro+wG×Go+wB×Bo, где Ro - (линейный) красный канал, Go - зеленый канал и Bo - синий канал исходного пикселя. wR, wG и wB являются постоянными, например, постоянными XYZ CIE1931 для яркости Y или (аналогичными) постоянными для BT.2020, например, wR=0,2627, wG=0,6780, wB=0,0593.
После понижающей дискретизации и повышающей дискретизации, может оказаться невозможным получать в точности одинаковые значения для красного, зеленого и синего. Обозначим результирующие значения цвета R, G и B и результирующую яркость Y=wR×R+wG×G+wB×B, где R - (линейный) красный канал, G - зеленый канал и B - синий канал. R получается из значения нелинейного R' путем применения передаточной функции tf(), которая может быть передаточной функцией PQ-EOTF, заданной в SMPTE ST 2084, или другой передаточной функцией, например, BT.1886 или Hybrid Log Gamma (HLG). Таким образом, получаем Y=wR×tf(R')+wG×tf(G')+wB×tf(B').
Значения R', G' и B', в свою очередь, зависят от Y', Cb и Cr согласно
R'=Y'+a13 × Cr
G'=Y' - a22 × Cb - a23 × Cr
B'=Y'+a32 × Cb
где a13, a22, a23 и a32 - положительные постоянные, которые зависят от используемого цветового формата или пространства. Например, для BT.2020 имеем a13=1,4746, a22=0,1646, a23=0,5714, и a32=1,8814. Вставляя это в вышеупомянутое уравнение, получаем Y=wR×tf(Y'+a13 × Cr)+wG×tf(Y' - a22 × Cb - a23 × Cr)+wB×tf(Y'+a32 × Cb).
Заметим, что поскольку Cr и Cb дискретизируются с понижением, изменять их в каждом пикселе не удается. Поэтому можно предположить, что они фиксированы. Однако можно изменять значение яркости Y' таким образом, чтобы результирующее значение яркости Y совпадало с исходным значением яркости Yo. Заметим также, что поскольку tf()нелинейна, и существует в трех местах, в общем случае, невозможно алгебраически инвертировать функцию Y=f(Y') для получения Y'=f-1(Y'). Однако, как описано в AJUSTY (приложении A), линеаризовать tf() можно три раза. Например, первый член wR×tf(Y'+a13 × Cr) можно аппроксимировать линией k1 × Y'+m1 путем линеаризации tf(x) ~ tf(a)+tf'(a)×(x-a).
Например, линеаризация в точке Ro' дает tf(x) ~ tf(Ro')+tf'(Ro')×(x-Ro'). Таким образом, tf(Y'+a13 × Cr) ~ tf(Ro')+tf'(Ro')×(Y'+a13 × Cr - Ro') и, таким образом wR×tf(Y'+a13 × Cr) ~ wR×tf(Ro')+wR×tf'(Ro')×(Y'+a13 × Cr - Ro'), что равно wR×tf(Y'+a13 × Cr) ~ wR×tf'(Ro')×Y'+(wR×tf(Ro')+wR×tf'(Ro')×(a13 × Cr - Ro'))=k1 Y'+m1, где k1=wR×tf'(Ro') и m1=wR×tf(Ro')+wR×tf'(Ro')×(a13 × Cr - Ro').
Осуществление аналогичной линеаризации для wG×tf(Y' - a22 × Cb - a23 × Cr) и wB×tf(Y'+a32 × Cb) путем линеаризации в Go' и Bo', соответственно, означает, что можно Y аппроксимировать как Y ~ k1 × Y'+m1+k2 × Y'+m2+k3×Y'+m3, что описано в AJUSTY (приложении A). Это эквивалентно Y ~ (k1+k2+k3)×Y'+(m1+m2+m3). Это можно инвертировать в Y' ~ Y'k=(Yo - (m1+m2+m3))/(k1+k2+k3).
Более подробно, начиная с Yo=wR×tf(Y'+a13×Cr)+wG×tf(Y'-a22×Cb-a23×Cr)+wB×tf(Y'+a32×Cb), линеаризуем tf(x) ~ tf(a)+tf'(a)(x-a), где точкой линеаризации является a=Ro' для первого экземпляра функции, a=Go' для второго экземпляра, и a=Bo' для третьего экземпляра функции. Это дает Yo=wR×[tf(Ro')+tf'(Ro')(Y'+a13 × Cr - Ro')]+wG×[tf(Go')+tf'(Go')(Y' - a22 × Cb - a23 × Cr - Go')]+wB×[tf(Bo')+tf'(Go')(Y'+a32 × Cb - Bo')].
Сбор членов Y' дает Yo={wR×tf'(Ro')+wG×tf'(Go')+wB×tf'(Bo')}×Y'+{wR×tf(Ro')+wR×tf'(Ro')(a13 × Cr - Ro')+wG×tf(Go')+wG×tf'(Go')(-a22 × Cb -a23 × Cr - Go')+wB×tf(Bo')+wB×tf'(Bo')(a32 × Cb - Bo')}. Теперь можно записать Y'=t/n, где t=Yo - {wR×tf(Ro')+wR×tf'(Ro')(a13 × Cr - Ro')+wG×tf(Go')+wG×tf'(Go')(-a22 × Cb -a23 × Cr - Go')+wB×tf(Bo')+wB×tf'(Bo')(a32 × Cb - Bo')} и n=wR×tf'(Ro')+wG×tf'(Go')+wB×tf'(Bo').
Поскольку Yo=wR×tf(Ro')+wG×tf(Go')+wB×tf(Bo') можно упростить t в t=- {wR×tf'(Ro')(a13 × Cr - Ro')+wG×tf'(Go')(-a22 × Cb -a23 × Cr - Go')+wB×tf'(Bo')(a32 × Cb - Bo')} и, таким образом, получаем уравнение 1:
Y'= -(wR×tf'(Ro')(a13 × Cr - Ro')+wG×tf'(Go')(-a22 × Cb - a23 × Cr - Go')+wB×tf'(Bo')(a32 × Cb - Bo'))/(wR×tf'(Ro')+wG×tf'(Go')+wB×tf'(Bo'))
Это эквивалентно ʺалгоритм 2ʺ в документе [2]. Это часто работает достаточно хорошо. Однако, по мере приближения к точке насыщения, линеаризация нарушается. На фиг. 2 показано поведение PQ EOTF, заданной в SMPTE ST 2084. Выход возрастает на интервале от 0 до 1,0, но после 1,0 выход стабилизируется на 10000.
Заметим, что непосредственно до входных значений единица (1), наклон очень крутой, производная в настоящем документе превышает 90000. При входных значениях, больших единицы, производная в точности равна нулю. Таким образом, в случае линеаризации в точке, где вход чуть ниже единицы, но оптимальный цвет будет иметь вход чуть выше единицы, может случиться непредвиденное.
В настоящем документе подробно рассмотрен пример того, что может случиться:
рассмотрим два пикселя, обозначенные в настоящем документе ʺ1ʺ и ʺ2ʺ, друг за другом:
RGB1=[1000 1000 9995]
RGB2=[0 0 10000]
Процесс понижающей дискретизации сначала будет преобразовывать в нелинейную область,
R'G'B'1=[0,7518 0,7518 0,9999]
R'G'B'2=[0,0000 0,0000 1,0000]
и затем в Y'CbCr (с использованием матрицы преобразования BT.2020):
Y'CbCr1=[0,7665 0,1241 -0,0100]
Y'CbCr2=[0,0593 0,5000 -0,0402]
Теперь понижающая дискретизация заменяет эти два значения интерполированным значением:
Y'CbCr=[0,4129 0,3120 -0,0251]
Используя Cb и Cr из этого интерполированного значения, теперь можно использовать уравнение 1 для получения значения Y'. Для пикселя 1 используются Ro'=0,7518, Go'=0,7518, Bo'=0,9999. Это дает Y'=0,639883 с использованием уравнения 1. Однако этого слишком мало, поскольку это дает значение яркости Y=wR×tf(Y'+a13 × Cr)+wG×tf(Y' - a22 × Cb - a23 × Cr)+wB×tf(Y'+a32 × Cb)=828,89. Однако оптимальное значение яркости должно быть Y'=0,7889, которое будет генерировать значение яркости Yo=wR×1000+wG×1000+wB×9995=1533,4. Существует значительная ошибка между значениями яркости 828,89 и 1533,4.
В этом конкретном примере линейная аппроксимация нарушается, поскольку синий канал насыщается. В частности, оптимальное значение яркости Y', т.е. значение Y', которое будет создать значение яркости Y, ближайшее к исходному значению яркости Yo, что приведет к насыщению синего канала.
Если бы мы знали, что это может случиться, т.е. что цветовой канал насытится, можно было бы удостовериться в том, что линеаризация не происходит в Bo', то есть в 0,9999, на неправильной стороне точки насыщения, но вместо этого линеаризовать, например, в точке 1,25.
Линеаризация в Bo', т.е. 0,9999 в настоящем примере, будет означать, что wB×tf(Y'+a32 × Cb) будет аппроксимироваться как k3×Y'+m3, где k3 превышает 90000. Линеаризация, например, в 1,25, будет означать, что k3=0.
Вместо линеаризации в 1,25 можно заменить уравнение Y=wR×tf(Y'+a13 × Cr)+wG×tf(Y' - a22 × Cb - a23 × Cr)+wB×tf(Y'+a32 × Cb) уравнением Y=wR×tf(Y'+a13 × Cr)+wG×tf(Y' - a22 × Cb - a23 × Cr)+wB×10000, поскольку tf(1)=10000, и осуществлять линеаризацию только в Ro' и Go'. Это приводит к тому же результату.
Настоящие варианты осуществления предусматривают усовершенствованную обработку пикселей, которая решает вышеупомянутые задачи линеаризации. Это, в основном, достигается получением значения цветовой компоненты в цветовом пространстве с использованием либо первой функции или поисковой таблицы (LUT), либо второй, другой функции или LUT в зависимости от того, приводит ли цветовая компонента, дающая наименьшее значение ошибки, к выходу любого цветового канала пикселя за пределы допустимого диапазона, например, его насыщению.
Цветовое пространство или цветовой формат является типом и количеству цветов, которые происходят из комбинаций цветовых компонентов цветовой модели. Цветовая модель является абстрактной конфигурацией, описывающей, каким образом цвета можно представлять кортежами чисел, т.е. цветовых компонент. Цветовые компоненты имеют несколько отличительных признаков, например, тип компоненты, например, оттенок, и его единицы, например, градусы или проценты, или тип шкалы, например, линейный или нелинейный, и его назначенное количество значений, именуемых глубиной цвета или битовой глубиной.
Не ограничительные, но иллюстративные, цветовые пространства, которые совместно используются для пикселей в изображениях и видеозаписях, включают в себя цветовое пространство красного, зеленого, синего (RGB), цветовое пространство яркости, цветности синего и цветности красного (YCbCr, иногда обозначаемое Y'CbCr, Y'Cb'Cr', YCBCR, Y'CBCR или Y'CB'CR') и цветовое пространство яркости и цветностей (XYZ).
На фиг. 3 показана блок-схема последовательности операций, иллюстрирующая способ обработки пикселя в изображении. Способ содержит проверку, на этапе S1, приводит ли цветовая компонента пикселя в цветовом пространстве, дающая наименьшую ошибку между, по меньшей мере, одной цветовой компонентой в другом цветовом пространстве, определенной на основании цветовой компоненты в цветовом пространстве, и, по меньшей мере, одной исходной цветовой компонентой пикселя в другом цветовом пространстве, к выходу любого цветового канала пикселя за пределы допустимого диапазона. Если цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, не приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона, способ переходит к этапу S2. Этот этап S2 содержит получение значения цветовой компоненты в цветовом пространстве с использованием первой функции или первой LUT. Однако, если цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона, способ, вместо этого, переходит к этапу S3. Этот этап S3 содержит получение значения цветовой компоненты в цветовом пространстве с использованием второй, другой функции или второй, другой LUT.
Согласно способу, проиллюстрированному на фиг. 3, сначала осуществляется проверка, приводит ли цветовая компонента в цветовом пространстве к выходу любого цветового канала за пределы допустимого диапазона на этапе S1. Затем, в зависимости от результата проверки, значение этой цветовой компоненты получается на этапе S2 или S3 как выбранное на основании результата проверки с использованием первой функции или LUT или второй, другой функции или LUT. Однако варианты осуществления этим не ограничиваются. В другом варианте осуществления, значение цветовой компоненты сначала может вычисляться с использованием первой функции или извлекаться из первой LUT. Затем осуществляется проверка этапа S1. Если в результате проверки устанавливается, что цветовая компонента не приводит к выходу любого цветового канала за пределы допустимого диапазона, для текущего пикселя используется вычисленное или извлеченное значение цветовой компоненты. Если же в результате проверки устанавливается, что цветовая компонента приводит к выходу любого цветового канала за пределы допустимого диапазона, значение цветовой компоненты вычисляется с использованием второй, другой функции или извлекается из второй, другой LUT. Дополнительным вариантом является вычисление или извлечение значения цветовой компоненты с использованием первой функции или первой LUT и вычисление или извлечение значения цветовой компоненты с использованием второй, другой функции или второй, другой LUT для получения двух значений для цветовой компоненты. После этого, проверка этапа S1 осуществляется для выбора, каковое из этих двух значений использовать для текущего пикселя в зависимости от того, приводит ли цветовая компонента к выходу любого цветового канала за пределы допустимого диапазона.
Таким образом, настоящие варианты осуществления получают значение цветовой компоненты с использованием разных функций или LUT в зависимости от того, приводит ли оптимальное значение цветовой компоненты, т.е. значение, которое дает наименьшую ошибку между, по меньшей мере, одной цветовой компонентной в другом цветовом пространстве и, по меньшей мере, одной исходной цветовой компонентой пикселя в другом цветовом пространстве, к выходу любого цветового канала пикселя за пределы допустимого диапазона.
Каждый цветовой канал пикселя, например, красный цветовой канал, зеленый цветовой канал и синий цветовой канал, имеет заданный допустимый диапазон. Этот допустимый диапазон может задавать верхнюю границу U, т.е., ≤U или <U, нижнюю границу L, т.е., ≥L или >L, или обе верхнюю границу и нижнюю границу, т.е., L≤цветовой канал≤U или L < цветовой канал < U.
Если оптимальное значение цветовой компоненты не приводит к выходу любого из цветовых каналов за пределы допустимого диапазона, т.е., цветовой канал≤U или цветовой канал <U, цветовой канал ≥L или цветовой канал> L, или L≤цветовой канал≤U или L< цветовой канал <U, для получения значения цветовой компоненты используется первая функция или LUT. Если же оптимальное значение цветовой компоненты приводит к выходу цветового канала за пределы допустимого диапазона, т.е. цветовой канал >U или цветовой канал ≥U, или цветовой канал <L или цветовой канал≤L, то, вместо этого, для получения значения цветовой компоненты используется вторая функция или LUT.
Обработка пикселя, предпочтительно, осуществляется для нескольких, т.е., по меньшей мере, двух пикселей в изображении, что схематически проиллюстрировано линией L1 на фиг. 3. Например, обработка на фиг. 3 может осуществляться для каждого пикселя в изображении или, по меньшей мере, для его участка. Изображение, предпочтительно, является изображением видеопоследовательности, и, в частности, видеопоследовательности HDR. В таком случае, способ обработки может осуществляться для пикселей в нескольких изображениях видеопоследовательности (HDR).
Согласно варианту осуществления, этап S1 содержит проверку, приводит ли цветовая компонента пикселя во втором цветовом пространстве, дающая наименьшую ошибку между i) цветовой компонентой в третьем цветовом пространстве, определенной на основании цветовой компоненты во втором цветовом пространстве, и исходной цветовой компонентой в третьем цветовом пространстве определенной на основании исходных цветовых компонентов пикселя в первом цветовом пространстве, или ii) цветовыми компонентами в первом цветовом пространстве, определенными на основании цветовой компоненты во втором цветовом пространстве, и исходными цветовыми компонентами в первом цветовом пространстве к выходу любого цветового канала пикселя за пределы допустимого диапазона. В этом варианте осуществления, этап S2 содержит получение значения цветовой компоненты во втором цветовом пространстве с использованием первой функции или первой LUT, если цветовая компонента во втором цветовом пространстве, дающая наименьшую ошибку, не приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона. Соответственно, этап S3 содержит получение значения цветовой компоненты во втором цветовом пространстве с использованием второй, другой функции или второй, другой LUT, если цветовая компонента во втором цветовом пространстве, дающая наименьшую ошибку цвета, приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона.
В конкретном варианте осуществления, первое цветовое пространство является цветовым пространством RGB. Цветовые компоненты первого цветового пространства, таким образом, являются красной (R), зеленой (G) и синей (B) цветовыми компонентами. Соответственно, второе цветовое пространство, предпочтительно, является цветовым пространством Y'CbCr. В таком конкретном варианте осуществления, цветовая компонента второго цветового пространства, предпочтительно, является яркостной компонентой (Y') пикселя. Третье цветовое пространство, предпочтительно, является цветовым пространством XYZ и цветовая компонента в третьем цветовом пространстве, предпочтительно, является яркостной компонентой (Y).
В таком конкретном варианте осуществления, способ, показанный на фиг. 3, содержит проверку, на этапе S1, приводит ли яркостная компонента (Y') пикселя, дающая наименьшую ошибку между i) яркостью (Y), определенной на основании яркостной компоненты (Y'), и исходной яркостью (Yo), определенной на основании исходных красной, зеленой и синей цветовых компонент (Ro,Go,Bo) пикселя, или ii) красной, зеленой и синей цветовые компоненты (R,G,B) определенный на основании яркостными компонентами (Y') и исходными красной, зеленой и синей цветовыми компонентами (Ro,Go,Bo) пикселя к выходу любого цветового канала пикселя за пределы допустимого диапазона.
Этап S2 содержит, в этом конкретном варианте осуществления, получение значения яркостной компоненты (Y') с использованием первой функции или первой LUT, если яркостная компонента (Y') дающая наименьшую ошибку, не приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона. Этап S3 соответственно содержит получение значения яркостной компоненты (Y') с использованием второй, другой функции или второй, другой LUT, если яркостная компонента (Y') дающая наименьшую ошибку, приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона.
Первая функция или LUT может рассматриваться как функция или LUT по умолчанию для получения оптимальных значений яркостной компоненты (Y'). Эта первая функция или LUT, таким образом, используется для большинства пикселей в изображении для вывода оптимальных значений яркостной компоненты. Однако, для некоторых пикселей, первая функция или LUT будет давать неправильные значения яркостной компоненты (Y'), потенциально приводящие к визуальным артефактам. В результате, первая функция или LUT не будет годиться для получения значений яркостной компоненты, поскольку первая функция или LUT выбирается или адаптируется для использования только, когда ни один цветовой канал не превышает допустимый диапазон. Это означает, что, если оптимальная яркостная компонента (Y') пикселя, например, полученная с использованием первой функции или LUT, дает цветовой канал вне допустимого диапазона, полезнее использовать вторую, другую функцию или LUT для получения оптимального значения яркостной компоненты.
Это было представлено выше, где первая функция Y'=-(wR×tf'(Ro')(a13 × Cr - Ro')+wG×tf'(Go')(-a22 × Cb - a23 × Cr - Go')+wB×tf'(Bo')(a32 × Cb - Bo'))/(wR×tf'(Ro')+wG×tf'(Go')+wB×tf'(Bo')) можно использовать для вычисления значения яркостной компоненты (Y') пикселя, если ни один цветовой канал не выходит за пределы допустимого диапазона. Если же, например, синий цветовой канал превышает максимальное допустимое значение при использовании этой первой функцией, то, вместо этого, для вычисления значения яркостной компоненты (Y') следует использовать вторую функцию Y'=(Yo - wB×10000 - wR×tf(Ro') - wR×tf'(Ro')(a13 × Cr - Ro') - wG×tf(Go') - wG×tf'(Go')(-a22 × Cb - a23 × Cr - Go'))/(wR×tf'(Ro')+wG×tf'(Go')).
Ошибка между значениями яркости или красной, зеленой и синей компонентами может задаваться по-разному. Например, ошибка между яркостью Y, определенной на основании яркостной компоненты Y', и исходной яркостью Yo, определенной на основании исходных красной, зеленой и синей компонент Ro, Go, Bo может задаваться как |Y-Yo| или (Y-Yo)2. Соответственно, ошибка между красной, зеленой и синей компонентами R, G, B, определенными на основании яркостной компоненты Y', и исходными красной, зеленой и синей компонентами Ro, Go, Bo может задаваться как |R-Ro|+|G-Go|+|B-Bo| или (R-Ro)2+(G-Go)2+(B-Bo)2, или wR|R-Ro|+wG|G-Go|+wB|B-Bo| или wR(R-Ro)2+wG(G-Go)2+wB(B-Bo)2.
Согласно варианту осуществления, этап S1 содержит проверку, приводит ли цветовая компонента в цветовом пространстве, дающая наименьшую ошибку к любой цветовой канал пикселя, к обрезке любого цветового канала пикселя.
Обрезка является функцией, хорошо известной в компьютерной технике, и предусматривает замену значения параметра, превышающего максимальное значение, максимальным значением, или падающего ниже минимального значения, минимальным значением. Например, функция обрезки может задаваться как clip(a, L, U), которая выводит L, если a<L, U если a>U и, иначе, a.
Цветовая компонента, приводящая к обрезке, предполагает, что значение цветовой компоненты выходит за пределы допустимого диапазона и заменяется максимальным или минимальным значением допустимого диапазона.
В конкретном варианте осуществления, этап S1 содержит проверку, приводит ли цветовая компонента в цветовом пространстве, предпочтительно, яркостная компонента Y' в цветовом пространстве Y'CbCr, дающая наименьшую ошибку, к обрезке любого цветового канала, предпочтительно любой из красного, зеленого и синего цветовых каналов, пикселя до нуля или единицы. Таким образом, в этом конкретном варианте осуществления, допустимый диапазон составляет (0, 1). Таким образом, в этом конкретном варианте осуществления нуль является минимальным допустимым значением, и единица является максимальным допустимым значением.
В другом варианте осуществления, этап S1 содержит проверку, приводит ли цветовая компонента в цветовом пространстве, дающая наименьшую ошибку к тому, что любой цветовой канал пикселя больше единицы или меньше нуля, или больше или равен единице или меньше или равен нулю. Это означает, что если цветовая компонента≤0 или ≥1 или <0 или >1, то способ переходит от этапа S1 на фиг. 3 к этапу S3. Иначе способ переходит от этапа S1 к этапу S2.
В вышеописанных вариантах осуществления, допустимый диапазон имеет верхнюю границу, U или 1, и нижнюю границу, L или 0. В другом варианте осуществления, только одна из границ представляет интерес, например, верхняя граница. В таком варианте осуществления, этап S1 содержит проверку, приводит ли цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, к насыщению любого цветового канала пикселя.
Цветовой канал насыщается, если он превышает верхнюю границу или максимальное значение, для которого удостоверена первая функция или LUT.
Согласно варианту осуществления, этап S2 на фиг. 3 содержит вычисление значения цветовой компоненты в цветовом пространстве с использованием первой функции линеаризации, если цветовая компонента в цветовом пространстве не приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона. Этап S3, соответственно, содержит в этом варианте осуществления, вычисление значения цветовой компоненты в цветовом пространстве с использованием второй, другой функции линеаризации или обратной функции, если цветовая компонента в цветовом пространстве приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона.
Таким образом, разные функции линеаризации или функция линеаризации или обратная функция используется для вычисления значения цветовой компоненты в цветовом пространстве. Затем эти функции удостоверяются и адаптируются для разных ситуаций, т.е. выходит ли какой-либо цветовой канал пикселя за пределы допустимого диапазона. Как отчетливо показано на фиг. 2, функция PQ EOTF ведет себя очень по-разному в зависимости от того, ниже ли или выше 1 ввод в PQ EOTF. Это означает, что, как показано в настоящем документе, невозможно точно представить PQ EOTF единственной функцией линеаризации, охватывающий входные значения как ниже, так и выше единицы. Поэтому, согласно варианту осуществления, первая функция линеаризации PQ EOTF, или другая передаточная функция, используется для входных значений функции ниже единицы и другая функция линеаризации или обратная функция PQ EOTF, или другая передаточная функция, используется для входных значений функции выше единицы.
На фиг. 4 показана блок-схема последовательности операций, иллюстрирующая конкретный вариант осуществления этапа S3 на фиг. 3. Способ переходит от этапа S1 на фиг. 3 к этапу S10. Этап S10 содержит выбор второй, другой функции линеаризации или обратной функции в зависимости от того, какой цветовой канал или цветовые каналы пикселя, который(е) выходит или выходят за пределы допустимого диапазона. Затем следующий этап S11 содержит вычисление значения цветовой компоненты в цветовом пространстве с использованием выбранной второй, другой функции линеаризации или выбранной обратной функции.
Этапы S10 и S11 проиллюстрированы на фиг. 4 как два этапа. Однако выбор функции линеаризации или обратной функции и вычисление значения цветовой компоненты может осуществляться на единственном этапе. В таком варианте осуществления, который в настоящем документе дополнительно раскрыт, общая функция линеаризации задается с разными членами, которые устанавливаются на нуль в зависимости от того, выходит ли цветовой канал за пределы допустимого диапазона, таким образом, в основном, приводя к другой функции линеаризации.
Таким образом, этот конкретный вариант осуществления дифференцирует функции линеаризация или обратные функции в зависимости от того, какой(ие) цветовой(ые) канал(ы) выходит(ят) за пределы допустимого диапазона. Например, данную функцию линеаризации можно использовать, если красный цветовой канал выходит за пределы допустимого диапазона, и другая функция линеаризации используется, если зеленый или синий цветовой канал выходит за пределы допустимого диапазона.
В предпочтительном варианте осуществления, разные функции линеаризации используются на этапе S11 в зависимости от того, выходит ли красный, зеленый или синий цветовой канал за пределы допустимого диапазона. В другом предпочтительном варианте осуществления, разные обратные функции используются на этапе S11 в зависимости от того, какая комбинация двух цветовых каналов выходит за пределы допустимого диапазона.
Поэтому, в этом конкретном варианте осуществления существует три разные функции линеаризации LFR(.), LFG(.) и LFB(.), которые выбираются, если один из цветовых каналов выходит за пределы допустимого диапазона. В этом случае LFR(.) выбирается, если красный цветовой канал выходит за пределы допустимого диапазона, LFG(.)выбирается, если зеленый цветовой канал выходит за пределы допустимого диапазона и LFB(.) выбирается, если синий цветовой канал выходит за пределы допустимого диапазона. Соответственно, существуют три разные обратные функции IFRG(.), IFRB(.) и IFGB(.) в зависимости от того, выходят ли за пределы допустимого диапазона красный и зеленый цветовые каналы, красный и синий цветовые каналы или зеленый and синий цветовые каналы.
Одна проблема состоит в том, что нужно заранее знать, будет ли насыщаться любой цветовой канал или нет. В конце концов, в ранее описанном примере, если бы оптимальный Y' был чуть ниже, то синий канал не насыщался для оптимального Y', и тогда линеаризация с k3=90000 была бы правильной.
Решить эту проблему можно, рассмотрев преобразование из Y'CbCr в R'G'B':
R'=Y'+a13 × Cr
G'=Y' - a22 × Cb - a23 × Cr
B'=Y'+a32 × Cb
Заметим, что Cr и Cb фиксированы, как и a13, a22, a23 и a32. Это означает, что существует значение Y'redclip, для которого красный канал всегда обрезается при Y' > Y'redclip. Это значение легко вычислить как Y'redclip=1 - a13 × Cr, поскольку это означает, что R'=Y'+a13 × Cr > Y'redclip+a13 × Cr=1 - a13 × Cr+a13 × Cr=1. Аналогично, получаем Y'greenclip=1+a22 × Cb+a23 × Cr and Y'blueclip=1 - a32 × Cb.
Теперь можно вычислить самое низкое значение, где любое из эти значений обрезается, Y'firstclip=min(Y'redclip, Y'greenclip, Y'blueclip).
Теперь можно вычислить яркость для этого значения Yfirstclip=wR×tf(Y'firstclip+a13 × Cr)+wG×tf(Y'firstclip - a22 × Cb - a23 × Cr)+wB×tf(Y'firstclip+a32 × Cb).
Теперь, если Yo < Yfirstclip, известно, что наилучший Y' не будет приводить к насыщению каких-либо цветовых каналов, и, таким образом, безопасно использовать уравнение 1 в качестве функции линеаризации на этапе S2 фиг. 3.
Однако предположим, что Yo > Yfirstclip. Предположим, например, Y'firstclip=Y'blueclip. Это означает, что синий канал будет насыщаться, и его нужно линеаризовать в точке выше 1,0, например, 1,25. Однако возможно, что зеленый или красный канал также будет насыщаться. Таким образом, придется испытать Y'secondclip=median(Y'redclip, Y'greenclip, Y'blueclip), где median дает среднее значение.
Теперь вычислим яркость для этого второго случая Ysecondclip=wR×tf(Y'secondclip+a13 × Cr)+wG×tf(Y'secondclip - a22 × Cb - a23 × Cr)+wB×tf(Y'secondclip+a32 × Cb).
Теперь, если Yo < Ysecondclip, известно, что насыщается только синяя компонента, и можно линеаризовать в Ro', Go' и 1,25. Если же Yo > Ysecondclip, и предположить, что Y'secondclip=Y'redclip, то можно линеаризовать в 1,25, Go', и 1,25.
Заметим, что все три цветовых канала не могут одновременно насыщаться для входов Y' в [0, 1], поэтому в настоящем документе можно остановиться.
В итоге, вычисляются два дополнительных значения яркости. Это неприятно, поскольку требует дополнительных затрат. Если же это происходит, нужно быть уверенным,что используется правильная формула. Также это может стоить меньше, чем в наихудшем случае необходимости осуществлять десять итераций, что было наихудшим случаем в AJUSTY, см. приложение A.
Ниже приведен псевдокод для безопасной аппроксимации Y':
Этап 1: вычислять Y'redclip, Y'greenclip, Y'blueclip:
Y'redclip=1 - a13 × Cr,
Y'greenclip=1+a22 × Cb+a23 × Cr,
Y'blueclip=1 - a32 × Cb.
Этап 2: вычислять яркость для самого низкого значения обрезки:
Y'firstclip=min(Y'redclip, Y'greenclip, Y'blueclip)
Yfirstclip=wR×tf(Y'firstclip+a13 × Cr)+wG×tf(Y'firstclip - a22 × Cb - a23 × Cr)+wB×tf(Y'firstclip+a32 × Cb)
if(Yo < Yfirstclip)
{
вычислять Y' согласно линеаризации в Ro', Go', и Bo':
Y'=-(wR×tf'(Ro')(a13 × Cr - Ro')+wG×tf'(Go')(-a22 × Cb - a23 × Cr - Go')+wB×tf'(Bo')(a32 × Cb - Bo'))/(wR×tf'(Ro')+wG×tf'(Go')+wB×tf'(Bo'))
STOP
}
Этап 3: обрезается по меньшей мере, один канал. Проверить, не обрезается ли другой канал:
Y'secondclip=median(Y'redclip, Y'greenclip, Y'blueclip)
Ysecondclip=wR×tf(Y'secondclip+a13 × Cr)+wG×tf(Y'secondclip - a22 × Cb - a23 × Cr)+wB×tf(Y'secondclip+a32 × Cb)
if(Yo < Ysecondclip)
{
Насыщается только один канал. Использовать разные аппроксимации в зависимости от того, какой канал насыщается.
if Y'firstclip=Y'blueclips, использовать
Y'=(Yo - wB×10000 - wR×tf(Ro') - wR×tf'(Ro')(a13 × Cr - Ro') - wG×tf(Go') - wG×tf'(Go')(-a22 × Cb - a23 × Cr - Go'))/(wR×tf'(Ro')+wG×tf'(Go'))
if Y'firstclip=Y'redclips, использовать
Y'=(Yo - wR×10000 - wB×tf(Bo') - wB×tf'(Bo')(a32 × Cb - Bo') - wG×tf(Go') - wG×tf'(Go')(-a22 × Cb - a23 × Cr - Go'))/(wB×tf'(Bo')+wG×tf'(Go'))
if Y'firstclip=Y'greenclips, использовать
Y'=(Yo - wG×10000 - wB×tf(Bo') - wB×tf'(Bo')(a32 × Cb - Bo') - wR×tf(Ro') - wR×tf'(Ro')(a13 × Cr - Ro'))/(wB×tf'(Bo')+wR×tf'(Ro'))
STOP
}
Этап 4: Насыщаются два канала. Линеаризация не нужна, поскольку передаточная функция теперь обратима.
If Y'firstclip=Y'redclips AND Y'secondclip=Y'greenclips OR Y'firstclip=Y'greenclips AND Y'secondclip=Y'redclips
Y'=tf-1((Yo - 10000wR - 10000wG)/wB) - a32 × Cb
If Y'firstclip=Y'redclips AND Y'secondclip=Y'blueclips OR Y'firstclip=Y'blueclips AND Y'secondclip=Y'redclips
Y'=tf-1((Yo - 10000wR - 10000wB)/wG)+a22 × Cb+a23 × Cr
If Y'firstclip=Y'greenclips AND Y'secondclip=Y'blueclips OR Y'firstclip=Y'blueclips AND Y'secondclip=Y'greenclips
Y'=tf-1((Yo - 10000wG - 10000wB)/wR) - a13 × Cr
где tf-1()-функция, обратная передаточной функции EOTF.
STOP
Принцип, лежащий в основе вариантов осуществления, состоит в определении, насыщаются ли отдельные цветовые каналы, т.е. красный, зеленый или синий, до максимального допустимого значения до линеаризации. В порядке примера, если можно определить, что Y', которая дает наилучший Y, т.е. приближается к Yo, означает, что красный канал будет насыщаться, важно, чтобы линеаризация передаточной функции для этого канала была постоянной, вместо наклонной линии. Это позволяет избегать больших ошибок.
Таким образом, принцип варианта осуществления изобретения состоит в определении, будет ли решение уравнения (r): Yo=wR×tf(Y'+a13×Cr)+wG×tf(Y'-a22×Cb-a23×Cr)+wB×tf(Y'+a32×Cb) приводить к тому, что значения в скобках превышают 1, для разных цветовых каналов. Поскольку все значения Yo, Cr, Cb, wR, wG, wB, a13, a22, a23 и a32 известны, решением уравнения будет значение Y', будем называть эту величину Y'*.
Принцип варианта осуществления изобретения состоит в том, что даже до того, как известно точное значение Y'*, производится определение, будет ли оно приводить к насыщению любого из цветовых каналов, т.е.
Y'*+a13 × Cr > 1 уравнение (a)
Y'* - a22 × Cb - a23 × Cr > 1 уравнение (b)
Y'*+a32 × Cb > 1 уравнение (c)
Если ни одно из этих условий не выполняется, т.е. известно, что Y'* не будет приводить к тому, что любое из вышеприведенных уравнения (a) - (c) превышает 1, можно безопасно использовать первый способ вычисления или получения Y'*. Если выполняется любое из условий, используется другой способ вычисления или получения Y'*.
В вышеупомянутом варианте осуществления, отыскивается самое низкое значение Y', которое будет приводить к насыщению, по меньшей мере, одного из уравнений (a) - (c), и это значение будет называться Y'firstclip. Затем можно вычислять яркость Y, полученную в результате использования Y'= Y'firstclip путем ее подстановки в уравнение (r) для получения Yfirstclip=wR×tf(Y'firstclip+a13 × Cr)+wG×tf(Y'firstclip - a22 × Cb - a23 × Cr)+wB×tf(Y'firstclip+a32 × Cb).
Теперь, если желаемый Yo меньше Yfirstclip, можно быть уверенным в том, что оптимальное значение Y'* будет меньше Y'firstclip. Поэтому, не зная точного значения Y'*, известно, что он не будет превышать 1 в любом из уравнений (a) - (c), и можно безопасно использовать первую аппроксимацию для вычисления приближенного значения Y'*, например, Y'=-(wR×tf'(Ro')(a13 × Cr - Ro')+wG×tf'(Go')(-a22 × Cb - a23 × Cr - Go')+wB×tf'(Bo')(a32 × Cb - Bo'))/(wR×tf'(Ro')+wG×tf'(Go')+wB×tf'(Bo')).
Если же Yo больше Yfirstclip, нельзя использовать вышеприведенную формулу для вычисления Y'*, но нужно использовать то, которое учитывает, что один или более из каналов обрезаются.
Согласно варианту осуществления, этап S1 на фиг. 3 содержит проверку, приводит ли яркостная компонента Y' пикселя, дающая наименьшую ошибку между яркостью Y, определенной на основании яркостной компоненты Y', и исходной яркостью Yo, определенной на основании исходных красной, зеленой и синей цветовых компонент RoGoBo пикселя, к обрезке до единицы любого из красного, зеленого и синего цветовых каналов пикселя, т.е. насыщению или превышению или равенству единице. В этом варианте осуществления, этап S2 содержит вычисление значения яркостной компоненты Y' как
Figure 00000001
Figure 00000002
если яркостная компонента Y' не приводит к обрезке любого из красного, зеленого, синего цветовых каналов пикселя до единицы. В этом варианте осуществления,
Figure 00000003
обозначают весовые коэффициенты цветов,
Figure 00000004
обозначают положительные постоянные цветового преобразования из цвета Y'CbCr в цвет R'G'B', Cb, Cr обозначают цветностные компоненты пикселя, P=tf(P'), где P=красный (R), зеленый (G) или синий (B), tf(.) - передаточная функция, и tf'(Po') обозначает производную передаточной функции по Po'. В этом варианте осуществления, этап S10 на фиг. 4 содержит выбор второй, другой функции линеаризации
Figure 00000005
при обрезке красного цветового канала, выбор второй, другой функции линеаризации
Figure 00000006
при обрезке зеленого цветового канала, и выбор второй, другой функции линеаризации
Figure 00000007
при обрезке синего цветового канала. Этап S10 также содержит выбор обратной функции
Figure 00000008
при обрезке красного цветового канала и зеленого цветового канала, где tf-1(.) обозначает функцию, обратную передаточной функции tf(.), выбор обратной функции
Figure 00000009
при обрезке красного цветового канала и синего цветового канала, и выбор обратной функции
Figure 00000010
при обрезке зеленого цветового канала и синего цветового канала.
Согласно варианту осуществления, способ также содержит дополнительный этап S20, показанный на фиг. 5. Этот этап S20 содержит вычисление
Figure 00000011
,
Figure 00000012
и
Figure 00000013
. Затем способ переходит к этапу S1 на фиг. 3. В этом варианте осуществления, этап S1 содержит проверку, приводит ли яркостная компонента Y', дающая наименьшую ошибку, к обрезке до единицы любого из красного, зеленого и синего цветовых каналов пикселя на основании наименьшего значения Y'redclip, Y'greenclip и Y'blueclip.
На фиг. 6 показана блок-схема последовательности операций, иллюстрирующая дополнительные этапы способа, показанного на фиг. 5. Способ переходит от этапа S20 на фиг. 5 к этапу S21 на фиг. 6. Этот этап S21 содержит выбор наименьшего значения Y'firstclip=min(Y'redclip, Y'greenclip, Y'blueclip). Затем способ переходит к этапу S22, который содержит вычисление
Figure 00000014
.
Затем способ переходит к этапу S1 на фиг. 3. Этот этап S1 содержит, в этом варианте осуществления, проверку, выполняется ли Yo<Yfirstclip. Если Yo меньше Yfirstclip, способ переходит к этапу S2, где значение яркостной компоненты вычисляется с использованием первой функции линеаризации, как описано выше. Если Yo не меньше Yfirstclip, то следует использовать другую функцию линеаризации или обратную функцию, и способ переходит к этапу S3 на фиг. 3 или этапу S10 на фиг. 4.
На фиг. 7 показана блок-схема последовательности операций, иллюстрирующая дополнительные этапы способа, показанного на фиг. 6. Способ переходит от этапа S22 на фиг. 6. Следующий опциональный этап S23 содержит проверку, выполняется ли Yo<Yfirstclip. Если Yo<Yfirstclip способ переходит к этапу S27, который содержит определение, что яркостная компонента Y', дающая наименьшую ошибку, не приводит к обрезке любого из красного, зеленого и синего цветовых каналов пикселя, например, обрезке до единицы, насыщению или (равенству или) превышению единицы. Затем способ переходит к этапу S2 на фиг. 3, который содержит вычисление значения яркостной компоненты Y' с использованием функции линеаризации
Figure 00000001
Figure 00000015
. Если же Yo не меньше Yfirstclip на этапе S23, способ переходит к этапу S24. Этот этап S24 содержит выбор медианного значения Y'secondclip=median(Y'redclip, Y'greenclip, Y'blueclip). Способ также содержит вычисление, на этапе S25,
Figure 00000016
. Способ переходит к опциональному этапу S26, который содержит проверку условия Yo<Ysecondclip. Если Yo<Ysecondclip, способ переходит к этапу S28, который содержит определение, что яркостная компонента Y', дающая наименьшую ошибку, приводит к обрезке одного из красного, зеленого и синего цветовых каналов пикселя. Затем способ переходит к этапу S3 на фиг. 3 или этапу S10 на фиг. 10, на котором значение яркостной компоненты Y' вычисляется с использованием одной из следующих функций линеаризации, в зависимости от того, какой цветовой канал обрезается,
Figure 00000005
Figure 00000006
Figure 00000007
Соответственно, если Yo не меньше Ysecondclip, способ переходит к этапу S29. Этот этап S29 содержит определение, что яркостная компонента Y', дающая наименьшую ошибку, приводит к обрезке двух из красного, зеленого и синего цветовых каналов пикселя. Затем способ переходит к этапу S3 на фиг. 3 или этапу S10 на фиг. 10, на котором значение яркостной компоненты Y' вычисляется с использованием один из следующих обратные функции, в зависимости от того, какие цветовые каналы обрезаются
Figure 00000008
Figure 00000009
Figure 00000010
Функция линеаризации, описанная выше для случая, когда никакие цветовые каналы не обрезаются, функции линеаризации для случаев, когда обрезается один цветовой канал, и обратные функции для случаев, когда два цветовых канала обрезаются до единицы, следует рассматривать лишь как иллюстративные, но не ограничительные примеры функций линеаризация и обратных функций. Эти иллюстративные функции основаны на линеаризации передаточной функции tf(x) посредством tf(a)+tf'(a)×(x-a). В объеме вариантов осуществления возможны другие варианты линеаризации. Например, можно использовать tf(a)+tf'(a)×(x-a)+tf''(a)×(x-a)2/2, т.е. аппроксимацию передаточной функции с использованием полином второй степени вместо полинома первой степени.
В другом варианте осуществления, не вычисляется Yfirstclip или Ysecondclip. Вместо этого используется заранее определенный поисковая таблица (LUT). В поисковую таблицу вводятся Yo, Cr и Cb. Постоянные wR, wG, wB, a13, a22 a23 и a32 не изменяются от пикселя к пикселю и, таким образом не подлежат вводу в LUT. Из поисковой таблицы, согласно варианту осуществления, выводятся три бита ba, bb, bc. Если ba=0, это означает, что оптимальный Y'* не приводит к насыщению уравнения (a), т.е., не приводит к тому, что уравнение (a) превышает 1. Если же ba=1, это означает, что оптимальный Y'* действительно приводит к насыщению уравнения (a), т.е. Y'*+a13 × Cr > 1. Аналогично, bb указывает, будет ли оптимальный Y'* приводить к насыщению уравнения (b), и bc указывает, будет ли оптимальный Y'* приводить к насыщению уравнения (c). В этом варианте осуществления, на первом этапе получается ba, bb и bc из LUT (ba, bb, bc)=LUT(Yo, Cr, Cb).
Теперь, если ba==bb==bc==0, используется первая аппроксимация для вычисления приближенного значения Y'*, например, может использоваться Y'=-(wR×tf'(Ro')(a13 × Cr - Ro')+wG×tf'(Go')(-a22 × Cb - a23 × Cr - Go')+wB×tf'(Bo')(a32 × Cb - Bo'))/(wR×tf'(Ro')+wG×tf'(Go')+wB×tf'(Bo')). Если же один или более из ba, bb, bc равно 1, для вычисления значения Y'* используется другая аппроксимация.
В порядке примера, если ba=0, bb=0, bc=1, может использоваться Y'=(Yo - wB×10000 - wR×tf(Ro') - wR×tf'(Ro')(a13 × Cr - Ro') - wG×tf(Go') - wG×tf'(Go')(-a22 × Cb - a23 × Cr - Go'))/(wR×tf'(Ro')+wG×tf'(Go')). В порядке другого примера, если ba=1, bb=0, bc=1, для вычисления приближенного значения Y' может использоваться Y'=tf-1((Yo - 10000wR - 10000wB)/wG)+a22 × Cb+a23 × Cr.
Следует отметить, что в каждом из вышеупомянутых случаев для получения формулы для вычисления Y' использовалась линеаризация. Заметим однако, что эта формула аппроксимируется, и для получения Y' можно использовать другие аппроксимации. В порядке примера, можно обучать нейронную сеть для каждого из случаев. Таким образом, в одном варианте осуществления, сначала получаются ba, bb, bc с использованием LUT: (ba, bb, bc)=LUT(Yo, Cb, Cr).
Затем для вычисления Y'* используется одна из следующих семи нейронных сетей:
if(ba==0 AND bb == 0 AND bc==0)
Y'=neural_network_000(Yo, Cb, Cr)
else if(ba == 0 AND bb == 0 AND bc == 1)
Y'=neural_network_001(Yo, Cb, Cr)
else if(ba == 0 AND bb == 1 AND bc == 0)
Y'=neural_network_010(Yo, Cb, Cr)
else if(ba == 1 AND bb == 0 AND bc == 0)
Y'=neural_network_100(Yo, Cb, Cr)
else if(ba == 0 AND bb == 1 AND bc == 1)
Y'=neural_network_011(Yo, Cb, Cr)
else if(ba == 1 AND bb == 0 AND bc == 1)
Y'=neural_network_101(Yo, Cb, Cr)
else if(ba == 1 AND bb == 1 AND bc == 0)
Y'=neural_network_110(Yo, Cb, Cr)
else
Y=1
Эти семь нейронных сетей заранее обучаются с использованием данных, полученных только из соответствующих случаев, например, neural_network_011 обучается только на данных, где насыщаются оба зеленый и синий каналы.
Заметим также, что в вышеописанном способе LUT может не давать правильный ответ. Чтобы использовать LUT, в действительности нужно сначала квантовать входные переменные Yo -> Yoq, Cb -> Cbq, Cr -> Crq. Поэтому полученный выход (ba, bb, bc)=LUT(Yoq, Cbq, Crq) в действительности является ответом, будет ли решение Y'*, которое удовлетворяет Yo=wR×tf(Y'q+a13×Crq)+wG×tf(Y'q-a22×Cbq-a23×Crq)+wB×tf(Y'q+a32×Cbq), приводить к насыщению любого цветового канала, будет ли приводить Y'*, которое удовлетворяет Yo=wR×tf(Y'+a13×Cr)+wG×tf(Y'-a22×Cb-a23×Cr)+wB×tf(Y'+a32×Cb), к насыщению любого цветового канала. Однако, будем надеяться, что разность достаточно мала для этого, чтобы быть OK. Квантификация означает, что значения Yo, Cb и Cr представлены соответствующий заранее определенным количеством битов.
Вместо получения ba, bb и bc с использованием LUT, конечно, можно вычислять их с использованием
if(Yo > Yredclip)
ba=1
else
ba=0
где Yredclip=wR×tf(Y'redclip+a13×Cr)+wG×tf(Y'redclip-a22×Cb-a23×Cr)+wB×tf(Y'redclip+a32×Cb), которое можно упростить до Yredclip=wR×10000+wG×tf(Y'redclip-a22×Cb-a23×Cr)+wB×tf(Y'redclip+a32×Cb) и где Y'redclip=Y'redclip=1 - a13 × Cr. bb и bc можно вычислять аналогично. В этом случае они будут точными.
Таким образом, согласно варианту осуществления LUT используется в способе, показанном на фиг. 3. В этом варианте осуществления, этап S1 на фиг. 3 содержит извлечение, из LUT и для каждого цветового канала красного, зеленого и синего цветовых каналов пикселя с использованием исходных яркостной Yo и цветностных компонент Cb, Cr пикселя или их квантованных версий в качестве входа, бита, указывающего, приводит ли яркостная компонента Y', дающая наименьшую ошибку, к обрезке цветового канала, например, обрезке до единицы, насыщению или (равенству или) превышению единицы.
В другом варианте осуществления, также рассматривается обрезка до нуля. В этом случае используется
if(Yo > Yredclip)
ba=1
else if (Yo < YredclipZero)
ba=-1
else
ba=0
где Yredclip вычисляется согласно вышесказанному, но YredclipZero равно wR×tf(Y'redclipZero+a13×Cr)+wG×tf(Y'redclipZero-a22×Cb-a23×Cr)+wB×tf(Y'redclipZero+a32×Cb) и Y'redclipZero=- a13 × Cr. bb и bc вычисляются аналогично. Таким образом, можно использовать
if(ba==0 AND bb == 0 AND bc==0)
Y'=neural_network_000(Yo, Cb, Cr)
else if(ba == 0 AND bb == 0 AND bc == 1)
Y'=neural_network_001(Yo, Cb, Cr)
else if(ba == 0 AND bb == 1 AND bc == 0)
Y'=neural_network_010(Yo, Cb, Cr)
else if(ba == 1 AND bb == 0 AND bc == 0)
Y'=neural_network_100(Yo, Cb, Cr)
else if(ba == 0 AND bb == 1 AND bc == 1)
Y'=neural_network_011(Yo, Cb, Cr)
else if(ba == 1 AND bb == 0 AND bc == 1)
Y'=neural_network_101(Yo, Cb, Cr)
else if(ba == 1 AND bb == 1 AND bc == 0)
Y'=neural_network_110(Yo, Cb, Cr)
else if(ba == 1 AND bb == 1 AND bc == 1)
Y'=1
else if(ba == 0 AND bb == 0 AND bc == -1)
Y'=neural_network_00m(Yo, Cb, Cr)
else if(ba == 0 AND bb == =1 AND bc == 0)
Y'=neural_network_0m0(Yo, Cb, Cr)
else if(ba == -1 AND bb == 0 AND bc == 0)
Y'=neural_network_m00(Yo, Cb, Cr)
else if(ba == 0 AND bb == -1 AND bc == -1)
Y'=neural_network_0mm(Yo, Cb, Cr)
else if(ba == -1 AND bb == 0 AND bc == -1)
Y'=neural_network_m0m(Yo, Cb, Cr)
else if(ba == -1 AND bb == -1 AND bc == 0)
Y'=neural_network_mm0(Yo, Cb, Cr)
else if(ba == -1 AND bb == -1 AND bc == -1)
Y'=0
На фиг. 8 показана блок-схема последовательности операций, иллюстрирующая дополнительный этап способа, показанного на фиг. 3. Этот этап S30 содержит вычисление
Figure 00000017
,
Figure 00000018
и
Figure 00000019
.
Figure 00000004
обозначают положительные постоянные цветового преобразования из цвета Y'CbCr в цвет R'G'B', Y' обозначает яркостную компоненту пикселя, Cb, Cr обозначают цветностные компоненты пикселя. Затем способ переходит к этапу S1 на фиг. 3. В этом варианте осуществления, этап S1 содержит проверку, ли яркостная компонента Y' пикселя, дающая наименьшую ошибку между i) яркостью Y, определенной на основании яркостной компоненты Y', и исходной яркостью Yo, определенной на основании исходных красной, зеленой и синей цветовых компонент RoGoBo пикселя или ii) красной, зеленой и синей цветовыми компонентами RGB, определенными на основании яркостной компоненты Y', и исходными красной, зеленой и синей цветовыми компонентами RoGoBo пикселя приводит к обрезке до нуля любого из красного, зеленого и синего цветовых каналов пикселя, т.е. (равенстве или) преуменьшению нуля, на основании, по меньшей мере, одного из
Figure 00000017
,
Figure 00000018
и
Figure 00000020
.
Таким образом, этот вариант осуществления проверяет, обрезается ли любой цветовой канал пикселя до нуля. Этот вариант осуществления можно использовать самостоятельно, т.е. вместо проверки, обрезается ли любой цветовой канал пикселя до единицы. Альтернативно, эти два варианты используются совместно. В таком случае, способ содержит проверку, обрезается ли любой цветовой канал пикселя до единицы, и проверку, обрезается ли любой цветовой канал пикселя до нуля. Это дополнительно представлено в настоящем документе ниже.
При минимизации (Y-Yo)2, хотя обрезка до 1 будет создать наихудшие ошибки, было установлено, что обрезка до 0 также будет создать ошибки, хотя и менее серьезные. Таким образом, аспект вариантов осуществления изобретения предусматривает проверку, обрезается ли наилучший Y' до 0 или 1 в любом из цветовых каналов.
Можно записать общую формулу, которая автоматически адаптируется к случаю, когда нуль или одна компонента обрезается либо до 0, либо до 1.
Для этого вводятся, например, две вспомогательные переменные n и l. Они определяются как:
n[0]=0, если наилучший возможный Y'* будет обрезать красную компоненту либо до 0, либо до 1,
n[0]=1 в противном случае.
Аналогично n[1] указывает, обрезается ли зеленая компонента, и n[2] указывает, обрезается ли синяя компонента. Кроме того, l[0]=1, если наилучший возможный Y'* будет обрезать красную компоненту до 1, l[0]=0 в противном случае. Аналогично l[1] и l[2] применяются для зеленой и синей компонент.
Декодер будет получать три значения Y', Cb и Cr, и из них вычислять R', G', B' с использованием
R'=clip(Y'+a13 × Cr)
G'=clip(Y' - a22 × Cb - a23 × Cr)
B'=clip(Y'+a32 × Cb)
где clip(x) обрезается значение до интервала [0, 1]. Используя
Rt=a13 × Cr
Gt=-a22 × Cb - a23 × Cr
Bt=a32 × Cb
это можно упростить до
R'=clip(Y'+Rt)
G'=clip(Y'+Gt)
B'=clip(Y'+Bt).
Для упрощения системы обозначений можно использовать нормализованные значения, где яркость Y проходит от нуля до единицы, и выход передаточной функции tf(.) проходит от нуля до единицы.
Для получения линейных значений, декодер будет применять передаточную функцию R=tf(R'), и аналогично для зеленой и синей компонент. Однако, заметим, что R=tf(R')=tf(clip(Y'+Rt)) можно записать как R=l[0]+n[0]×tf(R'), и то же самое для зеленого и синего. Теперь, если нужно минимизировать ошибку яркости Y, приходится вычислять яркость на декодере Y=wR×tf(R')+wG×tf(G')+wB×tf(B'). Таким образом, с использованием вышеупомянутой замены, можно записать Y=wR×l[0]+wR×n[0]×tf(Y'+ Rt)+wG×l[1]+wG×n[1]×tf(Y'+Gt)+wB×l[2]+wB×n[2]×tf(Y'+Bt), которые можно записать Y-wR×l[0]-wG×l[1]-wB×l[2]=wR×n[0]×tf(Y'+ Rt)+wG×n[1]×tf(Y'+Gt)+wB×n[2]×tf(Y'+Bt).
Теперь можно линеаризовать tf() вокруг Ro', Go' и Bo'. Для красного канала, используется tf(x)~tf(Ro')+(x-Ro')×tf'(Ro'), где Ro'=tf(Ro), и Ro - линейная красная компонента исходного пикселя. То же самое делается для зеленого и синего каналов и получается Y - wR×l[0] - wG×l[1] - wB×l[2]=wR×n[0]×[tf(Ro')+(Y'+ Rt - Ro')×tf'(Ro')]+wG×n[1]×[ tf(Go')+(Y'+ Gt - Go')×tf'(Go')]+wB×n[2]×[tf(Bo')+(Y'+Bt - Bo')×tf'(Bo')].
Получается Y - wR×l[0] - wG×l[1] - wB×l[2] - wR×n[0]×[tf(Ro')+(Rt - Ro')×tf'(Ro'] - wG×n[1]×[tf(Go')+(Gt - Go')×tf'(Go'] - wB×n[2]×[tf(Bo')+(Bt - Bo')×tf'(Bo']=wR×n[0]×Y'×tf'(Ro')+wG×n[1]×Y'×tf'(Go')+wB×n[2]×Y'×tf'(Bo').
Правую сторону уравнения можно упростить до (wR×n[0]×tf'(Ro')+wG×n[1]×tf'(Go')+wB×n[2]×tf'(Bo'))×Y', и, таким образом, можно найти Y' как Y'=(Y - wR×l[0] - wG×l[1] - wB×l[2] -wR×n[0]×[tf(Ro')+(Rt - Ro')×tf'(Ro'] - wG×n[1]×[tf(Go')+(Gt - Go')×tf'(Go'] - wB×n[2]×[tf(Bo')+(Bt - Bo')×tf'(Bo'])/(wR×n[0]×tf'(Ro')+wG×n[1]×tf'(Go')+wB×n[2]×tf'(Bo')).
Заметим, что эта линеаризация работает независимо, если при оптимальном Y' любой из R', G' и B' будет обрезаться до 0 или 1. Поэтому она может использоваться в отсутствие любой обрезки или, если одна компонента обрезается до 0 или 1 для оптимального Y'.
Если же наилучший Y' будет приводить к обрезке двух цветовых компонентов, что указывает n[0]+n[1]+n[2]=1, то, как показано выше, не требуется использовать аппроксимацию посредством линеаризации. Вместо этого можно непосредственно инвертировать формула. Теперь представим общую формулу для этого. Начиная с Y-wR×l[0]-wG×l[1]-wB×l[2]=wR×n[0]×tf(Y'+Rt)+wG×n[1]×tf(Y'+Gt)+wB×n[2]×tf(Y'+Bt), понятно, что поскольку две компоненты будут обрезаться, коэффициенты n[] будут нулевыми из двух коэффициентов вправо. Если известно, что наилучший Y' обрезает две компоненты, следующее уравнение будет генерировать в точности такой же результат Y - wR×l[0] - wG×l[1] - wB×l[2]=(wR×n[0]+wG×n[1]+wB×n[2]) × tf(Y'+n[0]×Rt+n[1]×Gt+n[2]×Bt). Деление на (wR×n[0]+wG×n[1]+wB×n[2]) и взятие tf-1() с обеих сторон дает tf-1(Y - wR×l[0] - wG×l[1] - wB×l[2])/(wR×n[0]+wG×n[1]+wB×n[2])=Y'+n[0]×Rt+n[1]×Gt+n[2]×Bt, что равно Y'=tf-1(Y - wR×l[0] - wG×l[1] - wB×l[2])/(wR×n[0]+wG×n[1]+wB×n[2]) - n[0]×Rt - n[1]×Gt - n[2]×Bt.
Поэтому, если известно, что наилучший Y' будет приводить к обрезке в точности двух компонент, можно использовать в точности вышеприведенную формулу для вычисления Y'.
Теперь необходим простой способ вычисления n[0], n[1], n[2] и l[0], l[1], l[2]. Это можно делать с использованием следующего кода. В коде ʺYpʺ используется для обозначения ʺY'ʺ, ʺRpo, Gpo, Bpoʺ используются для обозначения ʺRo', Go', Bo'ʺ.
// Вычислить значения Y' на границе обрезки.
// Этап 1: вычислить Rterm, Gterm и Bterm из Cr и Cb и установить некоторые переменные. Желаемая яркость сохраняется в yLinear.
int clipListIndex=0;
double YpThatClip[5]={0,0, 0,0, 1,0, 1,0, 1,0};
// Первый и последний равны 0,0 и 1,0 соответственно. Вычисляются только 3 средних.
double YLinAtClipBoundary[5]={-0,1, 0,0, 1,0, 1,0, 1,0};
// Первый и последний равны -0,1 и 1,0 соответственно, останавливать поиск в правильной позиции, если Ytarget=0,0 или 1,0.
double Rterm=a13 × Cr;
double Gterm=-a22 × Cb - a23 × Cr;
double Bterm=a32 × Cb;
// Пока не Rterm=0, не может быть ситуации, когда Y' в диапазоне [0, 1] обрезается до 0, и другой Y' в диапазоне [0, 1] обрезается до 1. Например, если Rterm > 0, то R'=Y'+Rterm будет обрезаться до 0 только для Y' < 0, чего никогда не происходит. Таким образом, его можно отбросить.
if(Rterm < 0)
YpThatClip[1+clipListIndex++]=-Rterm;
else
YpThatClip[1+clipListIndex++]=1-Rterm;
if(Gterm < 0)
YpThatClip[1+clipListIndex++]=-Gterm;
else
YpThatClip[1+clipListIndex++]=1-Gterm;
if(Bterm < 0)
YpThatClip[1+clipListIndex++]=-Bterm;
else
YpThatClip[1+clipListIndex++]=1-Bterm;
// Этап 2: Сортировать три средних значения таким образом, чтобы YpThatClip располагались в порядке возрастание. Использовать пузырьковую сортировку.
bubble3(&YpThatClip[1]);
// Этап 3: оценивать Ylinear для каждого Y' в списке
for(int q=0; q<3; q++)
YLinAtClipBoundary[1+q]=convertToYLinear(YpThatClip[1+q], Rterm, Gterm, Bterm);
// Этап 4: Найти интервал Y', которому мы принадлежим, т.е., в какой ветви мы находимся.
int qq=1;
while(YLinAtClipBoundary[qq] < yLinear)
qq++;
// Этап 5: Найти представителя для этой ветви для определения, какие переменные обрезать.
double YpMid=(YpThatClip[qq-1]+YpThatClip[qq])/2,0;
// Этап 6: Установить переменные обрезки для этой ветви
int l[3]={0, 0, 0};
int n[3]={0, 0, 0};
if((YpMid+Rterm > 0)&&(YpMid+Rterm < 1))
n[0]=1;
else if(YpMid+Rterm > 1)
l[0]=1;
if((YpMid+Gterm > 0)&&(YpMid+Gterm < 1))
n[1]=1;
else if(YpMid+Gterm > 1)
l[1]=1;
if((YpMid+Bterm > 0)&&(YpMid+Bterm < 1))
n[2]=1;
else if(YpMid+Bterm > 1)
l[2]=1;
Для особого случая, когда Rterm=0 или Gterm=0 или Bterm=0 можно использовать немного модифицированную версию вышеописанного кода.
Наконец, следует выбирать наилучшую формулу для вычисления Y'. Если все переменные обрезаются, не имеет значения, какой Y' выбирать, при условии, что выбирается тот, для которого все переменные обрезаются таким же образом. Таким образом, можно использовать YpMid. Если обрезаются в точности две переменные, используется обратная формула, и если более одной переменной не обрезается, необходимо использовать формулу линеаризации, если желательно решение за один шаг. Это делается с использованием следующего кода.
// Этап 7: Теперь можно видеть, сколько имеется свободных переменных.
double Yp_Branch;
if(n[0]+n[1]+n[2] == 0)
{
// 7.1: Обрезаются все три переменные, можно использовать любое значение в интервале, все они будут давать одно и то же значение.
// Поэтому также можно использовать значение YpMid.
Yp_Branch=YpMid;
}
else if(n[0]+n[1]+n[2] == 1)
{
// 7.2: Обрезается все переменные кроме одной. Таким образом, получается обратимое уравнение. Аппроксимация вовсе не нужна.
Yp_Branch=dClip(tfInverse((yLinear - wR×l[0] - wG×l[1] - wB×l[2])/(wR×n[0]+wG×n[1]+wB×n[2])) - n[0]×Rterm - n[1]×Gterm - n[2]×Bterm, 0,0, 1,0);
}
else
{
// 7.3: Итак, в настоящем документе более одной переменной не обрезается. Это означает, что нельзя использовать обращение. Таким образом, требуется линеаризация. Используется общая формула. Ro, Go и Bo являются линейными компонентами исходного пикселя. Rpo является исходной красной компонентной со штрихом, т.е. Rpo=tf(Ro) и то же самое для Gpo и Bpo. Dtf()является первой производной передаточной функции tf().
double Dtf_Rpo=(double) Dtf(Rpo);
double Dtf_Gpo=(double) Dtf(Gpo);
double Dtf_Bpo=(double) Dtf(Bpo);
Yp_Branch=dClip((yLinear - wR×l[0] - wG×l[1] - wB×l[2] - wR×n[0]×(Ro+(Rterm - Rpo)×Dtf_Rpo) - wG×n[1]×(Go+(Gterm - Gpo)×Dtf_Gpo) - wB×n[2]×(Bo+(Bterm - Bpo)×Dtf_Bpo))/(wR×n[0]×Dtf_Rpo+wG×n[1]×Dtf_Gpo+wB×n[2]×Dtf_Bpo), 0,0, 1,0);
}
Заметим, что вышеописанный код является гораздо большей работой по сравнению с другими вариантами осуществления, что просто производит линеаризацию (7.3 выше). Следующий фрагмент кода является особенно дорогостоящим:
// Этап 3: оценивать Ylinear для каждого Y' в списке
for(int q=0; q<3; q++)
YLinAtClipBoundary[1+q]=convertToYLinear(YpThatClip[1+q], Rterm, Gterm, Bterm);
поскольку он вычисляет яркость три раза. Для каждого такого вычисления, потребуется выполнять передаточную функцию tf() три раза. В целом это означает девять выполнений передаточной функции tf(). Таким образом, может быть привлекательно пропускать этапы 1-6 и выполнять только 7.3. но, как было показано, возникают большие проблемы, если фактически обрезать некоторые компоненты.
Одно решение состоит в том, чтобы испытывать только обрезки выше 1 и пропускать обрезки до 0. Это означает, что необходимо испытывать только значения, которые генерируют обрезку до 1. Может быть максимум два значения, поскольку все три значения нельзя обрезать до 1, и в среднем, может быть что-то около 1,5 значений. Это экономит вычисление.
Другой вариант осуществления идет еще дальше. В этом варианте осуществления вычисление на этапе 7.3 производится напрямую безо всяких испытаний, и только если результат будет приводить к обрезке в любой из компонент, выполняются другие этапы, чтобы все было правильно. Поэтому производятся следующие действия:
// Этап 0: сначала проверяется линеаризованная версия.
// Предположим n и l заданы так, что ничего не обрезается.
int l[3]={0, 0, 0};
int n[3]={0, 0, 0};
double Dtf_Rpo=(double) Dtf(Rpo);
double Dtf_Gpo=(double) Dtf(Gpo);
double Dtf_Bpo=(double) Dtf(Bpo);
Yp_Candidate=dClip((yLinear - wR×l[0] - wG×l[1] - wB×l[2] - wR×n[0]×(Ro+(Rterm - Rpo)×Dtf_Rpo) - wG×n[1]×(Go+(Gterm - Gpo)×Dtf_Gpo) - wB×n[2]×(Bo+(Bterm - Bpo)×Dtf_Bpo))/(wR×n[0]×Dtf_Rpo+wG×n[1]×Dtf_Gpo+wB×n[2]×Dtf_Bpo), 0,0, 1,0);
if(Yp_Candidate+Rterm >= 0 && Yp_Candidate+Rterm <= 1 && Yp_Candidate+Gterm >= 0 && Yp_Candidate+Gterm <= 1 && Yp_Candidate+Bterm >= 0 && Yp_Candidate+Bterm <= 1)
// ʺиспытание кандидатовʺ
return(Yp_Candidate);
else
{
... осуществлять вышеупомянутые этапы 1-7.
return(Yp_Branch);
}
Таким образом, если испытание ʺиспытание кандидатовʺ проходит, используем его, и так же быстро, как в случае линеаризации. Если же это испытание не удается, это указывает, что, возможно, не следовало использовать значение Yp_Candidate, поскольку некоторые значения, вероятно, обрезаются для наилучшего Y'. Тогда выполняются этапы 1-7, как и раньше. Будем надеяться, что это будет происходить только для очень немногих пикселей, и, в среднем, получится быстрое вычисление.
Заметим, однако, что это не приводит к наихудшему варианту поведения. Возможно, что каждый пиксель будет обрезаться. В этом случае время выполнения фактически будет больше, поскольку придется вычислять оба Yp_Candidate и Yp_Branch, тогда как прежде необходимо было только вычислять Yp_Branch. Таким образом, для аппаратных применений, где необходимо удостоверяться в том, что наихудший случай можно обработать, может быть лучше просто вычислять этапы 1-7, не вычисляя Yp_Candidate.
Как было отмечено выше, цветовая компонента может обрезаться как до 0, так и до 1. Однако, как показано выше, именно обрезка до 1 дает наиболее серьезные артефакты. Таким образом, желательно использовать Yp_Candidate, даже если одна или более из компонент обрезается до 0. Это может осуществляться путем замены испытание кандидатов следующим:
if(Yp_Candidate+Rterm <= 1 && Yp_Candidate+Gterm <= 1 && Yp_Candidate+Bterm <= 1)
// ʺальтернативное испытание кандидатовʺ
return(Yp_Candidate);
else
{
... осуществлять вышеупомянутые этапы 1-7.
return(Yp_Branch);
}
Это приведет к ускорению вычисления, с потенциальной потерей качества для пикселей, обрезанных до 0.
Заметим, что ни ʺиспытание кандидатовʺ, ни ʺальтернативное испытание кандидатовʺ не гарантирует правильной обработки. Возможно, что оптимальный Y' будет обрезать одну или более компонент до 1, но при этом формула, используемая для определения Yp_Candidate, даст значение, которое не приводит к обрезке до 1. Это представляет опасность, но это может быть хорошим компромиссом увидеть некоторую потерю качества для этого особого случая по сравнению с выполнением вычисления этапов 1-7 для каждого пикселя.
Заметим, что большое количество вышеупомянутых дорогостоящих вычислений (этап 3) используется только для вычисления n[0], n[1], n[2] и l[0], l[1], l[2]. Если вместо этого аппроксимировать это вычисление тем, как обрезается Yp_Candidate, можно дополнительно снизить сложность. Таким образом вместо
else
{
... осуществлять вышеупомянутые этапы 1-7.
return(Yp_Branch);
}
осуществляется
else
{
YpMid=YpCandidate
... осуществлять вышеупомянутые этапы 6-7.
return(Yp_Branch);
}
Это позволяет избежать дорогостоящего этапа 3, ускоряя вычисление даже при наличии обрезки. Отметим, однако, что n[0], n[1], n[2] и l[0], l[1] и l[2] будут аппроксимировать только свои правильные значения, поэтому, опять же, нельзя быть уверенным в том, что получится наилучшая аппроксимация. Впрочем, иногда можно придти к надлежащему компромиссу.
В еще одном варианте осуществления, этапы 1-6 используются для вычисления параметров обрезки n[0], n[1], n[2], l[0], l[1] и l[2]. Однако, вместо использования линейной аппроксимации на этапе 7, параметры обрезки используются для выбора одной из нескольких поисковых таблиц. Поисковые таблицы содержат заранее вычисленные значения, которые могут быть получены без каких-либо аппроксимаций. Если ни одна переменная не обрезается, т.е. если n[0]+n[1]+n[2]=3, то может использоваться полноразмерная 3D поисковая таблица. Если обрезается одна переменная, т.е. если n[0]+n[1]+n[2]=2, то требуется только сокращенная поисковая таблица, что значительно уменьшает ограничения по размеру. Если обрезаются две переменные, то требуется только 1D поисковая таблица, что, опять же, значительно снижает требования к размеру и также промахи кэша.
В идеале, разные LUT будут использоваться для разных случаев обрезки. В порядке примера, если красный обрезается до 0 и зеленый и синий не обрезаются, может использоваться одна LUT. Если красный вместо этого обрезается до 1 и зеленый и синий не обрезаются, вместо этого может использоваться другая LUT.
Поскольку каждый канал может либо обрезаться до 0, либо обрезаться до 1, либо быть ʺсвободнымʺ, т.е. не обрезаться, в принципе должно быть возможно 27 различных комбинаций и, таким образом, 27 разных LUT. Однако, 8 из них будут охватывать случаи, когда обрезаются все три компоненты, например 000, все компоненты обрезаются до нуля, или 101, красный и синий обрезаются до 1, зеленый обрезается до 0. В этих случаях можно использовать аппроксимацию Yp_Branch=YpMid из этапа 7.1. Поэтому реально необходимо только 19 разных LUT.
Может использоваться следующий код:
if(n[0]==1 && n[1]==1 && n[2]==1)
{
Yp_Branch=LUT_fff(Yo, Cb, Cr);
}
else if(n[0]==1 && n[1]==1 && n[2]==0)
{
if(l[2]==0)
Yp_Branch=LUT_ff0(Yo, Cb, Cr);
else
Yp_Branch=LUT_ff1(Yo, Cb, Cr);
}
else if (n[0]==1 && n[1]==0 && n[2]==1)
{
if(l[1]==0)
Yp_Branch=LUT_f0f(Yo, Cb, Cr);
else
Yp_Branch=LUT_f1f(Yo, Cb, Cr);
}
else if (n[0]==0 && n[1]==1 && n[2]==1)
{
if(l[0]==0)
Yp_Branch=LUT_0ff(Yo, Cb, Cr);
else
Yp_Branch=LUT_1ff(Yo, Cb, Cr);
}
else if (n[0]==1 && n[1]==0 && n[2]==0)
{
if(l[1]==0 && l[2]==0)
Yp_Branch=LUT_f00(Yo, Cb, Cr);
else if(l[1]==0 && l[2]==1)
Yp_Branch=LUT_f01(Yo, Cb, Cr);
else if(l[1]==1 && l[2]==0)
Yp_Branch=LUT_f10(Yo, Cb, Cr);
else if(l[1]==1 && l[2]==1)
Yp_Branch=LUT_f11(Yo, Cb, Cr);
}
else if (n[0]==0 && n[1]==1 && n[2]==0)
{
if(l[0]==0 && l[2]==0)
Yp_Branch=LUT_0f0(Yo, Cb, Cr);
else if(l[0]==0 && l[2]==1)
Yp_Branch=LUT_0f1(Yo, Cb, Cr);
else if(l[0]==1 && l[2]==0)
Yp_Branch=LUT_1f0(Yo, Cb, Cr);
else if(l[0]==1 && l[2]==1)
Yp_Branch=LUT_1f1(Yo, Cb, Cr);
}
else if (n[0]==0 && n[1]==0 && n[2]==1)
{
if(l[0]==0 && l[1]==0)
Yp_Branch=LUT_00f(Yo, Cb, Cr);
else if(l[0]==0 && l[1]==1)
Yp_Branch=LUT_01f(Yo, Cb, Cr);
else if(l[0]==1 && l[1]==0)
Yp_Branch=LUT_10f(Yo, Cb, Cr);
else if(l[0]==1 && l[1]==1)
Yp_Branch=LUT_11f(Yo, Cb, Cr);
}
else
{
Yp_Branch=YpMid
}
Заметим, что вышеприведенные поисковые таблицы с одним-единственным ʺfʺ, т.е. LUT_abf(.), LUT_afb(.) и LUT_fab(.), где a, b равны 0 или 1, можно заменить обратными функциями. Поэтому, это применяется к случаям, когда (n[0]==1 && n[1]==0 && n[2]==0), (n[0]==0 && n[1]==1 && n[2]==0) and (n[0]==0 && n[1]==0 && n[2]==1).
Следует также заметить, что каждая из этих поисковых таблиц может быть реализована в виде нескольких LUT. Причина состоит в том, что иногда более высокая точность требуется в некоторой области LUT, и не эффективно делать всю LUT с более высоким разрешением, поскольку она становится слишком большой. В порядке примера, при создании LUT для передаточной функции функция, обратная передаточной функции tf-1(), большее разрешение требуется вблизи 0, поскольку вблизи нуля значения изменяются значительно быстрее. По этой причине может быть хорошей идеей использовать несколько поисковых таблиц и затем использовать нужную. В порядке примера, обратное можно оценивать с использованием следующего кода:
double getInverseTF(double Y)
{
if(Y>0,1)
return(LUT_0_to_1[Y];
else if (Y> 0,01)
return(LUT_0_to_0_1[Y];
else if (Y> 0,001)
return(LUT_0_to_0_01[Y];
else if (Y> 0,0001)
return(LUT_0_to_0_001[Y];
else if (Y> 0,00001)
return(LUT_0_to_0_0001[Y];
else if (Y> 0,000001)
return(LUT_0_to_0_00001[Y];
else if (Y> 0,0000001)
return(LUT_0_to_0_000001[Y];
else if (Y> 0,00000001)
return(LUT_0_to_0_0000001[Y];
else
return(LUT_0_to_0_00000001[Y];
}
Все LUT от LUT_0_to_1 до LUT_0_to_0_00000001 могут быть одинакового размера, например 1024 значения. Более быстрый способ, чем выполнение всех вложенных "if" может состоять в преобразовании значения в число с фиксированной точкой с последующим отсчетом количества ведущих нулей:
double getInverseTF(double Y)
{
int Ydecide=Y×65536,0;
int num_leading_zeros_div_2=(CLZ(Ydecide)+1)/2;
int Yfixed=Y×2^26;
int Yindex=Yfixed >> num_leading_zeros_div_2×2;
return(LUT[num_leading_zeros_div2×1024+Yindex]);
}
При этом сначала отсчитывается количество ведущих нулей, и выполняется деление на два. Это аналогично сравнению с 0,1, 0,01, 0,001 и т.д., но вместо шага 10 используется шаг 4. Функция CLZ отсчитывает количество ведущих нулей в целом числе и может быть реализована посредством единственной команды ассемблера в каждом современном CPU, например, CPU Intel и CPU ARM. Большая LUT в настоящем документе является конкатенацией LUT LUT_0_to_1, LUT_0_to_0_1, LUT_0_to_0_01 и т.д.
Поскольку ʺLUTʺ обратной TF реально состоит из нескольких LUT, то же самое может быть справедливо для вышеупомянутых LUT, например LUT_f00(Yo, Cb, Cr).
Таким образом, этапы S2 и S3 на фиг. 3 можно получить согласно различным вариантам осуществления. Как описано выше, значение цветовой компоненты в цветовом пространстве можно получить в отношении вычисления значения с использованием функции линеаризации или обратной функции. В других вариантах осуществления, значение вместо этого извлекается из LUT как упомянуто выше.
В таком варианте осуществления на основе LUT, этап S2 на фиг. 3 предпочтительно содержит извлечение значения цветовой компоненты в цветовом пространстве из первой LUT, если цветовая компонента в цветовом пространстве не приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона. Этап S3 соответственно содержит, в этом варианте осуществления, извлечение значения цветовой компоненты в цветовом пространстве из второй, другой LUT, если цветовая компонента в цветовом пространстве приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона.
На фиг. 9 показана блок-схема последовательности операций, иллюстрирующая конкретный вариант осуществления этапа S3 в случае реализации на основе LUT. Способ переходит от этапа S1 на фиг. 3. Следующий этап S40 содержит выбор второй, другой LUT в зависимости от того, какой цветовой канал или цветовые каналы пикселя, который(е) выходит или выходят за пределы допустимого диапазона. Затем способ переходит к этапу S41, который содержит извлечение значения цветовой компоненты в цветовом пространстве из выбранной второй, другой LUT.
Таким образом, аналогично предыдущему варианту осуществления, где раскрыт выбор между разными функциями линеаризации и обратными функциями в зависимости от того, какой(ие) цветовой(ые) канал(ы) выходит(ят) за пределы допустимого диапазона, этот вариант осуществления выбирает конкретную LUT для использования для извлечения значения цветовой компоненты в зависимости от того, какой(ие) цветовой(ые) канал(ы) выходит(ят) за пределы допустимого диапазона. В вышеописанных вариантах осуществления, ошибка яркости минимизируется, т.е. значение яркостной компоненты Y', которая дает яркость Y=функция(Y'), которая минимизирует ошибку |Y-Yo| или (Y-Yo)2, получается с использованием линеаризации или обратной функции или LUT.
В альтернативном варианте осуществления не производится попытки минимизировать ошибку яркости, но вместо этого желательно минимизировать (квадратичную) ошибку в компонентах линейного RGB. Поэтому вместо минимизации (Y-Yo)2, который эквивалентен |Y-Yo|, где Yo=wR×tf(Y'+a13×Cr)+wG×tf(Y'-a22×Cb-a23×Cr)+wB×tf(Y'+a32×Cb), минимизируется wR×(R-Ro)2+wG×(G-Go)2+wB×(B-Bo)2, обозначенное в настоящем документе уравнением (p), что эквивалентно минимизации wR×|R-Ro|+wG×|G-Go|+wB×|B-Bo|, где
R=tf(Y'+a13 × Cr)
G=tf(Y' - a22 × Cb - a23 × Cr)
B=tf(Y'+a32 × Cb)
Путем линеаризации tf() в Ro', Go' и Bo' можно придти к приближенному решению Y'=- [wR×tf'(Ro')2(a13 × Cr+Ro')+wG×tf'(Go')2(-a22 × Cb - a23 × Cr - Go')+wB×tf'(Bo')2(a32 × Cb -Bo')]/[wR×tf'(Ro')2+wG×tf'(Go')2+wB×tf'(Bo')2].
Таким же образом согласно вышесказанному, возникают проблемы, когда одна из компоненты обрезается. Таким образом, производится то же самое, что и при определении, будет ли оптимальный Y' обрезать любые компоненты. В порядке примера, можно использовать метод LUT (ba, bb, bc)=LUT(Yo, Cb, Cr), где LUT вычислена путем минимизации уравнения (p).
Если ba==bb==bc==0, то можно использовать аппроксимацию Y'=- [wR×tf'(Ro')2(a13 × Cr+Ro')+wG×tf'(Go')2(-a22 × Cb - a23 × Cr - Go')+wB×tf'(Bo')2(a32 × Cb -Bo')]/[wR×tf'(Ro')2+wG×tf'(Go')2+wB×tf'(Bo')2]. Если, например, синяя компонента обрезается, минимизация wR×(R-Ro)2+wG×(G-Go)2+wB×(B-Bo)2 эквивалентна минимизации wR×(R-Ro)2+wG×(G-Go)2+wB×(10000-Bo)2, поскольку tf(1)=10000. Теперь заметим, что Y' не будет влиять на последний член, поэтому вместо этого можно минимизировать D=wR×(R-Ro)2+wG×(G-Go)2, то есть D=wR×(tf(R')-tf(Ro'))2+wG×(tf(G')-tf(Go'))2. Линеаризация tf() в Ro' и Go' дает D ~ d=wR×(tf(Ro')+tf'(Ro')(R'-Ro')-tf(Ro'))2+wG×(tf(Go')+tf'(Go')(G'-Go')-tf(Go'))2, что равно d=wR×(tf'(Ro')(R'-Ro'))2+wG×(tf'(Go')(G'-Go'))2. Вставка R=tf(Y'+a13 × Cr) and G=tf(Y' - a22 × Cb - a23 × Cr) дает d=wR×(tf'(Ro')(Y'+a13 × Cr -Ro'))2+wG×(tf'(Go')(Y' - a22 × Cb - a23 × Cr -Go'))2. Дифференцирование по Y' и установление производной на нуль дает wR×tf'(Ro')2×2×(Y'+a13 × Cr -Ro')+wG×tf'(Go')2×2×(Y' - a22 × Cb - a23 × Cr -Go')=0. Сбор членов для Y' и решение относительно Y' дает Y'=- [wR×tf'(Ro')2(a13 × Cr - Ro')+wG×tf'(Go')2×(-a22 × Cb - a23 × Cr -Go')]/[wR×tf'(Ro')2+wG×tf'(Go')2]. Таким образом, это используется, когда ba=0, bb=0 и bc=1.
В случае минимизации (Y-Yo)2, где Y=wR×tf(Y'+a13 × Cr)+wG×tf(Y' - a22 × Cb - a23 × Cr)+wB×tf(Y'+a32 × Cb), можно видеть, что поскольку tf() является монотонно возрастающей функцией, Y будет увеличиваться монотонно с Y'. Это означает, что, если конкретное значение Y'1 дает значение Y1, которое слишком велико, известно, что идеальное значение Y', т.е. то, которое приводит к Y=Yo, будет меньше Y'1. Причина состоит в том, что любое другое Y' > Y'1 будет генерировать Y > Y1, но Y1 уже слишком велико, таким образом, что не может быть хорошим. Аналогично, если другое значение Y'2 будет генерировать значение Y2, которое слишком мало, то известно, что идеальное значение Y' должно быть больше Y'2. Любое значение меньше Y'2 будет создать Y даже худшее, чем Y2. Это означает, что функция ошибки (Y(Y')-Yo)2 будет иметь только один локальный минимум, и что это значение также будет глобальным минимумом, расположенным в идеальном значении Y', которое может называться Y'*, и что ошибка будет монотонно возрастать при перемещении от Y'*.
Однако, при минимизации вместо этого wR×(R-Ro)2+wG×(G-Go)2+wB×(B-Bo)2, что равно wR×(tf(Y'+a13 × Cr) - Ro)2+wG×(tf(Y'- a22 × Cb - a23 × Cr) - Go)2+wB×(tf(Y'+ a32 × Cr) - Bo)2, нельзя быть уверенным в наличии только одного локального минимума. В порядке примера, предположим существуют следующие два линейных значения RGB RGB1=(113, 3900, 33) и RGB2=(3,11, 0,17, 3950). Применение обратного EOTF дает R'G'B'1=(0,5204, 0,8998, 0,4015) и R'G'B'2=(0,2157, 0,0776, 0,9012). Преобразование в Y'CbCr дает Y'CbCr1=(0,7706, -0,1962, -0,1697) и Y'CbCr2=(0,1627, 0,3925, 0,0359) и усреднение этих двух значений дает Y'CbCr=(0,4667 0,0982 -0,0669). Теперь, при необходимости выбора Y' для первого пикселя (RGB1) задаются Ro'=0,5204, Go'=0,8998 и Bo'=0,4015. Cb=0,0982 и Cr=-0,0669. Теперь можно построить график ошибки RGB=wR×(tf(Y'+a13 × Cr) - Ro)2+wG×(tf(Y'- a22 × Cb - a23 × Cr) - Go)2+wB×(tf(Y'+a32 × Cr) - Bo)2. Он построен на фиг. 10.
На фиг. 10, Y' умножается на 1023. Заметим, что кривая имеет два локальных минимума, один около 900 и другой около 780. Таким образом, не существует, простого способа узнать, какую аппроксимацию использовать. Синяя компонента обрезается для 1023×Y'=835, отмеченного крестом, указанным полной стрелкой. Для значений 1023×Y' ниже 835, нужно использовать линеаризацию Y'rgb со всеми тремя компонентами. Для значений между 835 и 1005, где обрезается зеленая компонента, отмеченная заштрихованной стрелкой, вместо этого следует использовать линеаризацию Y'rg, которая исключает синюю компоненту. Заметим, что поскольку существует несколько локальных минимумов, не удается указать, какую линеаризацию использовать.
В случае использования функции ошибки (Y-Yo)2, было достаточно проверить, будет ли первая точка обрезки Y'firstclip генерировать значение Y, большее Yo. В этом случае не нужно было продолжать с другими линеаризациями. В этом случае, однако, ничего нельзя сказать из значения errRGB в точке обрезки. В порядке примера, первая точка обрезки возникает в 835, и это выше, чем локальный минимум влево в 783, но истинный глобальный минимум находится в 895, вправо от первой точки обрезки.
Способ решения этого состоит в вычислении линеаризации во всех трех областях. Для значений Y' от нуля до первой точки обрезки Y'firstclip=835/1023 используется линеаризация Y'rgb=- [wR×tf'(Ro')2(a13 × Cr+Ro')+wG×tf'(Go')2(-a22 × Cb - a23 × Cr - Go')+wB×tf'(Bo')2(a32 × Cb - Bo']/[wR×tf'(Ro')2+wG×tf'(Go')2+wB×tf'(Bo')2].
Поскольку в этом случае синий в первую очередь подлежит обрезке, используется линеаризация Y'rg для значений от 835/1023 до точки, где зеленый обрезается в 1005/1023: Y'rg=- [wR×tf'(Ro')2(a13 × Cr -Ro')+wG×tf'(Go')2(-a22 × Cb - a23 × Cr -Go')]/[wR×tf'(Ro')2+wG×tf'(Go')2]. Для последних значений от 1005/1023 до 1023/1023 можно инвертировать функцию, и не требуется осуществлять линеаризацию, но можно использовать Y'r=tf-1((Yo - 10000×wG - 10000×wB)/wR) - a13 × Cr.
Таким образом, этот вариант осуществления способа можно кратко изложить следующим образом:
Этап 1: вычислять Y'redclip, Y'greenclip, Y'blueclip:
Y'redclip=1 - a13 × Cr
Y'greenclip=1+a22 × Cb+a23 × Cr
Y'blueclip=1 - a32 × Cb
Этап 2: вычислять аппроксимацию для отсутствия обрезки и связанного с ним значения ошибки:
Y'rgb=- [wR×tf'(Ro')2(a13 × Cr+Ro')+wG×tf'(Go')2 (-a22 × Cb - a23 × Cr - Go')+wB×tf'(Bo')2(a32 × Cb - Bo')]/[wR×tf'(Ro')2+wG×tf'(Go')2+wB×tf'(Bo')2]
errRGB(Y'rgb)=wR×(tf(Y'rgb+a13 × Cr) - Ro)2+wG×(tf(Y'rgb - a22 × Cb - a23 × Cr) - Go)2+wB×(tf(Y'rgb+a32 × Cr) - Bo)2
Этап 3: вычислять аппроксимацию, когда обрезается один канал:
if(Y'blueclip < Y'redclip && Y'blueclip < Y'greenclip)
Y'rg=- [wR×tf'(Ro')2(a13 × Cr -Ro')+wG×tf'(Go')2(-a22 × Cb - a23 × Cr -Go')]/[wR×tf'(Ro')2+wG×tf'(Go')2]
Y'one=Y'rg
errRGBone=wR×(tf(Y'one+a13 × Cr) - Ro)2+wG×(tf(Y'one - a22 × Cb - a23 × Cr) - Go)2+wB×(10000 - Bo)2
else if(Y'redclip < Y'greenclip && Y'redclip < Y'blueclip)
Y'gb=- [wG×tf'(Go')2(-a22 × Cb - a23 × Cr -Go')+wB×tf'(Ro')2(a32 × Cb - Bo')]/[wG×tf'(Go')2+wB×tf'(Bo')2]
Y'one=Y'gb
errRGBone=wR×(10000 - Ro)2+wG×(tf(Y'one - a22 × Cb - a23 × Cr) - Go)2+wB×(tf(Y'one+a32 × Cr) - Bo)2
else
// оказывается, что Y'greenclip является наименьшим
Y'rb=- [wR×tf'(Ro')2(a13 × Cr - Ro')+wB×tf'(Bo')2(a32 × Cb - Bo')]/[wR×tf'(Ro')2+wB×tf'(Bo')2]
Y'one=Y'rb
errRGBone=wR×(tf(Y'one+a13 × Cr) - Ro)2+wG×(10000 - Go)2+wB×(tf(Y'one+a32 × Cr) - Bo)2
end
Этап 4: вычислять аппроксимацию, или довольно точную формулу, для случая, когда обрезаются два канала:
if(Y'redclip > Y'blueclip && Y'redclip > Y'greenclip)
// обрезается оба синий и зеленый
Y'r=tf-1((Yo - 10000×wG - 10000×wB)/wR) -a13 × Cr
Y'two=Y'r
errRGBtwo=wR×(tf(Y'two+a13 × Cr) - Ro)2+wG×(10000 - Go)2+wB×(10000 - Bo)2
else if(Y'greenclip > Y'blueclip && Y'greenclip > Y'redclip)
// обрезается оба красный и синий
Y'g=tf-1((Yo - 10000×wR - 10000×wB)/wG)+a22 × Cb+a23 × Cr
Y'two=Y'g
errRGBtwo=wR×(10000 - Ro)2+wG×(tf(Y'two - a22 × Cb - a23 × Cr) - Go)2+wB×(10000 - Bo)2
else if(Y'blueclip > Y'greenclip && Y'blueclip > Y'redclip)
// обрезается оба красный и зеленый
Y'b=tf-1((Yo - 10000×wR - 10000×wG)/wB) -a32 × Cb
Y'two=Y'b
errRGBtwo=wR×(10000 - Ro)2+wG×(10000 - Go)2+wB×(Y'two+a32 × Cr - Bo)2
end
Этап 5: выбрать наилучшую аппроксимацию:
errBest=errRGB
Y'best=Y'rgb
if(errRGBone < errBest)
errBest=errRGBone
Y'best=Y'one
конец
if(errRGBtwo < errBest)
errBest=errRGBtwo
Y'best=Y'two
end
Теперь наилучшая аппроксимация Y'best найдена. Она будет иметь ошибку errBest.
Согласно варианту осуществления, таким образом этап S1 на фиг. 3 содержит проверку, ли яркостная компонента Y' пикселя, дающая наименьшую ошибку между красной, зеленой и синей цветовыми компонентами RGB, определенными на основании яркостной компоненты Y', и исходными красной, зеленой и синей цветовыми компонентами RoGoBo пикселя приводит к обрезке до единицы любого из красного, зеленого и синего цветовых каналов пикселя, т.е. насыщению или превышению или равенстве единице.
На фиг. 11 показана блок-схема последовательности операций, иллюстрирующая другой вариант осуществления способа обработки пикселя в изображении. Этот вариант осуществления содержит вычисление, на этапе S30,
Figure 00000011
,
Figure 00000012
и
Figure 00000013
, где
Figure 00000004
обозначают положительные постоянные цветового преобразования из цвета Y'CbCr в цвет R'G'B', Cb, Cr обозначают цветностные компоненты пикселя. Способ также содержит этап S31, который содержит вычисление первого значения Y'rgb яркостной компоненты Y' как
Figure 00000021
Figure 00000022
,
где
Figure 00000003
обозначают весовые коэффициенты цветов,
Figure 00000004
обозначают положительные постоянные цветового преобразования из цвета Y'CbCr в цвет R'G'B', P=tf(P'), где P=красный (R), зеленый (G) или синий (B), tf(.) - передаточная функция, и tf'(Po') обозначает производную передаточной функции по Po'. Способ также содержит вычисление, на этапе S32, второго значения Y'one яркостной компоненты Y' как
Figure 00000023
,
если Y'redclip=min(Y'redclip,Y'greenclip,Y'blueclip), как
Figure 00000024
,
если Y'greenclip=min(Y'redclip,Y'greenclip,Y'blueclip), и как
Figure 00000025
,
если Y'blueclip=min(Y'redclip,Y'greenclip,Y'blueclip).
Способ дополнительно содержит вычисление, на этапе S33, третьего значения Y'two яркостной компоненты Y' как
Figure 00000026
,
если Y'redclip=max(Y'redclip,Y'greenclip,Y'blueclip), как
Figure 00000027
,
если Y'greenclip=max(Y'redclip,Y'greenclip,Y'blueclip), и как
Figure 00000028
,
если Y'blueclip=min(Y'redclip,Y'greenclip,Y'blueclip). Этапы S30 - S33 может осуществляться последовательно в любом порядке, или, по меньшей мере, частично параллельно.
Способ также содержит вычисление трех соответствующих значений ошибки. Первое такое значение ошибки вычисляется на этапе S34 как
Figure 00000029
. Этап S35 содержит вычисление второго значения ошибки
Figure 00000030
,
если Y'redclip=min(Y'redclip,Y'greenclip,Y'blueclip), как
Figure 00000031
,
если Y'greenclip=min(Y'redclip,Y'greenclip,Y'blueclip), и как
Figure 00000032
,
если Y'blueclip=min(Y'redclip,Y'greenclip,Y'blueclip). Соответственно, этап S36 содержит вычисление третьего значения ошибки
Figure 00000033
,
если Y'redclip=max(Y'redclip,Y'greenclip,Y'blueclip), как
Figure 00000034
,
если Y'greenclip=max(Y'redclip,Y'greenclip,Y'blueclip), и как
Figure 00000035
,
если Y'blueclip=max(Y'redclip,Y'greenclip,Y'blueclip). Этапы S34 - S36 могут осуществляться последовательно в любом порядке или, по меньшей мере, частично параллельно. Этап S34, предпочтительно осуществляется после этапа S31, этап S35 предпочтительно, осуществляется после этапа S32 и этап S36 предпочтительно, осуществляется после этапа S33.
Способ также содержит этап S37, на котором Y'rgb выбирается как значение яркостной компоненты Y', если errRGB(Y'rgb)=min(errRGB(Y'rgb,errRGBone,errRGBtwo), Y'one выбирается как значение яркостной компоненты Y', если errRGBone=min(errRGB(Y'rgb,errRGBone,errRGBtwo) и Y'two выбирается как значение яркостной компоненты Y', если errRGBtwo=min(errRGB(Y'rgb,errRGBone,errRGBtwo).
Обработка пикселей согласно вариантам осуществления может использоваться в разных приложениях, в частности, разных видео-приложениях, в том числе, кодирования видеосигнала и, в частности, кодирования видеопоследовательностей HDR.
Таким образом, вариант осуществления относится к способу кодирования пикселя в изображении. Способ содержит обработку пикселей согласно любому из раскрытых в настоящем документе вариантов осуществления для вывода значения яркостной компоненты для пикселя. Способ также содержит, на этапе S4 как показано на фиг. 12, кодирование значения яркостной компоненты и значений дискретизированных с понижением цветностных компонентов.
Таким образом, обработка пикселей может использоваться в ходе кодирования пикселей изображений, например, совместно с кодированием изображений видеопоследовательности, например, видеопоследовательности HDR.
Затем выходной сигнал обработки, т.е. Y'Cb'Cr', например, в формате 4:2:0 или 4:2:2, поступает на видеокодер, например, видеокодер H.264, высокопроизводительный видеокодер (HEVC) или видеокодер H.265, или другой видеокодер. Кодирование, осуществляемое видеокодером, может включать в себя традиционные этапы кодирования видеосигнала, например внешнее предсказание, внутреннее предсказание, определение режима, преобразование остатка, квантование и кодирование преобразованных и квантованных остатков, например, в энтропийном кодере, например, кодере контекстно-адаптивного двоичного арифметического кодирования (CABAC).
Преимущество обработки вариантов осуществления состоит в том, что его можно применять к любому процессу кодирования видео или изображений без необходимости в осуществлении каких-либо регулировок в кодере видео или изображений или каких-либо регулировок в соответствующем декодере видео или изображений.
Обработка пикселей в изображениях, например видеопоследовательности, также может использоваться в других приложениях помимо кодирования видеосигнала. Например, варианты осуществления могут использоваться как обработка, которая применяется до переноса видео по интерфейсу, например, мультимедийному интерфейсу высокой четкости (HDMI), DisplayPort или Thunderbolt. Например, в HDMI 2.0a единственный способ переноса разрешения 4K на 50 или 60 кадры в секунду (кадр/с) состоит в использовании понижающей дискретизации YCbCr 4:2:0 или 4:2:2. Если видеоданные имеют полный формат дискретизации цветности (4:4:4) то этап обработки понижающей дискретизации должен применяться до отправки видеоданных по кабелю HDMI. Затем видеоданные 4:2:0 или 4:2:2 переносятся по интерфейсу без дополнительного сжатия. Путем применения обработки вариантов осуществления, качество видео повышается по сравнению с традиционной понижающей дискретизацией 4:2:0 или 4:2:2 без какой-либо коррекции компоненты Y' или нахождения оптимальной компоненты Y'.
Согласно варианту осуществления, принцип обработки состоит в определении, будет ли значение яркости Y', которое будет обеспечивать значение яркости пикселя, ближайшее к Yo, приводить к насыщению любой из цветовых компонент или ее падению ниже нуля. В случае отрицательного ответа, используется первый способ вычисления или получения значения яркости. В случае положительного ответа, используется другой способ вычисления или получения значения яркости.
На фиг. 13 показана блок-схема последовательности операций, иллюстрирующая способ обработки пикселя в изображении согласно дополнительному варианту осуществления. Пиксель может быть представлен цветовыми компонентами в первом цветовом пространстве, например, R',G',B', цветовыми компонентами во втором цветовом пространстве, например, Y',Cb,Cr, и цветовыми компонентами в третьем цветовом пространстве, например, Y',Cb,Cr или X,Y,Z, и при этом цветовые компоненты разных цветовых пространств могут переноситься между друг другом, как представлено выше, функциями цветового преобразования. Способ содержит определение модифицированная цветовая компонента Y' во втором цветовом пространстве с использованием первой функции. Способ также содержит проверку, будет ли эта компонента Y' генерировать обрезку. Если компонента Y' будет генерировать обрезку, способ также содержит определение модифицированная цветовая компонента Y' во втором цветовом пространстве с использованием второй функции.
Первая функция предпочтительно является первой функцией линеаризации, т.е. аппроксимацией передаточной функции в отношении представления передаточной функции линеаризованной версией. Вторая функция предпочтительно является второй, другой функцией линеаризации или обратной функцией. В последнем случае, это обратная или инвертированная версия передаточной функции.
Другой аспект вариантов осуществления относится к устройству обработки пикселя в изображении. Устройство выполнено с возможностью проверки, приводит ли цветовая компонента пикселя в цветовом пространстве, дающая наименьшую ошибку между, по меньшей мере, одной цветовой компонентой в другом цветовом пространстве, определенной на основании цветовой компоненты в цветовом пространстве, и, по меньшей мере, одной исходной цветовой компонентой пикселя в другом цветовом пространстве к выходу любого цветового канала пикселя за пределы допустимого диапазона. Устройство также выполнено с возможностью получения значения цветовой компоненты в цветовом пространстве с использованием первой функции или первой поисковой таблицы, если цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, не приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона. Устройство дополнительно выполнено с возможностью получения значения цветовой компоненты в цветовом пространстве с использованием второй, другой функции или второй, другой поисковой таблицы, если цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона.
Согласно варианту осуществления, устройство выполнено с возможностью проверки, приводит ли цветовая компонента пикселя во втором цветовом пространстве, дающая наименьшую ошибку между i) цветовой компонентой в третьем цветовом пространстве, определенной на основании цветовой компоненты во втором цветовом пространстве, и исходной цветовой компонентой в третьем цветовом пространстве определенной на основании исходных цветовых компонентов пикселя в первом цветовом пространстве или ii) цветовыми компонентами в первом цветовом пространстве, определенными на основании цветовой компоненты во втором цветовом пространстве, и исходными цветовыми компонентами в первом цветовом пространстве к выходу любого цветового канала пикселя за пределы допустимого диапазона. Устройство также выполнено с возможностью получения значения цветовой компоненты во втором цветовом пространстве с использованием первой функции или первой поисковой таблицы, если цветовая компонента во втором цветовом пространстве, дающая наименьшую ошибку, не приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона. устройство дополнительно выполнено с возможностью получения значения цветовой компоненты во втором цветовом пространстве с использованием второй, другой функции или второй, другой поисковой таблицы, если цветовая компонента во втором цветовом пространстве, дающая наименьшую ошибку, приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона.
Согласно варианту осуществления, устройство выполнено с возможностью проверки, приводит ли яркостная компонента пикселя, дающая наименьшую ошибку между i) яркостью, определенной на основании яркостной компоненты, и исходной яркостью, определенной на основании исходных красной, зеленой и синей цветовых компонент пикселя, или ii) красной, зеленой и синей цветовыми компонентами, определенными на основании яркостной компоненты, и исходными красной, зеленой и синей цветовыми компонентами пикселя, к выходу любого цветового канала пикселя за пределы допустимого диапазона. Устройство также выполнено с возможностью получения значения яркостной компоненты с использованием первой функции или первой поисковой таблицы, если яркостная компонента, дающая наименьшую ошибку, не приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона. Устройство дополнительно выполнено с возможностью получения значения яркостной компоненты с использованием второй, другой функции или второй, другой поисковой таблицы, если яркостная компонента, дающая наименьшую ошибку, приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона.
Согласно варианту осуществления, устройство выполнено с возможностью проверки, приводит ли цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, к обрезке любого цветового канала пикселя, в опциональном порядке, до нуля или единицы.
В конкретном варианте осуществления, устройство выполнено с возможностью проверки, приводит ли цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, к тому, что любой цветовой канал пикселя больше единицы или меньше нуля, или больше или равен единице или меньше или равен нулю.
В другом конкретном варианте осуществления, устройство выполнено с возможностью проверки, приводит ли цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, к насыщению любого цветового канала пикселя.
Согласно варианту осуществления, устройство выполнено с возможностью вычисления значения цветовой компоненты в цветовом пространстве с использованием первой функции линеаризации, если цветовая компонента в цветовом пространстве не приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона. Устройство также выполнено с возможностью вычисления значения цветовой компоненты в цветовом пространстве с использованием второй, другой функции линеаризации или обратной функции, если цветовая компонента в цветовом пространстве приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона.
Согласно варианту осуществления, устройство выполнено с возможностью выбора второй, другой функции линеаризации или обратной функции в зависимости от того, какой цветовой канал или цветовые каналы пикселя, который(е) выходит или выходят за пределы допустимого диапазона. Устройство также выполнено с возможностью вычисления значения цветовой компоненты в цветовом пространстве с использованием выбранной второй, другой функции линеаризации или выбранной обратной функции.
Например, согласно варианту осуществления, устройство выполнено с возможностью проверки, приводит ли яркостная компонента Y' пикселя, дающая наименьшую ошибку между яркостью Y, определенной на основании яркостной компоненты Y', и исходной яркостью Yo, определенной на основании исходных красной, зеленой и синей цветовых компонент RoGoBo пикселя, к обрезке любого из красного, зеленого и синего цветовых каналов пикселя, например, обрезке до единицы, насыщению или (равенству или) превышению единицы. Устройство также выполнено с возможностью вычисления значения яркостной компоненты Y' как
Figure 00000001
Figure 00000036
если яркостная компонента Y' не приводит к тому, что любой из красного, зеленого, синего цветовых каналов пикселя обрезается/ обрезается до единицы /насыщается/ больше или равен единице, где
Figure 00000003
обозначают весовые коэффициенты цветов,
Figure 00000004
обозначают положительные постоянные цветового преобразования из цвета Y'CbCr в цвет R'G'B', Cb, Cr обозначают цветностные компоненты пикселя, P=tf(P'), где P=красный (R), зеленый (G) или синий (B), tf(.) - передаточная функция, и tf'(Po') обозначает производную передаточной функции по Po'. Устройство дополнительно выполнено с возможностью выбора второй, другой функции линеаризации
Figure 00000005
при обрезке красного цветового канала. Устройство выполнено с возможностью выбора второй, другой функции линеаризации
Figure 00000006
при обрезке зеленого цветового канала, и устройство выполнено с возможностью выбора второй, другой функции линеаризации
Figure 00000007
при обрезке синего цветового канала. Устройство дополнительно выполнено с возможностью выбора обратной функции
Figure 00000008
при обрезке красного цветового канала и зеленого цветового канала, где tf-1(.) обозначает функцию, обратную передаточной функции tf(.). Устройство также выполнено с возможностью выбора обратной функции
Figure 00000009
при обрезке красного цветового канала и синего цветового канала и выбора обратной функции
Figure 00000010
при обрезке зеленого цветового канала и синего цветового канала.
В конкретном варианте осуществления, устройство выполнено с возможностью вычисления
Figure 00000011
,
Figure 00000012
и
Figure 00000013
. Устройство дополнительно выполнено с возможностью проверки приводит ли яркостная компонента Y', дающая наименьшую ошибку, к обрезке любого из красного, зеленого и синего цветовых каналов пикселя, например, обрезке до единицы, насыщению или (равенству или) превышению единицы, на основании наименьшего значения Y'redclip, Y'greenclip и Y'blueclip.
Согласно варианту осуществления, устройство также выполнено с возможностью выбора наименьшего значения Y'firstclip=min(Y'redclip, Y'greenclip, Y'blueclip). Устройство дополнительно выполнено с возможностью вычисления
Figure 00000037
и проверки, выполняется ли Yo<Yfirstclip.
В другом конкретном варианте осуществления, устройство также выполнено с возможностью выбора медианного значения Y'secondclip=median(Y'redclip, Y'greenclip, Y'blueclip). Устройство дополнительно выполнено с возможностью вычисления
Figure 00000038
.
Устройство выполнено с возможностью определения, что яркостная компонента Y', дающая наименьшую ошибку, не приводит к обрезке любого из красного, зеленого и синего цветовых каналов пикселя, если Yo<Yfirstclip. Устройство также выполнено с возможностью определения, что яркостная компонента Y', дающая наименьшую ошибку, приводит к обрезке одного из красного, зеленого и синего цветовых каналов пикселя, если Yfirstclip≤Yo<Ysecondclip, и определения, что яркостная компонента Y', дающая наименьшую ошибку, приводит к обрезке двух из красного, зеленого и синего цветовых каналов пикселя, если Yo≥Ysecondclip.
Согласно варианту осуществления, устройство выполнено с возможностью проверки, приводит ли яркостная компонента Y' пикселя, дающая наименьшую ошибку между красной, зеленой и синей цветовыми компонентами RGB, определенными на основании яркостной компоненты Y', и исходными красной, зеленой и синей цветовыми компонентами RoGoBo пикселя, к обрезке любого из красного, зеленого и синего цветовых каналов пикселя, например, обрезке до единицы, насыщению или (равенству или) превышению единицы.
В конкретном варианте осуществления, устройство выполнено с возможностью вычисления
Figure 00000011
,
Figure 00000012
и
Figure 00000013
, где
Figure 00000004
обозначают положительные постоянные цветового преобразования из цвета Y'CbCr в цвет R'G'B', Cb, Cr обозначают цветностные компоненты пикселя. Устройство также выполнено с возможностью вычисления первого значения Y'rgb яркостной компоненты Y' как
Figure 00000021
Figure 00000022
, где
Figure 00000003
обозначают весовые коэффициенты цветов,
Figure 00000004
обозначают положительные постоянные цветового преобразования из цвета Y'CbCr в цвет R'G'B', P=tf(P'), где P=красный (R), зеленый (G) или синий (B), tf(.) - передаточная функция, и tf'(Po') обозначает производную передаточной функции по Po'. Устройство дополнительно выполнено с возможностью вычисления второго значения Y'one яркостной компоненты Y' как
Figure 00000023
,
если Y'redclip=min(Y'redclip,Y'greenclip,Y'blueclip), как
Figure 00000024
,
если Y'greenclip=min(Y'redclip,Y'greenclip,Y'blueclip), и как
Figure 00000025
,
если Y'blueclip=min(Y'redclip,Y'greenclip,Y'blueclip).
Устройство дополнительно выполнено с возможностью вычисления третьего значения Y'two яркостной компоненты Y' как
Figure 00000026
,
если Y'redclip=max(Y'redclip,Y'greenclip,Y'blueclip), как
Figure 00000027
,
если Y'greenclip=max(Y'redclip,Y'greenclip,Y'blueclip), и как
Figure 00000028
,
если Y'blueclip=min(Y'redclip,Y'greenclip,Y'blueclip). Устройство также выполнено с возможностью вычисления первого значения ошибки
Figure 00000039
. Устройство дополнительно выполнено с возможностью вычисления второго значения ошибки
Figure 00000040
, сли Y'redclip=min(Y'redclip,Y'greenclip,Y'blueclip), как
Figure 00000031
, если Y'greenclip=min(Y'redclip,Y'greenclip,Y'blueclip), и как
Figure 00000041
,
если Y'blueclip=min(Y'redclip,Y'greenclip,Y'blueclip). Устройство дополнительно выполнено с возможностью вычисления третьего значения ошибки
Figure 00000033
,
если Y'redclip=max(Y'redclip,Y'greenclip,Y'blueclip), как
Figure 00000034
, если Y'greenclip=max(Y'redclip,Y'greenclip,Y'blueclip), и как
Figure 00000035
,
если Y'blueclip=max(Y'redclip,Y'greenclip,Y'blueclip).
Устройство также выполнено с возможностью выбора Y'rgb как значение яркостной компоненты Y', если errRGB(Y'rgb)=min(errRGB(Y'rgb,errRGBone,errRGBtwo), Y'one как значение яркостной компоненты Y', если errRGBone=min(errRGB(Y'rgb,errRGBone,errRGBtwo) и Y'two как значение яркостной компоненты Y', если errRGBtwo=min(errRGB(Y'rgb,errRGBone,errRGBtwo).
Согласно варианту осуществления, устройство выполнено с возможностью извлечения, из поисковой таблицы и для каждого цветового канала красного, зеленого и синего цветовых каналов пикселя с использованием исходных яркостной Yo и цветностных компонент Cb, Cr пикселя или их квантованных версий в качестве входа, бита, указывающего приводит ли яркостная компонента Y', дающая наименьшую ошибку, к обрезке цветового канала, например, обрезке до единицы, насыщению или (равенству или) превышению единицы.
Согласно варианту осуществления, устройство выполнено с возможностью вычисления
Figure 00000017
,
Figure 00000018
и
Figure 00000042
, где
Figure 00000004
обозначают положительные постоянные цветового преобразования из цвета Y'CbCr в цвет R'G'B', Y' обозначает яркостную компоненту пикселя, Cb, Cr обозначают цветностные компоненты пикселя. Устройство также выполнено с возможностью проверки, приводит ли яркостная компонента Y' пикселя, дающая наименьшую ошибку между i) яркостью Y, определенной на основании яркостной компоненты Y', и исходной яркостью Yo, определенной на основании исходных красной, зеленой и синей цветовых компонент RoGoBo пикселя или ii) красной, зеленой и синей цветовыми компонентами RGB, определенными на основании яркостной компоненты Y', и исходными красной, зеленой и синей цветовыми компонентами RoGoBo пикселя, к обрезке до нуля любого из красного, зеленого и синего цветовых каналов пикселя, например (равенству или) преуменьшению нуля на основании, по меньшей мере, одного из
Figure 00000017
,
Figure 00000018
и
Figure 00000042
.
В другом варианте осуществления, устройство выполнено с возможностью извлечения значения цветовой компоненты в цветовом пространстве из первой поисковой таблицы, если цветовая компонента в цветовом пространстве не приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона. Устройство также выполнено с возможностью извлечения значения цветовой компоненты в цветовом пространстве из второй, другой поисковой таблицы, если цветовая компонента в цветовом пространстве приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона.
В конкретном варианте осуществления, устройство также выполнено с возможностью выбора второй, другой поисковой таблицы в зависимости от того, какой цветовой канал или цветовые каналы пикселя, который(е) выходит или выходят за пределы допустимого диапазона. Устройство дополнительно выполнено с возможностью извлечения значения цветовой компоненты в цветовом пространстве из выбранной второй, другой поисковой таблицы.
Очевидно, что описанные в настоящем документе способы, этапы способа и устройства, функции устройства могут быть реализованы, объединены и реорганизованы по-разному.
Например, варианты осуществления могут быть реализованы аппаратными средствами или программными средствами для выполнения подходящей схемой обработки или их комбинацией.
Этапы, функции, процедуры модулей и/или блоков можно реализовать аппаратными средствами с использованием любой традиционной, например, технологии дискретных схем или технологии интегральных схем, включающих в себя электронную схему общего назначения и схему специального назначения.
Альтернативно или дополнительно, по меньшей мере, некоторые из описанных в настоящем документе этапов, функций, процедур модулей и/или блоков можно реализовать программными средствами, например, компьютерной программы для выполнения пригодной схемой обработки, например, одним или более процессорами или блоками обработки.
Примеры схемы обработки включает в себя, но без ограничения, один или более микропроцессоров, один или более цифровых сигнальных процессоров (DSP), один или более центральных процессоров (CPU), оборудование ускорения видеообработки, и/или любую пригодную программируемую логическую схему, например, одну или более вентильных матриц, программируемых пользователем (FPGA), или один или более программируемых логических контроллеров (PLC).
Следует также понимать, что существует возможность повторного использования общих возможностей обработки любого традиционного устройства или блока, в котором реализована предложенная технология. Можно также повторно использовать существующее программное обеспечение, например, путем перепрограммирования существующего программного обеспечения или путем добавления новых программных компонентов.
На фиг. 14 показана блок-схема, иллюстрирующая пример устройства 130 для обработки пикселя, на основе реализации процессора-памяти согласно варианту осуществления. В этом конкретном примере, устройство 130 содержит процессор 131 и память 132. Память 132 содержит инструкции, исполняемые процессором 131.
Таким образом, процессор 131 выполнен с возможностью проверки, приводит ли цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, к выходу любого цветового канала пикселя за пределы допустимого диапазона. Процессор 131 также выполнен с возможностью получения значения цветовой компоненты в цветовом пространстве с использованием первой функции или первой поисковой таблицы, если цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, не приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона. Процессор 131 дополнительно выполнен с возможностью получения значения цветовой компоненты в цветовом пространстве с использованием второй, другой функции или второй, другой поисковой таблицы, если цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона.
В опциональном порядке, устройство 130 также может включать в себя схему связи, например, реализованную в форме блока 133 ввода и блока 134 вывода. Блоки 133, 134 ввода и вывода могут включать в себя функции для проводной и/или беспроводной связи с другими устройствами и/или сетевыми узлами в сети проводной или беспроводной связи. В конкретном примере, блоки 133, 134 ввода и вывода могут базироваться на схемы радиосвязи для осуществления связи с одним или более другими узлами, включающей в себя передачу и/или прием информации. В другом варианте осуществления, блоки 133, 134 ввода и вывода могут базироваться на схеме для проводной связи с одним или более другими устройствами или узлами. Блоки 133, 134 ввода и вывода могут быть подключены к процессору 131 и/или памяти 132. В порядке примера, блоки 133, 134 ввода и вывода могут включать в себя любой из следующих: приемника, передатчика, приемопередатчика, схемы ввода/вывода (I/O), входного(ых) порта(ов) и/или выходного(ых) порта(ов).
В конкретном примере, устройство 130 содержит процессор 131 и память 132, содержащую инструкции, исполняемые процессором 131. Согласно варианту осуществления, процессор 131 выполнен с возможностью определения модифицированной цветовой компоненты Y' во втором цветовом пространстве с использованием первой функции, проверки, будет ли эта компонента Y' генерировать обрезку, и если компонента Y' будет генерировать обрезку, процессор 131 выполнен с возможностью определения модифицированной цветовой компоненты Y' во втором цветовом пространстве с использованием второй функции.
Согласно варианту осуществления, устройство 130 также содержит блок 133 ввода, выполненный с возможностью приема видео, подлежащего кодированию. В таком случае, процессор 131 выполнен с возможностью приема видео, подлежащего кодированию, от блока 133 ввода.
Согласно варианту осуществления, устройство 130 также содержит блок 134 вывода, выполненный с возможностью вывода кодированного битового потока, принимаемого от процессора 131.
В конкретном варианте осуществления, процессор 131 выполнен с возможностью, при выполнении инструкций, хранящихся в памяти 132 для осуществления вышеописанных операций. Таким образом, процессор 131 подключен к памяти 132 для обеспечения нормального выполнения программного обеспечения.
На фиг. 15 показана блок-схема, иллюстрирующая другой пример устройства 110 для обработки пикселя, на основе реализации аппаратной схемы согласно варианту осуществления. Конкретные примеры подходящей аппаратной схемы включают в себя одну или более надлежащим образом сконфигурированную или, возможно, переконфигурируемую электронную схему, например, специализированные интегральные схемы (ASIC), FPGA, или любую другую аппаратную логику, например, схемы на основе дискретных логических вентилей и/или триггеров, соединенных между собой для осуществления специализированных функций совместно с подходящими регистрами (REG) и/или блоками памяти (MEM).
На фиг. 16 показана блок-схема, иллюстрирующая еще один пример устройства 120 для обработки пикселя, на основе комбинации обоих процессора(оа) 122, 123 и аппаратной схемы 124, 125 совместно с подходящим(и) блоком(ами) 121 памяти. Устройство 120 содержит один или более процессоров 122, 123, память 121, включающую в себя хранилище для программного обеспечения (SW) и данных, и один или более блоков аппаратной схемы 124, 125. Общие функциональные возможности, таким образом, делятся между запрограммированным программным обеспечением для выполнения на одном или более процессорах 122, 123, и одной или более заранее сконфигурированными или, возможно, переконфигурируемыми аппаратными схемами 124, 125. Фактическое программно-аппаратное разделение может определяться проектировщиком системы на основании нескольких факторов, включающих в себя скорость обработки, стоимость реализации и другие требования.
На фиг. 17 показана схема, иллюстрирующая пример компьютерной реализации 200 согласно варианту осуществления. В этом конкретном примере, по меньшей мере, некоторые из описанных в настоящем документе этапов, функций, процедур модулей и/или блоков реализованы в компьютерной программе 240, которая загружается в память 220 для выполнения схемой обработки, включающей в себя один или более процессоров 210. Процессор(ы) 210 и память 220 соединены друг с другом для обеспечения нормального выполнения программного обеспечения. Опциональная схема 230 связи также может быть соединена с процессором(ами) 210 и/или памятью 220 для обеспечения ввода и/или вывода соответствующих данных, например, видеопоследовательностей и кодированных видеопоследовательностей.
Согласно варианту осуществления, фиг. 17 представляет пользовательское оборудование 200. Пользовательское оборудование 200 может представлять собой любое устройство или приспособление, которое может принимать и обрабатывать видеоданные. Например, пользовательское оборудование 200 может представлять собой компьютер, стационарный или портативный, например, портативный компьютер, смартфон, планшет, телевизионную приставку, видеокамеру и т.д.
Термин 'процессор' следует понимать в общем смысле как любую систему или устройство, способное выполнять программный код или инструкции компьютерной программы для осуществления конкретной задачи обработки, определения или вычисления.
Таким образом, схема обработки, включающая в себя один или более процессоров 210, выполнена с возможностью осуществления, при выполнении компьютерной программы 240, строго определенных задач обработки, например, описанных в настоящем документе.
Схема обработки предназначена не только для выполнения вышеописанных этапов, функций, процедур и/или блоков, но может также выполнять другие задачи.
В конкретном варианте осуществления, компьютерная программа 240 содержит инструкции, которые, при выполнении, по меньшей мере, одним процессором 210, предписывают, по меньшей мере, одному процессору 210 проверять, приводит ли цветовая компонента пикселя в цветовом пространстве, дающая наименьшую ошибку между, по меньшей мере, одной цветовой компонентой в другом цветовом пространстве, определенной на основании цветовой компоненты в цветовом пространстве, и, по меньшей мере, одной исходной цветовой компонентой пикселя в другом цветовом пространстве, к выходу любого цветового канала пикселя за пределы допустимого диапазона. По меньшей мере, одному процессору 210 также предписывается получать значение цветовой компоненты в цветовом пространстве с использованием первой функции или первой поисковой таблицы, если цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, не приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона. По меньшей мере, одному процессору 210 дополнительно предписывается получать значение цветовой компоненты в цветовом пространстве с использованием второй, другой функции или второй, другой поисковой таблицы, если цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона.
Предложенная технология также обеспечивает носитель 250, содержащий компьютерную программу 240. Носитель 250 представляет собой один из электронного сигнала, оптического сигнала, электромагнитного сигнала, магнитного сигнала, электрического сигнала, радиосигнала, микроволнового сигнала или машиночитаемого носителя данных.
В порядке примера, программное обеспечение или компьютерную программу 240 можно реализовать как компьютерный программный продукт, который нормально переносится или хранится на компьютерно-считываемом носителе 250, в частности, энергонезависимом носителе. Компьютерно-считываемый носитель может включать в себя один или более сменных или стационарных запоминающих устройств, включающих в себя, но без ограничения, постоянную память (ROM), оперативную память (RAM), компакт-диск (CD), цифровой универсальный диск (DVD), диск Blu-ray, память с интерфейсом универсальной последовательной шины (USB), запоминающее устройство типа жесткого диска (HDD), флеш-память, магнитную ленту или любое другое традиционное запоминающее устройство. Таким образом, компьютерная программа 240 может загружаться в рабочую память 220 компьютера или эквивалентного устройства обработки 200 для выполнения его схемой 210 обработки.
Представленная(ые) в настоящем документе блок-схема(ы) операций можно рассматривать как блок-схему или блок-схемы компьютера, при осуществлении одним или более процессорами. Соответствующее устройство для обработки пикселя можно определить как группу функциональных модулей, где каждый этап, осуществляемый процессором, соответствует функциональному модулю. В этом случае, функциональные модули реализованы в виде компьютерной программы, выполняющейся на процессоре.
Таким образом, компьютерная программа, присутствующая в памяти, может быть организована как соответствующие функциональные модули, выполненные с возможностью осуществления, при выполнении процессором, по меньшей мере, часть описанных в настоящем документе этапов и/или задач.
На фиг. 18 показана схема, иллюстрирующая пример устройства 140 для обработки пикселя. Устройство 140 содержит блок 141 определения для определения, приводит ли цветовая компонента пикселя в цветовом пространстве, дающая наименьшую ошибку между, по меньшей мере, одной цветовой компонентой в другом цветовом пространстве, определенной на основании цветовой компоненты в цветовом пространстве, и, по меньшей мере, одной исходной цветовой компонентой пикселя в другом цветовом пространстве, к выходу любого цветового канала пикселя за пределы допустимого диапазона. Устройство 140 также содержит выводитель 142 значения для вывода значения цветовой компоненты в цветовом пространстве с использованием i) первой функции или первой поисковой таблицы, если цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, не приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона и ii) второй, другой функции или второй, другой поисковой таблицы, если цветовая компонента в цветовом пространстве, дающая наименьшую ошибку, приводит к выходу любого цветового канала пикселя за пределы допустимого диапазона.
В опциональном варианте осуществления, устройство 140 также содержит кодер 143 для кодирования значения яркостной компоненты в качестве предпочтительного примера цветовой компоненты пикселя в цветовом пространстве и для кодирования значений дискретизированных с понижением цветностных компонентов.
Согласно второму аспекту предусмотрен процессор для обработки пикселя в изображении, причем пиксель может быть представлен цветовыми компонентами в первом цветовом пространстве, например, R',G',B', цветовыми компонентами во втором цветовом пространстве, например, Y',Cb,Cr, и цветовыми компонентами в третьем цветовом пространстве, например, Y',Cb,Cr или X,Y,Z, и при этом цветовые компоненты разных цветовых пространств могут переноситься между друг другом функциями цветового преобразования. Процессор выполнен с возможностью определения модифицированной цветовой компоненты Y' во втором цветовом пространстве с использованием первой функции. Процессор также выполнен с возможностью проверки, будет ли эта компонента Y' генерировать обрезку. Процессор дополнительно выполнен с возможностью, если компонента Y' будет генерировать обрезку, определения модифицированной цветовой компоненты Y' во втором цветовом пространстве с использованием второй функции.
Процессор также может содержать модули, например, модуль, выполненный с возможностью определения модифицированной цветовой компоненты Y' во втором цветовом пространстве с использованием первой функции, модуль, выполненный с возможностью проверки, будет ли эта компонента Y' генерировать обрезку, и модуль, выполненный с возможностью, если компонента Y' будет генерировать обрезку, определения модифицированной цветовой компоненты Y' во втором цветовом пространстве с использованием второй функции.
Фиг. 19 демонстрирует конкретную аппаратную реализацию устройства 100, содержащего процессор 101 обработки пикселя в изображении, причем пиксель может быть представлен цветовыми компонентами в первом цветовом пространстве, например, R',G',B', цветовыми компонентами во втором цветовом пространстве, например, Y',Cb,Cr, и цветовыми компонентами в третьем цветовом пространстве, например, Y,Cb,Cr или X,Y,Z, и при этом цветовые компоненты разных цветовых пространств могут переноситься между друг другом функциями цветового преобразования. Процессор 101 выполнен с возможностью определения модифицированной цветовой компоненты Y' во втором цветовом пространстве с использованием первой функции. Процессор 101 также выполнен с возможностью проверки, будет ли эта компонента Y' генерировать обрезку. Процессор 101 дополнительно выполнен с возможностью, если компонента Y' будет генерировать обрезку, определения модифицированной цветовой компоненты Y' во втором цветовом пространстве с использованием второй функции.
Поэтому устройство 100 содержит процессор 101 и один или более блоков, представленных блоком 102 выбора на фигуре, для определения модифицированной цветовой компоненты Y' во втором цветовом пространстве с использованием первой функции, проверка, будет ли эта компонента Y' генерировать обрезку, и если компонента Y' будет генерировать обрезку, один или более блоков определять модифицированную цветовую компоненту Y' во втором цветовом пространстве с использованием второй функции.
В опциональном варианте осуществления, устройство 100 также содержит видеокодер 103 для кодирования модифицированной цветовой компоненты Y' и для кодирования значений дискретизированных с понижением цветностных компонентов.
Согласно варианту осуществления, устройство 100 также содержит блок 104 ввода, выполненный с возможностью приема видео, подлежащего кодированию, и блок 105 вывода, выполненный с возможностью вывода кодированного битового потока.
Блок 104 ввода может быть выполнен в виде общего блока ввода, например, схемы входного интерфейса или другого проводного соединения с внешними устройствами. Альтернативно, блок 104 ввода может быть выполнен в виде приемника или приемопередатчика, в частности, в случае беспроводного соединения с внешними устройствами. Соответственно, блок 105 вывода может быть выполнен в виде общего блока вывода, например, схемы выходного интерфейса или другого проводного соединения с внешними устройствами. Альтернативно, блок 105 вывода может быть выполнен в виде передатчика или приемопередатчика, в частности, в случае беспроводного соединения с внешними устройствами.
Блок 104 ввода, предпочтительно, подключен к процессору 101 и/или блоку 102 выбора. Процессор 101 предпочтительно, подключен к блоку 102 выбора и видеокодеру 103. Видеокодер 103 предпочтительно, подключен к блоку 105 вывода для пересылки кодированного битового потока, например, на декодер.
Все большую популярность приобретает предоставление вычислительных услуг (аппаратных и/или программных) на сетевых устройствах, например, сетевых узлах и/или серверах, где ресурсы доставляются в виде услуги в удаленные места по сети. В порядке примера, это означает, что описанные в настоящем документе функциональные возможности могут распределяться или перемещаться на один или более отдельных физических узлов или серверов. Функциональные возможности могут перемещаться или распределяться на одну или более совместно действующих физических и/или виртуальных машин, которые могут располагаться в отдельном(ых) физическом(их) узле(ах), т.е. в так называемом облаке. Эту также иногда называется облачными вычислениями, что является моделью, обеспечивающей повсеместный сетевой доступ по требованию к массиву конфигурируемых вычислительных ресурсов, например, сетям, серверам, хранилищу, приложениям и общим или специализированным службам.
На фиг. 20 показана схема, иллюстрирующая пример того, как функциональные возможности, в общем случае, могут распределяться или разделяться между различными сетевыми устройствами. В этом примере представлены, по меньшей мере, два отдельных, но соединенных между собой сетевых устройства 300, 301, которые могут иметь различные функции или части одной и той же функции, разделенные между сетевыми устройствами 300, 301. Могут существовать дополнительные сетевые устройства 302, составляющие часть такой распределенной реализации. Сетевые устройства 300, 301, 302 могут входить в состав одной и той же системы беспроводной связи, или одно или более из сетевых устройств могут представлять собой так называемые облачные сетевые устройства, находящиеся вне системы беспроводной связи.
На фиг. 21 показана схема, иллюстрирующая пример сети или системы беспроводной связи, включающей в себя сеть 2 доступа и/или базовую сеть 3 и/или систему операций и поддержки (OSS) 4 совместно с одним или более облачными сетевыми устройствами 300. Фигура также демонстрирует пользовательское устройство 5, подключенное к сети 2 доступа и способное осуществлять беспроводную связь с базовой станцией, представляющей вариант осуществления устройства 1 беспроводной связи.
Приложение A - AJUSTY
Предобработка и кодирование пикселей
Область техники, к которой относится изобретение
Настоящие варианты осуществления в общем случае относятся к предобработке и кодированию пикселей в изображении, и, в частности, к такой предобработке и кодированию, которая улучшает значения яркости пикселей.
Уровень техники
В цифровом видеосигнале, каждая выборка, т.е. компонента пикселя, представляется целым числом или значением с плавающей точкой. Дисплей, например, экран, телевизор или монитор, визуализирующий видео, исключает оптические световые сигналы на основании цифровых значений видеосигнала. Функция, преобразующая цифровое значение
Figure 00000043
в оптический световой сигнал
Figure 00000044
является электрооптической передаточной функцией (EOTF). Традиционно EOTF выражается экспоненциальной функцией, именуемой гамма-функцией, где гамма
Figure 00000045
- показатель степени. Она обычно равна 2,4 (но также может принимать другие значения):
Figure 00000046
.
Использование гамма-функции полезно для сигналов низкой яркости, но когда яркость превышает 100 нит (кд/м2) гамма-функция не полностью согласуется с контрастной чувствительностью зрительной системы человека. Поэтому задаются более нелинейные передаточные функции, например:
Figure 00000047
[A1]
Figure 00000048
Figure 00000049
Figure 00000050
Figure 00000051
Figure 00000052
Figure 00000053
Эта передаточная функция более нелинейна, чем гамма-функция в том смысле, что максимальное значение ее первой производной в диапазоне от 0 до 1 больше, чем у гамма-функции.
Понижающая дискретизация цветности обычно осуществляется до сжатия в качестве начального этапа для уменьшения объема данных. В 4:2:2 сигнал цветности снижается до половины разрешения в вертикальном направлении. В 4:2:0 сигнал цветности снижается до половины разрешения в вертикальном направлении и горизонтальном направлении. Это обычно осуществляется посредством некоторой операции фильтрации для получения сигнала хорошего качества, но также может осуществляться с использованием ближайшего соседа.
Для отображения видео 4:2:0 или 4:2:2 декодер осуществляет повышающую дискретизацию сигнала цветности, например, с использованием билинейных фильтров или удлиненных фильтров.
Однако комбинация сильно нелинейной передаточной функции, понижающей дискретизации 4:2:0 или 4:2:2 и упорядочения непостоянной яркости вносит в видеоданные заметные артефакты, в особенности для насыщенных цветов, т.е. цветов вблизи границы цветовой гаммы.
Существует несколько путей обойти эту проблему. Один из них состоит в том, чтобы не использовать понижающую дискретизацию 4:2:0 или 4:2:2, но, вместо этого, использовать 4:4:4. Однако это сопряжено с большими затратами, поскольку 4:2:0 наполовину уменьшает количество битов до сжатия, тогда как 4:2:2 уменьшает количество битов до двух третей. Другой путь состоит в том, чтобы не использовать сильно нелинейную передаточную функцию. Однако это затрудняет представление контента с очень высокой пиковой яркостью без образования полосатости в темных областях. Третий путь состоит в использовании постоянной яркости, т.е. применении передаточной функции после преобразования в цветовое пространство XYZ CIE1931. Однако такое решение не согласуется обычной практикой в сфере вещания и в некоторых сценариях может быть трудно и дорого в осуществлении.
Сущность вариантов осуществления, показанных в приложении A
Общая задача состоит в обеспечении предобработки пикселей для борьбы с артефактами.
Эти и другие задачи решаются согласно раскрытым в настоящем документе вариантам осуществления.
Аспект вариантов осуществления относится к способу предобработки пикселя в изображении. Способ содержит получение значения исходной линейной яркостной компоненты пикселя в третьем цветовом пространстве, определенного на основании линейного цвета пикселя в первом цветовом пространстве. Способ также содержит вывод значения нелинейной яркостной компоненты во втором цветовом пространстве для пикселя на основании значения первой нелинейной цветностной компоненты во втором цветовом пространстве, значения второй нелинейной цветностной компоненты во втором цветовом пространстве и значения исходной линейной яркостной компоненты в третьем цветовом пространстве.
Другой аспект вариантов осуществления относится к устройству для предобработки пикселя в изображении. Устройство выполнено с возможностью получения значения исходной линейной яркостной компоненты пикселя в третьем цветовом пространстве, определенного на основании линейного цвета пикселя в первом цветовом пространстве. Устройство также выполнено с возможностью вывода значения нелинейной яркостной компоненты во втором цветовом пространстве для пикселя на основании значения первой нелинейной цветностной компоненты во втором цветовом пространстве, значения второй нелинейной цветностной компоненты во втором цветовом пространстве и значения исходной линейной яркостной компоненты в третьем цветовом пространстве.
Родственный аспект вариантов осуществления задает устройство для предобработки пикселя в изображении. Устройство содержит блок определения для получения значения исходной линейной яркостной компоненты пикселя в третьем цветовом пространстве, определенного на основании линейного цвета пикселя в первом цветовом пространстве. Устройство также содержит выводитель для вывода значения нелинейной яркостной компоненты во втором цветовом пространстве для пикселя на основании значения первой нелинейной цветностной компоненты во втором цветовом пространстве, значения второй нелинейной цветностной компоненты во втором цветовом пространстве и значения исходной линейной яркостной компоненты в третьем цветовом пространстве.
Дополнительный аспект вариантов осуществления относится к устройству для кодирования пикселя в изображении. Устройство содержит процессор и память, содержащую инструкции, исполняемые процессором. Процессор выполнен с возможностью получения значения исходной линейной яркостной компоненты пикселя в третьем цветовом пространстве, определенного на основании линейного цвета пикселя в первом цветовом пространстве. Процессор также выполнен с возможностью вывода значения нелинейной яркостной компоненты во втором цветовом пространстве для пикселя на основании значения первой нелинейной цветностной компоненты во втором цветовом пространстве, значения второй нелинейной цветностной компоненты во втором цветовом пространстве и значения исходной линейной яркостной компоненты в третьем цветовом пространстве. Процессор дополнительно выполнен с возможностью кодирования значения нелинейной яркостной компоненты, значения первой нелинейной цветностной компоненты и значения второй нелинейной цветностной компоненты.
Родственный аспект вариантов осуществления задает устройство для кодирования пикселя в изображении. Устройство содержит блок определения для получения значения исходной линейной яркостной компоненты пикселя в третьем цветовом пространстве, определенного на основании линейного цвета пикселя в первом цветовом пространстве. Устройство также содержит выводитель для вывода значения нелинейной яркостной компоненты во втором цветовом пространстве для пикселя на основании значения первой нелинейной цветностной компоненты во втором цветовом пространстве, значения второй нелинейной цветностной компоненты во втором цветовом пространстве и значения исходной линейной яркостной компоненты в третьем цветовом пространстве. Устройство дополнительно содержит кодер для кодирования значения нелинейной яркостной компоненты, значения первой нелинейной цветностной компоненты и значения второй нелинейной цветностной компоненты.
Еще один аспект вариантов осуществления относится к компьютерной программе, содержащей инструкции, которые, при исполнении процессором, предписывают процессору для получения значения исходной линейной яркостной компоненты пикселя в изображении в третьем цветовом пространстве, определенного на основании линейного цвета пикселя в первом цветовом пространстве. Процессору также предписывается выводить значения нелинейной яркостной компоненты во втором цветовом пространстве для пикселя на основании значения первой нелинейной цветностной компоненты во втором цветовом пространстве, значения второй нелинейной цветностной компоненты во втором цветовом пространстве и значения исходной линейной яркостной компоненты в третьем цветовом пространстве.
Родственный аспект вариантов осуществления предусматривает носитель, содержащий компьютерную программу согласно вышеописанному. Носитель представляет собой один из электронного сигнала, оптического сигнала, электромагнитного сигнала, магнитного сигнала, электрического сигнала, радиосигнала, микроволнового сигнала или машиночитаемого носителя данных.
Дополнительный аспект вариантов осуществления относится к сигналу, представляющему кодированную версию пикселя в изображении. Кодированная версия содержит кодированную версию значения дискретизированной с понижением первой нелинейной цветностной компоненты во втором цветовом формате, кодированную версию значения дискретизированной с понижением второй нелинейной цветностной компоненты во втором цветовом пространстве и кодированную версию значения нелинейной яркостной компоненты во втором цветовом формате, выведенном согласно вышесказанному.
Настоящие варианты осуществления предусматривают предобработку и кодирование пикселей, которые борятся с артефактами, которые иначе может возникать вследствие использования нелинейной передаточной функции совместно с понижающей дискретизацией цветности. Субъективно, повышение качества в отношении яркости отчетливо наблюдается даже для не сжатого видео.
Иллюстративные варианты осуществления настоящего изобретения
Традиционная цепочка сжатия предусматривает подачу пикселей входящего линейного светового сигнала, обычно в пределах от 0 до 10000 кд/м2, на обратную передаточную функцию, которая дает новые пиксельные значения между 0 и 1. После этого, пиксели претерпевают цветовое преобразование, дающее яркостную компоненту и две цветностные компоненты. Затем две цветностные компоненты дискретизируются с понижением, например, до 4:2:0 или 4:2:2. После снятия сжатия, последовательности 4:2:0 или 4:2:2 дискретизируются с повышением до 4:4:4, обратно преобразуются по цвету и, наконец, передаточная функция возвращает пиксели линейного светового сигнала, который может выводиться на мониторе.
Комбинация сильно нелинейной передаточной функции, понижающая дискретизация цветности и упорядочения непостоянной яркости вносит в видеоданные заметные артефакты, в особенности для насыщенных цветов. Проблема состоит в том, что цветностные компоненты интерполируются, тогда как яркостная компонента - нет. Поэтому может существовать резкий сдвиг в яркостной компоненте пикселя, но цветностные компоненты не могут следовать, поскольку они интерполируются. Для некоторых цветов, в особенности, насыщенных цветов, получается пиксель совершено неправильной интенсивности, что отчетливо наблюдается как артефакт.
Предобработка пикселей согласно вариантам осуществления может использоваться для борьбы или, по меньшей мере, снижения влияния артефактов, таким образом, обеспечивая цвет, более близкий к входящему ʺистинномуʺ цвету пикселя.
Цветовое пространство или цветовой формат является типом и количеству цветов, которые происходят из комбинаций цветовых компонентов цветовой модели. Цветовая модель является абстрактной конфигурацией, описывающей, каким образом цвета можно представлять кортежами чисел, т.е. цветовых компонент. Цветовые компоненты имеют несколько отличительных признаков, например, тип компоненты, например, оттенок, и его единицы, например, градусы или проценты, или тип шкалы, например, линейный или нелинейный, и его назначенное количество значений, именуемых глубиной цвета или битовой глубиной.
Не ограничительные, но иллюстративные, цветовые пространства, которые совместно используются для пикселей в изображениях и видеозаписях, включают в себя цветовое пространство красного, зеленого, синего (RGB), цветовое пространство яркости, цветности синего и цветности красного (YCbCr, иногда обозначаемое Y'CbCr, Y'Cb'Cr', YCBCR, Y'CBCR или Y'CB'CR') и цветовое пространство яркости и цветностей (XYZ).
На фиг. 22 показана блок-схема последовательности операций, иллюстрирующая способ предобработки пикселя в изображении. Способ содержит получение, на этапе S1, значения исходной линейной яркостной компоненты пикселя в третьем цветовом пространстве, определенного на основании линейного цвета пикселя в первом цветовом пространстве. Затем способ переходит к этапу S2, который содержит вывод значения нелинейной яркостной компоненты во втором цветовом пространстве для пикселя на основании значения первой нелинейной цветностной компоненты во втором цветовом пространстве, значения второй нелинейной цветностной компоненты во втором цветовом пространстве и значения исходной линейной яркостной компоненты в третьем цветовом пространстве.
Предобработка пикселей на фиг. 22 использует две нелинейные цветностные компоненты во втором цветовом пространстве. Две нелинейные цветностные компоненты во втором цветовом пространстве могут быть значением дискретизированной с понижением первой нелинейной цветностной компоненты во втором цветовом пространстве и значением дискретизированной с понижением второй нелинейной цветностной компоненты во втором цветовом пространстве. В конкретном варианте осуществления, эти две нелинейные цветностные компоненты являются компонентами Cb' и Cr'. Более предпочтительно, нелинейные цветностные компоненты являются компонентами Cb' и Cr' в формате 4:2:0 или 4:2:2. Соответственно, второе цветовое пространство является, в этом варианте осуществления, цветовым пространством YCbCr. Апостроф "'" используется для указания, что две цветностные компоненты являются нелинейными цветностными компонентами.
В таком случае, этап S2 на фиг. 22 предпочтительно содержит вывод значения нелинейной яркостной компоненты во втором цветовом пространстве на основании значения дискретизированной с понижением первой нелинейной цветностной компоненты во втором цветовом пространстве, значения дискретизированной с понижением второй нелинейной цветностной компоненты во втором цветовом пространстве и значения исходной линейной яркостной компоненты в третьем цветовом пространстве.
В альтернативном варианте осуществления, два значения нелинейной цветностной компоненты во втором цветовом пространстве не обязательно дискретизировать с понижением, но, напротив, могут быть в форме значений недискретизированной нелинейной цветностной компоненты во втором цветовом пространстве или значений дискретизированной с повышением нелинейной цветностной компоненты во втором цветовом пространстве. В последнем случае, значения дискретизированной с повышением нелинейной цветностной компоненты получаются после повышающей дискретизации значений дискретизированной с понижением нелинейной цветностной компоненты во втором цветовом пространстве. В этом альтернативном варианте осуществления, нелинейные цветностные компоненты являются компонентами Cb' и Cr' в формате 4:4:4.
Согласно варианту осуществления, значения первой и второй нелинейных цветностных компонент во втором цветовом пространстве пикселя получаются на основании линейного цвета пикселя в первом цветовом пространстве. В конкретном варианте осуществления, это первое линейное цветовое пространство является цветовым пространством RGB. Соответственно, линейный цвет пикселя в первом цветовом пространстве является, в этом конкретном варианте осуществления, цветом RGB пикселя.
Согласно варианту осуществления, вышеупомянутое третье цветовое пространство является цветовым пространством XYZ. Соответственно, линейная яркость пикселя в третьем цветовом пространстве является, в этом варианте осуществления, компонентной Y.
Предобработка на фиг. 22, таким образом, получает или обеспечивает значение исходной линейной яркостной компоненты пикселя в третьем цветовом пространстве, определенное на основании линейного цвета пикселя в первом цветовом пространстве. Это значение исходной линейной яркостной компоненты предпочтительно отражает истинную яркость пикселя, т.е. исходную яркость пикселя до любого цветового преобразования, применения передаточных функций и понижающей дискретизации. Это значение исходной линейной яркостной компоненты определяется на основании линейного цвета пикселя в первом цветовом пространстве. Согласно варианту осуществления, этот линейный цвет пикселя в первом цветовом пространстве является исходным входящим цветом пикселя. В конкретном варианте осуществления, этот исходный входящий цвет обозначается в настоящем документе ROGOBO, и исходная линейная яркостная компонента обозначается YO.
Исходная линейная яркость является, таким образом, целевой яркостью, которую можно вычислять многими разными способами. Эта исходная линейная яркость не обязательно должна напрямую соответствовать фактической яркости датчика в фото- или видеокамере или в панели дисплея.
Значение исходной линейной яркостной компоненты в третьем цветовом пространстве можно получить функциональным возможностям предобработки и кодирования в качестве значения исходной линейной яркостной компоненты, предпочтительно, значения YO, в заранее определенной или предварительно вычисленной форме. Это означает, что определение значения исходной линейной яркостной компоненты на основании линейного цвета в первом цветовом пространстве уже произошло, и только результат определения передается функциональным возможностям предобработки и кодирования.
В альтернативном варианте осуществления, предобработка вариантов осуществления содержит определение или вычисление значения исходной линейной яркостной компоненты. В таком варианте осуществления, этап S1 на фиг. 22 предпочтительно содержит определение значения исходной линейной яркостной компоненты в третьем цветовом пространстве на основании линейного цвета в первом цветовом пространстве.
Затем значение нелинейной яркостной компоненты во втором цветовом пространстве выводится для пикселя на этапе S2 на основании значений первой и второй нелинейных цветностных компонент во втором цветовом пространстве и значения исходной линейной яркостной компоненты в третьем цветовом пространстве. Поэтому, согласно варианту осуществления, нелинейная яркостная компонента Y' в цветовом пространстве YCbCr является функцией компонент Cb' и Cr' в цветовом пространстве YCbCr и компоненты YO в цветовом пространстве XYZ, т.е. Y'=f(Cb', Cr', YO). Компонента YO, в свою очередь, определяется на основании цвета ROGOBO пикселя в цветовом пространстве RGB, т.е. YO=g(RO, GO, BO). Соответственно, Y'=f(Cb', Cr', g(RO, GO, BO)).
Затем предварительно обработанный пиксель представляется выведенной нелинейной яркостной компонентой (Y') и двумя дискретизированными с понижением нелинейными цветностными компонентами (Cb', Cr') во втором цветовом пространстве, т.е. Y'Cb'Cr'. Таким образом, кортеж Y'Cb'Cr' представляет предварительно обработанный цвет пикселя, предпочтительно в формате 4:2:0 или 4:2:2, т.е. с дискретизированными с понижением цветностными компонентами, но не дискретизированной с понижением яркостной компонентой.
Согласно варианту осуществления, этап S2 на фиг. 22 содержит вывод значения нелинейной яркостной компоненты во втором цветовом пространстве, которое минимизирует разность между значением исходной линейной яркостной компоненты в третьем цветовом пространстве и значением линейной яркостной компоненты в третьем цветовом пространстве определенный на основании значения нелинейной яркостной компоненты во втором цветовом пространстве, значения первой нелинейной цветностной компоненты во втором цветовом пространстве и значения второй нелинейной цветностной компоненты во втором цветовом пространстве.
Поэтому, в этом варианте осуществления, этап S2 предусматривает нахождение значения нелинейной яркостной компоненты (Y') во втором цветовом пространстве (YCbCr) которое минимизирует разность между значением исходной линейной яркостной компоненты (YO) и значением линейной яркостной компоненты (Y) в третьем цветовом пространстве (XYZ). Это значение линейной яркостной компоненты (Y) в третьем цветовом пространстве (XYZ), в свою очередь, получается на основании значения нелинейной яркостной компоненты (Y') и двух значений нелинейной цветностной компоненты (Cb', Cr') во втором цветовом пространстве (YCbCr).
Таким образом, этот вариант осуществления предусматривает нахождение значения компоненты Y' которое минимизирует разность |YO - Y| или (YO - Y)2, где Y=h(Y', Cb', Cr') и h(.) указывает, что Y определяется на основании Y', Cb' и Cr'.
В альтернативном, но родственном варианте осуществления, этап S2 предусматривает вывод значения нелинейной яркостной компоненты во втором цветовом пространстве, которое минимизирует разность между функцией значения исходной яркостной компоненты в третьем цветовом пространстве и функцией значения линейной яркостной компоненты в третьем цветовом пространстве. Это значение линейной яркостной компоненты в третьем цветовом пространстве определяется на основании значения нелинейной яркостной компоненты во втором цветовом пространстве, значения первой нелинейной цветностной компоненты во втором цветовом пространстве и значения второй нелинейной цветностной компоненты во втором цветовом пространстве.
Таким образом, этот вариант осуществления предусматривает нахождение значения компоненты Y' которое минимизирует разность |k(YO) -k(Y)| или (k(YO) -k(Y))2, где Y=h(Y', Cb', Cr').
Функция (k(.)), предпочтительно, является обратной передаточной функцией, например, функцией, обратной передаточной функции [A1].
Этапы способа S1 и S2 на фиг. 22 осуществляются для, по меньшей мере, одного пикселя в изображении, например, видеопоследовательности. Согласно варианту осуществления, этапы S1 и S2, предпочтительно, осуществляются для нескольких, т.е. по меньшей мере, двух пикселей в изображениях, что схематически указано линией L1. В конкретном варианте осуществления, этапы S1 и S2 осуществляются для всех пикселей в изображении.
В другом конкретном варианте осуществления, этапы S1 и S2 осуществляются для тех пикселей в изображении, которые приводят к визуальному артефакту, как описано выше. Эти пиксели можно идентифицировать, сравнивая значение исходной линейной яркостной компоненты (YO) в третьем цветовом пространстве для пикселя со значением линейной яркостной компоненты (Y) в третьем цветовом пространстве определенный для пикселя на основании значений нелинейных яркостной и цветностной компонент (Y', Cb', Cr') во втором цветовом формате и где эти значения нелинейных яркостной и цветностных компонент выводятся согласно типичной цепочке сжатия безо всякой предобработки согласно изобретению. В этом последнем варианте осуществления, предобработка вариантов осуществления таким образом применяется только к тем пикселям в изображении, на которых типичная цепочка сжатия дает ошибку в яркостной компоненте.
Альтернативно, пиксели в изображении, которые приводят к визуальным артефактам, можно идентифицировать, сравнивая значения компонент Cb' и Cb и/или значения компонент Cr' и Cr, т.е. значение дискретизированной с повышением компоненты Cb' и/или Cr' с соответствующим значением компоненты Cb и/или Cr', полученной путем применения первого цветового преобразования к цвету R'G'B', где R', G' и B' получаются путем применения обратной передаточной функции к Ro, Go и Bo, соответственно, исходного цвета ROGOBO.
Дополнительным вариантом является осуществление этапов S1 и S2 для тех пикселей, которые имеют насыщенные цвета, т.е. цвета на или вблизи границы гаммы.
На фиг. 23 показана блок-схема последовательности операций, иллюстрирующая дополнительные, опциональные этапы способа, показанного на фиг. 22. Этапы на фиг. 23 иллюстрируют типичную цепочку обработки, используемую для вывода значений дискретизированной с понижением нелинейной цветностной компоненты во втором цветовом пространстве на основании линейного цвета в первом цветовом пространстве. Способ начинается на этапе S10, который содержит применение первой передаточной функции к линейному цвету в первом цветовом пространстве для получения нелинейного цвета в первом цветовом пространстве. Следующий этап S11 содержит применение первого цветового преобразования к нелинейному цвету в первом цветовом пространстве для получения нелинейного цвета во втором цветовом пространстве. Нелинейный цвет во втором цветовом пространстве содержит начальное значение первой нелинейной цветностной компоненты и начальное значение второй нелинейной цветностной компоненты. Следующий этап S12 содержит понижающую дискретизацию начального значения первой нелинейной цветностной компоненты во втором цветовом пространстве и начального значения второй нелинейной цветностной компоненты во втором цветовом пространстве для получения значения дискретизированной с понижением первой нелинейной цветностной компоненты во втором цветовом пространстве и значения дискретизированной с понижением второй нелинейной цветностной компоненты во втором цветовом пространстве. Затем способ переходит к этапу S1 на фиг. 22.
Согласно варианту осуществления типичной цепочки обработки на фиг. 23, первая передаточная функция, например, функция, обратная передаточной функции [A1], применяется к цвету ROGOBO пикселя, т.е. исходному цвету пикселя, для получения нелинейного цвета R'G'B' в цветовом пространстве RGB. Затем этот цвет R'G'B' преобразуется из цветового пространства RGB в цветовое пространство YCbCr с использованием первого цветового преобразования, например, цветового преобразования:
Figure 00000054
Figure 00000055
Figure 00000056
Результирующий цвет Y'Cb'Cr' пикселя, следующий после применения первого цветового преобразования на этапе S11, представляет собой цвет Y'Cb'Cr' без сжатия, т.е. В формате 4:4:4. На следующем этапе S12 дискретизируются с понижением две цветностные компоненты Cb' и Cr' для получения цвета в формате 4:2:0 или 4:2:2, т.е. с дискретизированными с понижением нелинейными цветностными компонентами Cb' и Cr'.
Понижающая дискретизация на этапе S12 может осуществляться согласно известным методам понижающей дискретизации. Например, может использоваться операция фильтрации или операция ближайшего соседа. Пример метода понижающей дискретизации, который можно использовать согласно вариантам осуществления, раскрыт в разделе B.1.5.5 Chroma downsampling from 4:4:4 to 4:2:0 в документе [A4].
На фиг. 24 показана блок-схема последовательности операций, иллюстрирующая дополнительные, опциональные этапы способа, показанного на фиг. 22. Эти этапы иллюстрируют дополнительную обработку для вывода оптимального значения нелинейной яркостной компоненты для пикселя в изображении. Способ переходит от этапа S1 на фиг. 22 или этапа S12 на фиг. 23. Способ продолжается путем повышающей дискретизации значения дискретизированной с понижением первой нелинейной цветностной компоненты во втором цветовом пространстве и значения дискретизированной с понижением второй нелинейной цветностной компоненты во втором цветовом пространстве для получения значения дискретизированной с повышением первой нелинейной цветностной компоненты во втором цветовом пространстве и значения дискретизированной с повышением второй нелинейной цветностной компоненты во втором цветовом пространстве на этапе S20. Следующий этап S21 содержит применение второго цветового преобразования к предполагаемому значению нелинейной яркостной компоненты во втором цветовом пространстве, значению дискретизированной с повышением первой нелинейной цветностной компоненты во втором цветовом пространстве и значению дискретизированной с повышением второй нелинейной цветностной компоненты во втором цветовом пространстве для получения нелинейного цвета в первом цветовом пространстве. Следующий этап S22 содержит применение второй передаточной функции к нелинейному цвету во втором цветовом пространстве для получения линейного цвета в первом цветовом пространстве. Наконец, третье цветовое преобразование применяется на этапе S23 к линейному цвету в первом цветовом пространстве для получения значения линейной яркостной компоненты в третьем цветовом пространстве. Затем способ переходит к этапу S2 на фиг. 22, который содержит вывод значения нелинейной яркостной компоненты на основании сравнения значения исходной линейной яркостной компоненты в третьем цветовом пространстве и значения линейной яркостной компоненты в третьем цветовом пространстве.
Таким образом, согласно варианту осуществления, значения дискретизированных с понижением компонент Cb' и Cr' в формате 4:2:0 или 4:2:2 сначала дискретизируются с повышением в формат 4:4:4. Повышающая дискретизация на этапе S20 может осуществляться согласно известным методам повышающей дискретизации. Например, повышающая дискретизация может осуществляться с использованием билинейных или удлиненных фильтров. Пример метода повышающей дискретизации, который можно использовать согласно вариантам осуществления, раскрыт в разделе B.1.5.6 Chroma upsampling from 4:2:0 to 4:4:4 (Y'CbCr domain) в документе [A4].
Затем эти два значения дискретизированных с повышением компонент Cb' и Cr' вводятся совместно с предполагаемым значением компоненты Y' во второе цветовое преобразование для получения нелинейного цвета R'G'B', например, цветовое преобразование:
Figure 00000057
Figure 00000058
Figure 00000059
Для цветового пространства Rec.709 a13=1,57480, a22=0,18732, a23=0,46812, a32=1,85560 и для цветового пространства BT.2020 a13=1,47460, a22=0,16455, a23=0,57135, a32=1,88140.
В общем случае, R', G' и B' могут принимать значения в интервале [0, 1]. Соответственно, второе цветовое преобразование также может включать в себя операцию усечения или обрезки, например
Figure 00000060
для компоненты R', где clip(x, a, b) равно a, если x<a, и равно b, если x>b и иначе равно x.
Затем этот цвет R'G'B' вводится во вторую передаточную функцию, например, передаточную функцию [A1], для получения линейного цвета RGB. Затем этот цвет RGB преобразуется из цветового пространства RGB в цветовое пространство XYZ с использованием третьего цветового преобразования, например, цветового преобразования:
Figure 00000061
Figure 00000062
Figure 00000063
Затем значение линейной яркостной компоненты Y, выводимое из третьего цветового преобразования, сравнивается со значением исходной линейной яркостной компоненты YO пикселя на этапе S2.
Согласно варианту осуществления, этап S2 на фиг. 22 содержит выбор предполагаемого значения нелинейной яркостной компоненты во втором цветовом пространстве, которое уменьшает разность между значением исходной линейной яркостной компоненты в третьем цветовом пространстве и значением линейной яркостной компоненты в третьем цветовом пространстве.
Таким образом, этап S2 предпочтительно содержит выбор предполагаемого значения нелинейной яркостной компоненты во втором цветовом пространстве, которое приводит к, по меньшей мере, уменьшению разности между значением исходной линейной яркостной компоненты и значением линейной яркостной компоненты, полученным на этапе S23. В конкретном варианте осуществления, этап S2 содержит выбор предполагаемого значения нелинейной яркостной компоненты во втором цветовом пространстве, которое минимизирует разность между значением исходной яркостной компоненты и значением линейной яркостной компоненты в третьем цветовом пространстве.
Эту разность можно, как упомянуто выше, представлять в виде |YO - Y| или (YO - Y)2, где Y получается на этапе S23 фиг. 24.
В альтернативном, но родственном варианте осуществления, этап S2 предусматривает выбор предполагаемого значения нелинейной яркостной компоненты во втором цветовом пространстве, которое уменьшает или, предпочтительно, минимизирует разность между функцией значения исходной яркостной компоненты в третьем цветовом пространстве и функцией значения линейной яркостной компоненты в третьем цветовом пространстве, т.е. выбор предполагаемого значения компоненты Y', которое минимизирует разность |k(YO) -k(Y)| или (k(YO) -k(Y))2.
Согласно варианту осуществления, этапы S21 - S23 на фиг. 24 осуществляются для разных предполагаемых значений нелинейной яркостной компоненты во втором цветовом пространстве, которое схематически проиллюстрировано линией L2. В таком случае, этап S2 предпочтительно содержит выбор предполагаемого значения нелинейной яркостной компоненты из разных предполагаемых значений нелинейной яркостной компоненты во втором цветовом пространстве, которое дает наименьшую разность между значением исходной линейной яркостной компоненты в третьем цветовом пространстве и значением линейной яркостной компоненты в третьем цветовом пространстве или наименьшую разность между функцией значения исходной линейной яркостной компоненты в третьем цветовом пространстве и функцией значения линейной яркостной компоненты в третьем цветовом пространстве.
Это означает, что цикл этапов S21 - S23 осуществляются несколько раз и с использованием разных предполагаемых значений компоненты Y' на этапе S21. Затем предполагаемое значение компоненты Y', которое дает наименьшую разность между YO и Y или между k(YO) и k(Y) выбирается и используется совместно со значениями дискретизированных с понижением компонент Cb' и Cr' как цветовое представление пикселя.
Нижеследующие варианты осуществления описаны более подробно в отношении разности между значением исходной линейной яркостной компоненты в третьем цветовом пространстве и значением линейной яркостной компоненты в третьем цветовом пространстве. Эти варианты осуществления также охватывают разность между функцией значения исходной линейной яркостной компоненты в третьем цветовом пространстве и функцией значения линейной яркостной компоненты в третьем цветовом пространстве. Функция предпочтительно является, как ранее упомянуто в настоящем документе, функцией, обратной передаточной функции, например, функцией, обратной передаточной функции [A1].
Выбор оптимального предполагаемого значения компоненты Y' среди нескольких предполагаемых значений компоненты Y' может осуществляться согласно различным вариантам осуществления, дополнительно описанным в настоящем документе.
Первый вариант осуществления предусматривает осуществление двоичного поиска. Поэтому, в этом варианте осуществления способ содержит осуществление двоичного поиска для выбора предполагаемого значения нелинейной яркостной компоненты во втором цветовом пространстве, которое минимизирует разность между значением исходной линейной яркостной компоненты в третьем цветовом пространстве и значением линейной яркостной компоненты в третьем цветовом пространстве.
Двоичный поиск является эффективным методом, который можно использовать для нахождения оптимального предполагаемого значения нелинейной яркостной компоненты. В общем случае, алгоритм двоичного поиска начинается со сравнения значения исходной яркостной компоненты в третьем цветовом пространстве со значением линейной яркостной компоненты в третьем цветовом пространстве, полученной с использованием среднего элемента сортированного массива возможных предполагаемых значений нелинейной яркостной компоненты во втором цветовом пространстве. Если значение линейной яркостной компоненты в третьем цветовом пространстве равно значению исходной яркостной компоненты в третьем цветовом пространстве или отличается от значения исходной яркостной компоненты в третьем цветовом пространстве не более чем на заданную величину, то позиция среднего элемента возвращается, и поиск заканчивается. Если значение линейной яркостной компоненты больше значения исходной линейной яркостной компоненты, то поиск продолжается на нижней половине массива; или если значение линейной яркостной компоненты меньше значения исходной линейной яркостной компоненты, то поиск продолжается на верхней половине массива. Этот процесс продолжается, устраняя половину элементов и сравнивая результирующее значение линейной яркостной компоненты со значением исходной линейной яркостной компоненты, пока разность между ними не достигнет нуля или пока поиск не будет произведен во всем массиве, т.е. пока не будут исключены все элементы кроме одного. Это гарантированно занимает только log2(N) шагов, где N - количество возможных предполагаемые значения нелинейной яркостной компоненты в массиве. Например, предположим, что предполагаемые значения нелинейной яркостной компоненты можно выбирать из массива [0, 1023]. Тогда N=1024 и log2(1024)=10.
Согласно варианту осуществления, двоичный поиск осуществляется путем осуществления этапов S21 - S23 на фиг. 24 для предполагаемого значения нелинейной яркостной компоненты во втором цветовом пространстве в середине интервала поиска. Затем способ переходит к этапам, проиллюстрированным на фиг. 25. Следующий этап S25 содержит выбор предполагаемого значения нелинейной яркостной компоненты в середине интервала поиска, если разность, предпочтительно, вычисляемая на этапе S24, между значением исходной яркостной компоненты в третьем цветовом пространстве и значением линейной яркостной компоненты в третьем цветовом пространстве равна нулю. Иначе, т.е. если разность вычисленный на этапе S24 не равна нулю, способ переходит к этапу S26. Этот этап S26 содержит выбор интервала поиска, имеющего вдвое меньший размер по сравнению с интервалом поиска, используемым выше, и заканчивающегося на предполагаемом значении нелинейной яркостной компоненты, используемой выше, если значение линейной яркостной компоненты в третьем цветовом пространстве больше значения исходной линейной яркостной компоненты в третьем цветовом пространстве, или выбор интервала поиска, имеющего вдвое меньший размер по сравнению с интервалом поиска, используемым выше и начинающегося на предполагаемом значении нелинейной яркостной компоненты, используемой выше, если значение линейной яркостной компоненты в третьем цветовом пространстве меньше значения исходной линейной яркостной компоненты в третьем цветовом пространстве.
Этапы, участвующие в цикле L2, т.е. этапы S21-S23 и S24-S26 затем повторяются, пока разность между значением исходной линейной яркостной компоненты в третьем цветовом пространстве и значением линейной яркостной компоненты в третьем цветовом пространстве не достигнет нуля, интервал поиска больше нельзя разделить пополам, цикл повторяется заданное число раз или интервал поиска достиг заранее заданный размер интервала, т.е. интервал поиска меньше или равен заранее заданному размеру интервала.
Выбор интервала поиска на этапе S26, в общем случае, предусматривает выбор интервала поиска, имеющего приблизительно вдвое меньший размер по сравнению с интервалом поиска, используемым выше. Например, если интервал поиска содержит значения 100, 101, 102, 103, можно выбирать 101 или 102 в качестве ʺсреднего значенияʺ, дающего ʺуполовиненныйʺ интервал поиска [100, 101] (истинное деление интервала поиска пополам) или [101, 103] (приблизительное деление интервала поиска пополам) или ʺуполовиненныйʺ интервал поиска [100, 102] (приблизительное деление интервала поиска пополам) или [102, 103] (истинное деление интервала поиска пополам).
Другой вариант осуществления рассматривает выбор значения нелинейной яркостной компоненты как задачу оптимизации и минимизирует ошибку E=(YO - Y)2 или E=|YO - Y| в отношении Y'. Это может осуществляться, например, посредством градиентного спуска, посредством вычисления градиента E относительно Y', т.е. dE/dY', и обновления Y' на малую величину в направлении, противоположном градиенту, т.е., Y'n+1=Y'n - α(dE/dY'), где α - малая постоянная.
Градиентный спуск может быть медленным, поэтому более быстрый путь может представлять собой алгоритм оптимизации второго порядка, который вычисляет или аппроксимирует производные второго порядка d2E/dY'2. Примером такого алгоритма является метод Гаусса-Ньютона.
Дополнительный вариант осуществления предусматривает использование поисковой таблицы (LUT) при выборе значения нелинейной яркостной компоненты. Такая LUT может, например, содержать наилучшее значение компоненты Y' для каждой возможной комбинации значений компонент Cb', Cr' и YO. Предположим, например, что компоненты Cb' и Cr' квантуются до 10 битов, и что компонента YO также квантуется до 10 битов. Тогда LUT должна содержать 210×210×210 разных значений компоненты Y'. Это эквивалентно 230 значений компоненты Y'. Если каждое такое значение компоненты Y' имеет размер два байта, LUT будет иметь размер 231 байтов или 2 ГБ.
Также можно использовать LUT меньшего размера. Например, можно квантовать компоненты YO, Cb' и Cr' до меньшего размера, например 6 битов. Тогда LUT будет иметь 218 значений компонентов Y', или 219 байтов, что равно 512 кБ.
Компонента YO является линейной. Соответственно, может быть неэффективно просто квантовать ее. Вместо этого лучше использовать функцию YO совместно с Cb' и Cr' в качестве входа в LUT для получения оптимальной компоненты Y'. Функция предпочтительно выводит нелинейное представление компоненты YO и может быть, например, обратное передаточной функцией (TF-1(.)), например, функция, обратная передаточной функции [1]. Затем оптимальное значение компоненты Y' выводится из LUT как Y'=LUT(Cb', Cr', TF-1(YO)).
На фиг. 26 показана блок-схема последовательности операций, иллюстрирующая вариант осуществления этапа S2 на фиг. 22 при использовании LUT. Способ переходит от этапа S1 на фиг. 22. Следующий этап S30 содержит повышающую дискретизацию значения дискретизированной с понижением первой нелинейной цветностной компоненты во втором цветовом пространстве и значения дискретизированной с понижением второй нелинейной цветностной компоненты во втором цветовом пространстве для получения значения дискретизированной с повышением первой нелинейной цветностной компоненты во втором цветовом пространстве и значения дискретизированной с повышением второй нелинейной цветностной компоненты во втором цветовом пространстве.
Следующий этап S32 содержит извлечение значения нелинейной яркостной компоненты во втором цветовом пространстве из поисковой таблицы с использованием значения исходной линейной яркостной компоненты в третьем цветовом пространстве, или ее нелинейной версии, значения дискретизированной с повышением первой нелинейной цветностной компоненты во втором цветовом пространстве и значения дискретизированной с повышением второй нелинейной цветностной компоненты во втором цветовом пространстве, или их квантованных версий, в качестве входа в поисковую таблицу.
На фиг. 27 показана блок-схема последовательности операций, иллюстрирующая дополнительный, опциональный этап способа, показанного на фиг. 26. Способ переходит от этапа S30 на фиг. 26. Следующий этап S31 содержит применение первой обратной передаточной функции к значению исходной линейной яркостной компоненты в третьем цветовом пространстве для получения значения исходной нелинейной яркостной компоненты в третьем цветовом пространстве. Затем способ переходит к этапу S32 на фиг. 26. В этом варианте осуществления, этап S32 содержит извлечение значения нелинейной компоненты во втором цветовом пространстве из поисковой таблицы с использованием значения исходной нелинейной яркостной компоненты в третьем цветовом пространстве, значения дискретизированной с повышением первой нелинейной цветностной компоненты во втором цветовом пространстве и значения дискретизированной с повышением второй нелинейной цветностной компоненты во втором цветовом пространстве, или их квантованных версий, в качестве входа в поисковую таблицу.
Согласно варианту осуществления, поисковая таблица содержит, для каждой комбинации значения исходной линейной яркостной компоненты в третьем цветовом пространстве, или их нелинейной версии, значения дискретизированной с повышением первой нелинейной цветностной компоненты во втором цветовом пространстве и значения дискретизированной с повышением второй нелинейной цветностной компоненты во втором цветовом пространстве, или их квантованные версии, оптимальное значение нелинейной яркостной компоненты во втором цветовом пространстве, которое минимизирует разность между значением исходной линейной яркостной компоненты в третьем цветовом пространстве и значением линейной яркостной компоненты в третьем цветовом пространстве определенный на основании оптимального значения нелинейной яркостной компоненты во втором цветовом пространстве, значения дискретизированной с понижением первой нелинейной цветностной компоненты во втором цветовом пространстве и значения дискретизированной с понижением второй нелинейной цветностной компоненты во втором цветовом пространстве.
Повышающая дискретизация значений нелинейной цветностной компоненты во втором цветовом пространстве, осуществляемая на этапе S20 на фиг. 24 и этапе S30 на фиг. 26, предпочтительно, дискретизирует с повышением значения нелинейной цветностной компоненты до одного и того же количества выборок как значение нелинейной яркостной компоненты во втором пространстве. Таким образом, повышающая дискретизация, осуществляемая на этих этапах, предпочтительно, дает значения нелинейной цветностной компоненты, имеющие то же количество выборок, что и до применения любой понижающей дискретизации, например, на этапе S12 на фиг. 23. Это означает, что до понижающей дискретизации и после повышающей дискретизации Y', все компоненты Cb' и Cr' содержат одно и то же количество выборок, например, в формате 4:4:4. После понижающей дискретизации компонента Y' содержит больше выборок по сравнению с компонентами Cb' и Cr', которые предпочтительно содержат одно и то же количество выборок, например, в формате 4:2:0 или 4:2:2.
Пиксель в изображении имеет значение нелинейной яркостной компоненты во втором цветовом пространстве, предпочтительно, выведенное, как описано в настоящем документе. Значения нелинейной цветностной компоненты во втором цветовом пространстве, связанные с пикселем и полученные после повышающей дискретизации, могут генерироваться на основании соответствующих значений дискретизированных с понижением первой и второй нелинейных цветностных компонент во втором цветовом пространстве или на основании нескольких значений дискретизированных с понижением первой и второй нелинейных цветностных компонент во втором цветовом пространстве, в зависимости от метода повышающей дискретизации. Например, если используется билинейная повышающая дискретизация, то четыре значения дискретизированной с понижением компоненты Cb' и четыре значения дискретизированной с понижением компоненты Cr' будут влиять на пиксель и значения дискретизированных с повышением компонент Cb' и Cr'. Соответственно, если используется повышающая дискретизация ближайшего соседа, то обычно единственное значение дискретизированной с понижением компоненты Cb' и единственное значение дискретизированной с понижением компоненты Cr' используются для вывода значений дискретизированных с повышением компонент Cb' и Cr' для пикселя.
Предобработка пикселей согласно вариантам осуществления может использоваться в разных приложениях, в частности, разных видео-приложениях, в том числе, кодирования видеосигнала.
Таким образом, вариант осуществления относится к способу кодирования пикселя в изображении. Способ содержит предобработку пикселя согласно любому из раскрытых в настоящем документе вариантов осуществления для вывода значения нелинейной яркостной компоненты во втором цветовом пространстве для пикселя. Способ также содержит, на этапе S3, как показано на фиг. 28, кодирование значения нелинейной яркостной компоненты, значения дискретизированной с понижением первой нелинейной цветностной компоненты во втором цветовом пространстве и значения дискретизированной с понижением второй нелинейной цветностной компоненты во втором цветовом пространстве.
Таким образом, предобработка пикселей может использоваться в качестве дополнительной обработки в ходе кодирования пикселей изображений, например, совместно с кодированием изображений видеопоследовательности.
Затем выходной сигнал предобработки, т.е. Y'Cb'Cr', например, в формате 4:2:0 или 4:2:2, поступает на видеокодер, например, видеокодер H.264, высокопроизводительный видеокодер (HEVC) или видеокодер H.265, или другой видеокодер. Кодирование, осуществляемое видеокодером, может включать в себя традиционные этапы кодирования видеосигнала, например внешнее предсказание, внутреннее предсказание, определение режима, преобразование остатка, квантование и кодирование преобразованных и квантованных остатков, например, в энтропийном кодере, например, кодере контекстно-адаптивного двоичного арифметического кодирования (CABAC).
Преимущество предобработки вариантов осуществления состоит в том, что его можно применять к любому процессу кодирования видео или изображений без необходимости в осуществлении каких-либо регулировок в кодере видео или изображений или каких-либо регулировок в соответствующем декодере видео или изображений. В отчетливой контрастности, предобработку можно рассматривать в качестве дополнительной обработки, т.е. предобработки, которая применяется к входным изображениям вместо традиционного преобразования исходных цветов, например, цветов ROGOBO, пикселей в изображениях, подлежащих кодированию в цвета Y'Cb'Cr', которая предусматривает применение передаточной функции, применение цветового преобразования и понижающей дискретизации цветности.
Предобработка пикселей в изображениях, например, видеопоследовательности, также может использоваться в других приложениях помимо кодирования видеосигнала. Например, варианты осуществления могут использоваться как предобработка, которая применяется до переноса видео по интерфейсу, например мультимедийный интерфейс высокой четкости (HDMI), DisplayPort или Thunderbolt. Например, в HDMI 2.0a единственный способ переноса разрешения 4K на 50 или 60 кадры в секунду (кадр/с) состоит в использовании понижающей дискретизации YCbCr 4:2:0 или 4:2:2. Если видеоданные имеют полный формат дискретизации цветности (4:4:4) то этап предобработки понижающей дискретизации должен применяемый до отправки видеоданных по кабелю HDMI. Затем видеоданные 4:2:0 или 4:2:2 переносятся по интерфейсу без дополнительного сжатия. Благодаря применению предобработку вариантов осуществления, качество видео повышается по сравнению с традиционной понижающей дискретизацией 4:2:0 или 4:2:2 без какой-либо коррекции компоненты Y' или нахождения оптимальной компоненты Y'.
Типичная цепочка сжатия описана ниже. Входящий пиксель линейного светового сигнала (R, G, B) в пределах, например, from 0-10000 сначала подается на передаточную функцию, в результате чего, получается новый пиксель (R', G', B') от 0 до 1. После этого пиксель подвергается цветовому преобразованию, приводящему к (Y', Cb', Cr'). Затем компоненты Cb' и Cr' подвергаются понижающей дискретизации до 4:2:0.
После снятия сжатия, последовательности 4:2:0 снова подвергаются повышающей дискретизации до 4:4:4, обратное преобразование цветового пространства дает (R', G', B'), и, наконец, обратная передаточная функция возвращает пиксель линейного светового сигнала (R, G, B), который может выводиться на монитор.
Проблема состоит в том, что компоненты Cb' и Cr' интерполируются, тогда как компонента Y' - нет. Следовательно, может существовать резкий сдвиг компоненты Y' в пикселе, но компоненты Cb' и Cr' не могут следовать, поскольку они интерполируются. Для некоторых цветов, в особенности, насыщенных цветов, получается пиксель совершено неправильной интенсивности, и это отчетливо наблюдается.
В этих случаях предлагается изменять компоненту Y' таким образом, чтобы кортеж (Y', Cb', Cr'), генерируемый из интерполированных цветов, не сильно отличался от исходного. В идеале различие должно быть совсем незаметным.
В основном, исходя из того, что компоненты Cb' и Cr' ложны, компонента Y' также делается ложной, благодаря чему, (Y', Cb', Cr') приближаются к истинным цветам.. Другими словами, внесение ошибки в компоненту Y' позволяет компенсировать ошибки, уже существующие в компонентах Cb' и Cr', для приближения к реальному пикселю. Можно определить, что компоненты Cb' и Cr' являются ложными, можно путем сравнения (Cb' - Cb'444) и (Cr' - Cr'444) с порогом, например, сравнивая Cb', полученную первой понижающей дискретизацией цветности (4:2:0) с последующей повышающей дискретизацией (до 4:4:4) с исходными значениями Cb'444 и Cr'444 до понижающей дискретизации.
Скорректированную компоненту Y' можно выводить согласно различным вариантам осуществления, описанным ниже. Следовательно, скорректированная компонента Y' и компоненты Cb' и Cr' затем сжимаются, в результате чего, изображение или видео воспринимается с более высоким качеством.
Изменяя компоненту Y', т.е. выводя скорректированную компоненту Y', можно компенсировать результирующее значение яркости. Глаз гораздо более чувствителен к изменениям яркости, чем к изменениям цветности, поэтому, прежде всего, нужно удостовериться, что яркость не слишком отклоняется от исходного значения.
Как описано выше, нелинейная яркость Y' регулируется до сжатия таким образом, чтобы линейная яркость Y пикселя приближалась к своему правильному значению. Это дополнительно описано ниже.
Предположим, изображение, где левая часть экрана, например, пиксели с 0 по 96, имеет значение (2142, 0, 138), и правая часть, например, пиксели с 97 по 1920, имеет значение (2142, 4, 138). Традиционная цепочка обработки дает результаты, приведенные в таблице A1.
Таблица A1 - данные ʺнаихудшегоʺ цвета для понижающей дискретизации 4:2:0
Пиксель № 97 Значение RGB Значение Y Дифф. Y Относительная ошибка Шаги Бартена
Исходный 2142
4
138
573,5991 0 0 0
RGB 4:4:4 2142,6617
3,9750
138,2966
573,7735 0,1745 0,0304% 0,0691
RGB 4:2:0* 3993,733
2,4265
263,6030
1066,4311 492,8320 85,9192% 195,2710
* Указывает значения, полученные посредством повышающей дискретизации дискретизированного с понижением цвета в формате 4:2:0
В настоящем документе значение Y является линейной яркостью. Таким образом, значение Y источника является значением, которое получается преобразованием исходного линейного светового сигнала RGB (2142, 4, 138) в XYZ. Например, если RGB представлен в цветовом пространстве BT.2020, его можно преобразовать в XYZ с использованием
X=0,636958 × R+0,144617 × G+0,168881 × B
Y=0,262700 × R+0,677998 × G+0,059302 × B
Z=0,000000 × R+0,028073 × G+1,060985 × B
Эта компонента Y является яркостью, к которой чувствителен глаз. Ее не следует путать с вышеупомянутой компонентой Y', которая нелинейно зависит от R, G и B.
Как явствует из таблицы A1, значение Y является грубо ошибочным для пикселя 97 при использовании понижающей дискретизации 4:2:0 RGB и повышающей дискретизации. Заметим, что в этом примере не происходит никакого сжатия, только квантование до 10 битов, и, тем не менее, значение Y имеет относительную ошибку 85%. Используя модель Бартена, которая прогнозирует, насколько большие различия может видеть глаз, можно понять, что эта ошибка составляет 195 шагов Бартена, или в 195 раз больше едва заметной.
В таблице A2 показано, что происходит.
Таблица A2 - пиксель 97 очень отличается до и после понижающей дискретизации цвета
4:4:4 10 битов 94 95 96 97 98 99
Вход линейного RGB 2142
0
138
2142
0
138
2142
0
138
2142
4
138
2142
4
138
2142
4
138
Y'Cb'Cr' 4:2:0 10 битов 284
650
867
284 284
641
855
422 422
575
771
422
Y'Cb'Cr' после повышающей дискретизации 284
650
867
284
650
866
284
641
855
422
607
812
422
575
771
422
571
766
Выход линейного RGB 2151,71
0
138,2278
2119,42
0
138,2278
1794,94
0,0018
114,8210
3993,73
2,4265
263,6030
2142,66
3,9750
138,2966
1986,71
4,2102
127,3837
Если посмотреть на компоненту Cb', она имеет значение 607, находящееся примерно посередине между 650, до нарушения непрерывности, т.е. пикселя 94, и 575, после нарушения непрерывности, но правильное значение равно 575. Проблема состоит в том, что ошибка влияет не только на цветность, но и яркость пикселя, которая становится слишком большой. Наша идея состоит в том, чтобы компенсировать это путем изменения компоненты Y' пикселя. Согласно вариантам осуществления, мы не допускаем значение компоненты Y' 422 для пикселя, но вместо этого выбираем значение 363. В таблице A3 показан результат.
Таблица A3 - пиксель 97 значительно более аналогичен до и после понижающей дискретизации цвета
4:4:4 10 битов 94 95 96 97 98 99
Вход линейного RGB 2142
0
138
2142
0
138
2142
0
138
2142
4
138
2142
4
138
2142
4
138
Y'Cb'Cr' 4:2:0 10 битов 284
650
867
284 284
641
855
363 422
575
771
422
Y'Cb'Cr' после повышающей дискретизации 284
650
867
284
650
866
284
641
855
363
607
812
422
575
771
422
571
766
Выход линейного RGB 2151,71
0
138,2278
2119,42
0
138,2278
1794,94
0,0018
114,8210
2145,11
0,7008
138,0825
2142,66
3,9750
138,2966
1986,71
4,2102
127,3837
Теперь можно видеть, что новый цвет значительно более аналогичен его правильному значению. Зеленая компонента, ушла в неправильном направлении, но только на 1,72 кд/м2, но, в то же время, красная компонента почти в два раза меньше ее правильного значения, перемещение 1849 кд/м2, и синяя компонента изменилась аналогичным образом. В таблице A4 показано, что происходит с яркостью.
Таблица A4 - данные ʺнаихудшегоʺ цвета для понижающей дискретизации 4:2:0 после коррекции
Пиксель № 97 Значение RGB Значение Y Дифф. Y Относительная ошибка Шаги Бартена
Исходный 212
4
138
573,5991 0 0 0
RGB 4:4:4 2142,6617
3,9750
138,2966
573,7735 0,1745 0,0304% 0,0691
RGB 4:2:0* 2145,11
0,7008
138,0825
572,1852 1,4139 0,2465% 0,5602
* Указывает значения, полученные посредством повышающей дискретизации дискретизированного с понижением цвета в формате 4:2:0
Как показано в таблице A4, получается гораздо меньшая ошибка яркости Y. Относительная ошибка равна 0,2465%, что эквивалентно 0,5602 шагам Бартена, т.е. невидима.
Теперь ошибка касается цветности, но с учетом того, что зрительная система человека менее чувствительна к ошибкам цветности, чем яркости, это не составляет проблемы. Кроме того, так или иначе, возникает ошибка цветности после понижающей дискретизации. Также, можно изменять компоненту Y' для получения хорошего компромисса между ошибкой яркости и ошибкой цветности.
Кроме того, изменение цветности может не быть сколько-нибудь заметным - единственное различие состоит в том, что зеленая компонента равна 0,7008 кд/м2 вместо 3,9750 кд/м2, но, наиболее вероятно, уменьшается за счет красной компоненты, так или иначе, поскольку она равна 2145, почти в тысячу раз больше. Другой способ увидеть это состоит в том, что отношение между зеленой и красной компонентами становится 0,7008/2145,11=0,000327 вместо правильного 3,9750/2142,6617=0,001855. Не очевидно, что человеческий глаз может увидеть этот незначительный сдвиг тона. Следовательно, мы согласовали ошибку яркости, которая в 200 раз больше едва заметной, с ошибкой цветности, которая настолько мала, что ее невозможно увидеть.
Хорошо, что измененное значение Y' влияет только на отдельный пиксель. Следовательно, никакой пиксель не жертвуется за счет изменения компоненты Y'.
Согласно варианту осуществления, значение Y' не оптимизируется в отношении конкретного значения Cb' и Cr'. Вместо этого, значение Y' выбирается таким образом, чтобы оно минимизировало ошибку яркости для нескольких разных значений Cb' и Cr' или для диапазона значений Cb' и Cr'. Это может осуществляться в сценариях, где способ повышающей дискретизации цветности неизвестен.
Один вариант состоит в осуществлении конкретного количества способов повышающей дискретизации цветности с последующим выбором значения Y', которое минимизирует среднеквадратическую ошибку для разных способов повышающей дискретизации. В другой версии, значение Y' выбирается таким образом, что наихудший случай, т.е. наибольшая ошибка, минимизируется.
Другой вариант состоит в использовании двух или более соседних значений Cb' и Cr' и использовании их непосредственно для вычисления диапазона возможных значений Cb' и Cr'.
Существует несколько способов отыскания наилучшего значения Y', и мы рассмотрим некоторые из них. Один способ показан на фиг. 29.
Сначала нужно найти значение YO для оптимизации. Исходный пиксель RO, GO, BO преобразуется из RGB в XYZ, как упомянуто выше. Это дает XO, YO, ZO, из которых нам нужно только YO. Фактически, не требуется вычислять XO и ZO. Эта YO является исходной яркостью в линейном световом сигнале, и является тем, к чему чувствителен глаз. В нашем иллюстративном случае YO равна 573,5991, см. таблицу A1.
Затем используется существующее значение Y', совместно со значениями Cb' и Cr'. В вышеописанном случае, подается (422, 607, 812), см. таблицу A2. Затем осуществляется цветовое преобразование из Y'Cb'Cr' в R'G'B'. Это делается с использованием
R=Y'+1,47460 × Cr'
G=Y' - 0,16455 × Cb' - 0,57135 × Cr'
B=Y'+1,88140 × Cb'.
Затем вызывается передаточная функция. В этом случае используется PQ-EOTF, которую можно реализовать с использованием следующим кодом Matlab, например:
функция L=pq_eotf(c)
%%%
%%% c g принимает значение от 0,0 до 1,0
%%% L - выходная яркость в нитах
%%%
c1=0,8359375;
c2=18,8515625;
c3=18,6875;
n=0,1593017578125;
m=78,84375;
c=max(c,0);
c=min(c,1);
L=10000*((max(c.^(1/m)-c1, 0)./(c2 - c3*c.^(1/m))).^ (1/n));
Результатом является цвет (R, G, B) в линейном световом сигнале. Теперь это преобразуется в XYZ, как упомянуто выше, или, в действительности, нужно вычислять только Y. Это Y является линейной яркостью пикселя, и эту яркость нужно максимально приблизить к YO. В нашем иллюстративном случае, Y начинается со значения 1066,4311, см. таблицу A1.
Теперь сравним Y и YO. Если Y больше YO, мы уменьшаем значение Y' от 422 до несколько меньшего. Например, можно сделать один шаг и проверить 421. Затем повторно осуществляется все вычисление, с генерацией нового значения Y. Оно снова сравнивается с YO, и если оно все еще слишком велико, Y' дополнительно уменьшается. Наконец, достигается 363, и теперь результирующее значение Y, т.е. 572,1852 меньше, чем YO, т.е. 573,5991. На этом процесс останавливается.
Согласно вышеприведенному варианту осуществления для достижения наилучшего значения требуется 422-363=59 итераций. Это может приводить к большим затратам.
Поэтому вариант осуществления предусматривает двоичный поиск для отыскания наилучшего значения Y'. В опциональном порядке, сначала проверяется максимальное значение Y', например 1023. Затем, в опциональном порядке, проверяется минимальное значение Y', например 0. Затем проверяется значение в середине, например 512. Если значение Y, полученное при Y'=512, больше, чем YO, поиск производится в интервале [0, 512]. Если значение Y меньше, чем YO, поиск производится в интервале [512, 1023]. После этого осуществляется вычисление нового значения в середине выбранного интервала, и процесс продолжается, пока интервал не будет содержать единственную величину, например, [363, 363] или [363, 364]. Для этого гарантированно требуется только log2(N) шагов, где N - количество возможных значений, которое в этом случае равно 1024. Следовательно, достаточно только log2(1024)=10 шагов.
Еще один путь вычисления наилучшего значения, показанный на фиг. 29 состоит в оптимизации и минимизации ошибки E=(Y-YO)2 относительно Y'. Это может осуществляться посредством градиентного спуска, посредством вычисления градиента E относительно Y', т.е. dE/dY', и обновления Y' на малую величину в направлении, противоположном градиенту: Y'n+1=Y'n - α × dE/dY', где α - малая постоянная.
Градиентный спуск может быть медленным, поэтому более быстрый путь может представлять собой алгоритм оптимизации второго порядка, который вычисляет или аппроксимирует производные второго порядка d2E/dY'2. Примером такого алгоритма является метод Гаусса-Ньютона.
В другом варианте осуществления для вычисления Y' применяется нижеследующий процесс:
- X, YO и Z преобразуются посредством преобразования XYZ в RGB для генерации новых значений R1, G1 и B1
- R1, G1 и B1 преобразуются посредством обратной передаточной функции для генерации R1', G1' и B1'.
- R1', G1' и B1' преобразуются посредством обратного цветового преобразования для генерации Y'
Согласно варианту осуществления, корректируются значения Y' всех пикселей в изображении. В альтернативном варианте осуществления, корректируются только пиксели, которые могут иметь наблюдаемые ошибки яркости. Это могут быть пиксели, находящиеся вблизи границы цветовой гаммы, но не пиксели, расположенные ближе к середине треугольника цветовой гаммы.
Согласно нижней строке на фиг. 29, первый этап обработки выражается в виде
R'=Y'+1,47460 × Cr'
G'=Y' - 0,16455 × Cb' - 0,57135 × Cr'
B'=Y'+1,88140 × Cb'.
Но поскольку Cr' и Cb' являются фиксированными, они интерполируются, а не отправляются, все справа от Y' можно заменить постоянной
R'=Y'+c1
G'=Y'+c2
B'=Y'+c3
На следующем этапе используется передаточная функция цветовых компонентов:
R=TF(R')
G=TF(G')
B=TF(B')
которая приобретает вид
R=TF(Y'+c1)
G=TF(Y'+c2)
B=TF(Y'+c3)
На последнем этапе обработки осуществляется из RGB в XYZ. Это делается с использованием
X=0,636958 × R+0,144617 × G+0,168881 × B
Y=0,262700 × R+0,677998 × G+0,059302 × B
Z=0,000000 × R+0,028073 × G+1,060985 × B
из которых представляет интерес только компонента Y, поэтому используется
Y=0,262700 × R+0,677998 × G+0,059302 × B.
Подставляя предыдущие уравнения, получаем
Y=0,262700 × TF(Y'+c1)+0,677998 × TF(Y'+c2)+0,059302 × TF(Y'+c3),
или, сокращенно
Y=f(Y')
Нужно, чтобы выходное значение Y этого уравнения совпадало с исходным YO. Поскольку Y зависит от Y' в трех разных местах по нелинейному закону, инверсия функции для получения Y'=f-1(Y) выглядит сложной задачей Y'=f-1(Y).
Однако можно линеаризовать нелинейную TF(x)~kx+m. Делая это в трех разных местах, получаем
Y ~ k1 × Y'+m1+k2 × Y'+m2+k3 × Y'+m3
что эквивалентно
Y ~ (k1+k2+k3) × Y'+(m1+m2+m3).
Это можно инвертировать в
Y' ~ Y'k=(YO - (m1+m2+m3))/(k1+k2+k3).
Таким образом, возможно, что Y'k даст значение Yk, более близкое к YO, чем прежде. Функцию можно снова линеаризовать в этой новой точке Y'k с получением нового значения Y'(k+1) и т.д.
Следует отметить, что для всех этих итерационных методов не требуется находить абсолютно наилучшее 10-битовое значение, порождающее значение Y, ближайшее к значению YO. Может быть достаточно использовать лишь несколько итераций или даже одну итерацию. Наиболее вероятно, что скорректированное значение Y, полученное в результате единственной итерации будет гораздо лучше, чем вовсе не скорректированное.
Некоторые линеаризации также можно осуществлять заранее. Как упомянуто выше, самые серьезные проблемы возникают на границе гаммы. Следовательно, можно иметь одну линеаризацию для линии, соединяющей красный основной цвет с зеленым основным цветом, одну линеаризацию для линии, соединяющей красный основной цвет с синим основным цветом, и одну линеаризацию для линии, соединяющей зеленый основной цвет с синим основным цветом. Альтернативно, можно иметь линеаризации, одна из которых будет использоваться вблизи красного основного цвета, другая - вблизи зеленого основного цвета, и третья - вблизи синего основного цвета. Кроме того, можно иметь несколько линеаризаций по линии гаммы, как показано на фиг. 30.
Таким образом, в разных областях могут существовать разные линеаризации. Если цвет находится внутри окружности, выполненной сплошной линией, он близок к зеленому основному цвету, и можно использовать одну линеаризацию. При перемещении в сторону красного основного цвета, т.е. внутрь штрихового прямоугольника, можно использовать вторую линеаризацию. При нахождении вблизи граница гаммы и примерно посередине между красным и зеленым основными цветами, т.е. внутри пунктирного прямоугольника, можно использовать третью линеаризацию. При нахождении еще ближе к красному основному цвету, т.е. внутри прямоугольника, выполненного сплошной линией, можно использовать четвертую линеаризацию. При нахождении внутри пунктирной окружности, т.е. вблизи красного основного цвета, можно использовать пятую линеаризацию. Также можно использовать такое же разбиение двух других линий в треугольнике. Наконец, область внутри треугольника, но не прямоугольника и не окружности, можно разбить на одну или более областей, каждая из которых будет иметь отдельную линеаризацию.
Другой способ состоит в создании поисковой таблицы (LUT). Как явствует из вышеизложенного, имея Cb', Cr' и искомое значение Y, можно найти наилучшее Y' с использованием любого из вышеупомянутых итерационных методов. Следовательно, можно создавать поисковую таблицу для каждой возможной комбинации Cb', Cr' и Y. Предположим, например, что Cb' и Cr' квантуются до 10 битов. Предположим, дополнительно, что Y также квантуется до 10 битов. В таком случае, в поисковой таблице должно быть 210 × 210 × 210 разных значений. Это эквивалентно 230 значений. Если каждое значение составляет два байта, это означает 231 байтов или 2 ГБ. Это много, но не невыполнимо, в особенности в будущем.
Особое внимание следует уделять квантованию Y. Поскольку Y полностью линейна, может быть неэффективно просто квантовать ее. Вместо этого, может быть лучше создавать Ynonlinear=TF(Y) и создавать LUT для Y с использованием Cb', Cr' и Ynonlinear в качестве входных переменных. На основании Cb', Cr' и Y, сначала вычисляется Ynonlinear=TF(Y) и затем отыскивается Y'=LUT(Cb',Cr',Ynonlinear).
Также можно использовать LUT меньшего размера. Например, можно квантовать Y (или Ynonlinear), Cb' и Cr', например, до 6 битов. Тогда таблица будет иметь размер 2(6+6+6)=218 значений или 219 байтов, т.е. 512 кБ. Это приемлемый размер даже с точки зрения возможностей современного оборудования.
Можно также брать квантованные значения Cb', Cr' и Y, ближайшие к истинным значениям, и интерполировать их. В порядке примера, если реальное значение Cb' больше Cb', квантованной до 6 битов, но меньше Cb', квантованной до 6 битов,+1, нижеследующее может быть хорошим приближением:
Y'=(LUT(Cb'6bit, Cr'6bit, Y6bit)+ (LUT(Cb'6bit+1, Cr'6bit, Y6bit))/2
Возможна также интерполяция между более чем двумя значениями.
Согласно варианту осуществления, для вывода значения Y' используется поисковая таблица. В одной версии поисковая таблица содержит все возможные значения Yo, Cb' и Cr'. Для 10-битового видео, которое даст 1024×1024×1024 элементов и в некоторых вариантах применения этот размер является приемлемым. В другой версии поисковая таблица (LUT) сокращается, например, путем округления одного или более из YO, Cb' и Cr', например, до 8 битов. Если используется сокращенная поисковая таблица, алгоритм может расширяться на этапе уточнения, который находит наилучшую Y', начиная с Y', извлеченной из LUT. Согласно версии, LUT используется только, когда значение Cb' и/или значение Cr' таково, что Y' может сильно отдаляться от YO, т.е. когда первоначально вычисленная Y' дает значение линейной Y, которые слишком отличается от YO, и, таким образом, размер LUT может существенно сокращаться, поскольку многие значения Cb' и Cr' не будут создавать никаких проблем.
Согласно варианту осуществления, для вывода Y' используется функция YO, Cb' и Cr', например, линейная комбинация, полиномиальная функция, экспоненциальная функция, логарифмическая функция, тригонометрическая функция и т.д. Функция может задаваться таким образом, что для любого значения YO, Cb' и Cr' разность между Y и YO ниже некоторого порога или разность между выведенной Y' и оптимальной Y' ниже некоторого порога.
Согласно варианту осуществления для вывода Y' задается несколько разных функций Yo, Cb' и Cr'. Выбор используемой функции опирается на значения YO, Cb' и Cr'.
Для каждого описанного в настоящем документе варианта осуществления возможен случай, когда способ вывода Y' применяется только, если сначала разность между Y' и TF(YO) превышает некоторый порог.
Согласно аспекту, способ предусмотрен согласно фиг. 31. Способ может осуществляться на кодере или при подготовке к обработке на кодере. Согласно способу, когда определено, что компоненты Cb' и/или Cr' включают в себя ошибки, скорректированная компонента Y' выводится для компенсации ошибок в компонентах Cb' и/или Cr'. Способ в опциональном порядке также содержат кодирование видео со скорректированной компонентной Y'.
Другой аспект вариантов осуществления относится к устройству для предобработки пикселя в изображении. Устройство выполнено с возможностью получения значения исходной линейной яркостной компоненты пикселя в третьем цветовом пространстве, определенного на основании линейного цвета пикселя в первом цветовом пространстве. Устройство также выполнено с возможностью вывода значения нелинейной яркостной компоненты во втором цветовом пространстве для пикселя на основании значения первой нелинейной цветностной компоненты во втором цветовом пространстве, значения второй нелинейной цветностной компоненты во втором цветовом пространстве и значения исходной линейной яркостной компоненты в третьем цветовом пространстве.
Согласно варианту осуществления, устройство выполнено с возможностью определения значения исходной линейной яркостной компоненты в третьем цветовом пространстве на основании линейного цвета в первом цветовом пространстве.
Согласно варианту осуществления, устройство выполнено с возможностью вывода значения нелинейной яркостной компоненты во втором цветовом пространстве, которое минимизирует разность между значением исходной линейной яркостной компоненты в третьем цветовом пространстве и значением линейной яркостной компоненты в третьем цветовом пространстве определенный на основании значения нелинейной яркостной компоненты во втором цветовом пространстве, значения первой нелинейной цветностной компоненты во втором цветовом пространстве и значения второй нелинейной цветностной компоненты во втором цветовом пространстве.
Согласно варианту осуществления, устройство выполнено с возможностью вывода значения нелинейной яркостной компоненты во втором цветовом пространстве на основании значения дискретизированной с понижением первой нелинейной цветностной компоненты во втором цветовом пространстве, значения дискретизированной с понижением второй нелинейной цветностной компоненты во втором цветовом пространстве и значения исходной линейной яркостной компоненты в третьем цветовом пространстве.
Согласно варианту осуществления, устройство выполнено с возможностью применения первой передаточной функции к исходному линейному цвету в первом цветовом пространстве для получения нелинейного цвета в первом цветовом пространстве. Устройство также выполнено с возможностью применения первого цветового преобразования к нелинейному цвету в первом цветовом пространстве для получения нелинейного цвета во втором цветовом пространстве. Нелинейный цвет во втором цветовом пространстве содержит начальное значение первой нелинейной цветностной компоненты и начальное значение второй нелинейной цветностной компоненты. Устройство дополнительно выполнено с возможностью понижающей дискретизации начального значения первой нелинейной цветностной компоненты во втором цветовом пространстве и начального значения второй нелинейной цветностной компоненты во втором цветовом пространстве для получения значения дискретизированной с понижением первой нелинейной цветностной компоненты во втором цветовом пространстве и значения дискретизированной с понижением второй нелинейной цветностной компоненты во втором цветовом пространстве.
Согласно варианту осуществления, устройство выполнено с возможностью осуществления повышающей дискретизации значения дискретизированной с понижением первой нелинейной цветностной компоненты во втором цветовом пространстве и значения дискретизированной с понижением второй нелинейной цветностной компоненты во втором цветовом пространстве для получения значения дискретизированной с повышением первой нелинейной цветностной компоненты во втором цветовом пространстве и значения дискретизированной с повышением второй нелинейной цветностной компоненты во втором цветовом пространстве. Устройство также выполнено с возможностью применения второго цветового преобразования к предполагаемому значению нелинейной яркостной компоненты во втором цветовом пространстве, значению дискретизированной с повышением первой нелинейной цветностной компоненты во втором цветовом пространстве и значению дискретизированной с повышением второй нелинейной цветностной компоненты во втором цветовом пространстве для получения нелинейного цвета в первом цветовом пространстве. Устройство дополнительно выполнено с возможностью применения второй передаточной функции к нелинейному цвету в первом цветовом пространстве для получения линейного цвета в первом цветовом пространстве. Устройство дополнительно выполнено с возможностью применения третьего цветового преобразования к линейному цвету в первом цветовом пространстве для получения значения линейной яркостной компоненты в третьем цветовом пространстве. Устройство также выполнено с возможностью вывода значения нелинейной яркостной компоненты на основании сравнения значения исходной линейной яркостной компоненты в третьем цветовом пространстве и значения линейной яркостной компоненты в третьем цветовом пространстве.
Согласно варианту осуществления, устройство выполнено с возможностью выбора предполагаемого значения нелинейной яркостной компоненты во втором цветовом пространстве, которое уменьшает, например минимизирует, разность между исходной линейной яркостной компоненты в третьем цветовом пространстве и линейной яркостной компонентой в третьем цветовом пространстве.
Согласно варианту осуществления, устройство выполнено с возможностью осуществления применения второго цветового преобразования к предполагаемому значению нелинейной яркостной компоненты во втором цветовом пространстве, значению дискретизированной с повышением первой нелинейной цветностной компоненты во втором цветовом пространстве и значению дискретизированной с повышением второй нелинейной цветностной компоненты во втором цветовом пространстве, применения второй передаточной функции к нелинейному цвету в первом цветовом пространстве и применения третьего цветового преобразования к линейному цвету в первом цветовом пространстве для разных предполагаемых значений нелинейной яркостной компоненты во втором цветовом пространстве. Устройство также выполнено с возможностью выбора предполагаемого значения нелинейной яркостной компоненты из разных предполагаемых значений нелинейной яркостной компоненты во втором цветовом пространстве, которое дает наименьшую разность между значением исходной линейной яркостной компоненты в третьем цветовом пространстве и значением линейной яркостной компоненты в третьем цветовом пространстве.
Согласно варианту осуществления, устройство выполнено с возможностью осуществления двоичного поиска для выбора предполагаемого значения нелинейной яркостной компоненты во втором цветовом пространстве, которое минимизирует разность между значением исходной линейной яркостной компоненты в третьем цветовом пространстве и значением линейной яркостной компоненты в третьем цветовом пространстве.
Согласно варианту осуществления, устройство выполнено с возможностью осуществления применения второго цветового преобразования к предполагаемому значению нелинейной яркостной компоненты во втором цветовом пространстве, значению дискретизированной с повышением первой нелинейной цветностной компоненты во втором цветовом пространстве и значению дискретизированной с повышением второй нелинейной цветностной компоненты во втором цветовом пространстве, применения второй передаточной функции к нелинейному цвету в первом цветовом пространстве и применения третьего цветового преобразования к линейному цвету в первом цветовом пространстве для предполагаемого значения нелинейной яркостной компоненты во втором цветовом пространстве в середине интервала поиска. Устройство также выполнено с возможностью выбора предполагаемого значения нелинейной яркостной компоненты в середине интервала поиска, если разность между значением исходной линейной яркостной компоненты в третьем цветовом пространстве и значением линейной яркостной компоненты в третьем цветовом пространстве равна нулю. Устройство также выполнено с возможностью в противном случае выбирать интервал поиска, имеющий вдвое меньший размер по сравнению с интервалом поиска, используемом устройством при осуществлении приложений и заканчивающегося на предполагаемом значении нелинейной яркостной компоненты, используемой устройством при осуществлении приложений, если значение линейной яркостной компоненты в третьем цветовом пространстве больше значения исходной линейной яркостной компоненты в третьем цветовом пространстве или выбирать интервал поиска, имеющий вдвое меньший размер по сравнению с интервалом поиска, используемом устройством при осуществлении приложений и начинающегося на предполагаемом значении нелинейной яркостной компоненты используемый устройством при осуществлении приложений, если значение линейной яркостной компоненты в третьем цветовом пространстве меньше значения исходной линейной яркостной компоненты в третьем цветовом пространстве. Устройство дополнительно выполнено с возможностью повторения осуществления приложений и выбора интервала поиска, пока разность между значением исходной линейной яркостной компоненты в третьем цветовом пространстве и значением линейной яркостной компоненты в третьем цветовом пространстве не достигнет нуля, или интервал поиска содержит единственное предполагаемое значение нелинейной яркостной компоненты во втором цветовом пространстве.
Согласно варианту осуществления, устройство выполнено с возможностью осуществления повышающей дискретизации значения дискретизированной с понижением первой нелинейной цветностной компоненты во втором цветовом пространстве и значения дискретизированной с понижением второй нелинейной цветностной компоненты во втором цветовом пространстве для получения значения дискретизированной с повышением первой нелинейной цветностной компоненты во втором цветовом пространстве и значения дискретизированной с повышением второй нелинейной цветностной компоненты во втором цветовом пространстве. Устройство также выполнено с возможностью извлечения значения нелинейной яркостной компоненты во втором цветовом пространстве из поисковой таблицы с использованием значения исходной линейной яркостной компоненты в третьем цветовом пространстве, или ее нелинейной версии, значения дискретизированной с повышением первой нелинейной цветностной компоненты во втором цветовом пространстве и значения дискретизированной с повышением второй нелинейной цветностной компоненты во втором цветовом пространстве, или их квантованных версий, в качестве входа в поисковую таблицу.
Согласно варианту осуществления, устройство выполнено с возможностью применения первой передаточной функции к значению исходной линейной яркостной компоненты в третьем цветовом пространстве для получения значения исходной нелинейной яркостной компоненты в третьем цветовом пространстве. Устройство выполнено с возможностью извлечения значения нелинейной яркостной компоненты во втором цветовом пространстве из поисковой таблицы с использованием значения исходной нелинейной яркостной компоненты в третьем цветовом пространстве, значения дискретизированной с повышением первой нелинейной цветностной компоненты во втором цветовом пространстве и значения дискретизированной с повышением второй нелинейной цветностной компоненты во втором цветовом пространстве, или их квантованных версий, в качестве входа в поисковую таблицу.
Фиг. 32 демонстрирует конкретную аппаратную реализацию устройства 100 для предобработки изображения согласно варианту осуществления. Согласно варианту осуществления, устройство 100 содержит блок 101 определения, выполненный с возможностью получения значения исходной линейной яркостной компоненты пикселя в третьем цветовом пространстве. Устройство 100 также содержит выводитель 102, выполненный с возможностью вывода значения нелинейной яркостной компоненты во втором цветовом пространстве для пикселя.
В другом варианте осуществления, устройство 100 содержит блок 101 определения, выполненный с возможностью определения, что Cb' и/или Cr' включают в себя ошибки. Устройство 100 также содержит выводитель 102, выполненный с возможностью вывода скорректированного Y'. Устройство 100 дополнительно содержит видеокодер 103, выполненный с возможностью кодирования изображения со скорректированным Y'.
Согласно варианту осуществления, устройство 100 также содержит блок 104 ввода, выполненный с возможностью приема видео, подлежащего кодированию, и блок 105 вывода, выполненный с возможностью вывода кодированного битового потока.
Блок 104 ввода может быть выполнен в виде общего блока ввода, в частности, в случае проводного соединения с внешними устройствами. Альтернативно, блок 104 ввода может быть выполнен в виде приемника или приемопередатчика, в частности, в случае беспроводного соединения с внешними устройствами. Соответственно, блок 105 вывода может быть выполнен в виде общего блока вывода, в частности, в случае проводного соединения с внешними устройствами. Альтернативно, блок 105 вывода может быть выполнен в виде передатчика или приемопередатчика, в частности, в случае беспроводного соединения с внешними устройствами
Блок 104 ввода, предпочтительно, подключен к блоку 101 определения, выводителю 102 и видеокодеру 103 для пересылки видео, подлежащего кодированию, на него. Блок 101 определения предпочтительно, подключен к выводителю 102 и видеокодеру 103. Видеокодер 103 предпочтительно, подключен к блоку 105 вывода для пересылки кодированного битового потока, например, на декодер.
Конкретные примеры подходящей аппаратной схемы включают в себя одну или более надлежащим образом сконфигурированную или, возможно, переконфигурируемую электронную схему, например, специализированные интегральные схемы (ASIC), вентильные матрицы, программируемые пользователем (FPGA) или любую другую аппаратную логику, например, схемы на основе дискретных логических вентилей и/или триггеров, соединенных между собой для осуществления специализированных функций совместно с подходящими регистрами (REG) и/или блоками памяти (MEM).
Альтернативно, по меньшей мере, некоторые из описанных в настоящем документе этапов, функций, процедур модулей и/или блоков можно реализовать программными средствами, например, компьютерной программы для выполнения пригодной схемой обработки, например, одним или более процессорами или блоками обработки.
Примеры схемы обработки включает в себя, но без ограничения, один или более микропроцессоров, один или более цифровых сигнальных процессоров (DSP), один или более центральных процессоров (CPU), оборудование ускорения видеообработки, и/или любую пригодную программируемую логическую схему, например, одну или более FPGA, или один или более программируемых логических контроллеров (PLCs).
Следует также понимать, что существует возможность повторного использования общих возможностей обработки любого традиционного устройства или блока, в котором реализована предложенная технология. Можно также повторно использовать существующее программное обеспечение, например, путем перепрограммирования существующего программного обеспечения или путем добавления новых программных компонентов.
В конкретном примере, устройство 110, см. фиг. 33, содержит процессор 111 и память 112, содержащую инструкции, которые может выполнять процессор 111. Согласно варианту осуществления, процессор 111 выполнен с возможностью получения значения исходной линейной яркостной компоненты пикселя в третьем цветовом пространстве. Процессор 111 также выполнен с возможностью вывода значения нелинейной яркостной компоненты во втором цветовом пространстве для пикселя.
В другом варианте осуществления, процессор 111 выполнен с возможностью определения, что компоненты Cb' и/или Cr' включают в себя ошибки и когда определено, что компоненты Cb' и/или Cr' включают в себя ошибки. Процессор 111 также выполнен с возможностью вывода скорректированной компоненты Y' для компенсации ошибок в компонентах Cb' и/или Cr'.
Согласно варианту осуществления, устройство 110 также содержит блок 113 ввода, выполненный с возможностью приема видео, подлежащего кодированию. В таком случае, процессор 111 выполнен с возможностью принимать видео, подлежащее кодированию от блока 113 ввода.
Согласно варианту осуществления, устройство 110 также содержит блок 114 вывода, выполненный с возможностью вывода кодированного битового потока, принимаемого от процессора 111.
В конкретном варианте осуществления, процессор 111 выполнен с возможностью, при выполнении инструкций, хранящихся в памяти 112 для осуществления вышеописанных операций. Процессор 111, таким образом, соединен с памятью 112 для обеспечения нормального выполнения программного обеспечения.
Фиг. 34 показана упрощенная блок-схема, иллюстрирующая пример пользовательского оборудования (UE) 200, содержащего процессор 210, связанную память 220 и схему 230 связи.
В этом конкретном примере, по меньшей мере, некоторые из описанных в настоящем документе этапов, функций, процедур модулей и/или блоков реализованы в компьютерной программе 240, которая загружается в память 220 для выполнения схемой обработки, включающей в себя один или более процессоров 210. Процессор 210 и память 220 соединены друг с другом для обеспечения нормального выполнения программного обеспечения. Схема 230 связи также подключена к процессору 210 и/или памяти 220 для обеспечения ввода и/или вывода видеоданных.
Пользовательское оборудование 200 может представлять собой любое устройство или приспособление, которое может принимать и обрабатывать видеоданные. Например, пользовательское оборудование 200 может представлять собой компьютер, стационарный или портативный, например, портативный компьютер, смартфон, планшет, телевизионную приставку, видеокамеру и т.д.
Термин 'процессор' следует понимать в общем смысле как любую систему или устройство, способное выполнять программный код или инструкции компьютерной программы для осуществления конкретной задачи обработки, определения или вычисления.
Таким образом, схема обработки, включающая в себя один или более процессоров выполнена с возможностью осуществления, при выполнении компьютерной программы, строго определенных задач обработки, например, описанных в настоящем документе.
Схема обработки предназначен не только для выполнения вышеописанных этапов, функций, процедур и/или блоков, но может также выполнять другие задачи.
Согласно варианту осуществления, компьютерная программа 240 содержит инструкции, которые, при выполнении процессором 210, предписывают процессору 210 получать значение исходной линейной яркостной компоненты пикселя в изображении в третьем цветовом пространстве, определенное на основании линейного цвета пикселя в первом цветовом пространстве. Процессору 210 также предписывается выводить значение нелинейной яркостной компоненты во втором цветовом пространстве для пикселя на основании значения первой нелинейной цветностной компоненты во втором цветовом пространстве, значения второй нелинейной цветностной компоненты во втором цветовом пространстве и значения исходной линейной яркостной компоненты в третьем цветовом пространстве.
Согласно варианту осуществления, компьютерная программа 240 дополнительно содержит инструкции, которые, при выполнении процессором 210, предписывают процессору 210 кодировать значение нелинейной яркостной компоненты, значение первой нелинейной цветностной компоненты и значение второй нелинейной цветностной компоненты.
В другом варианте осуществления, компьютерная программа 240 содержит инструкции, которые, при выполнении процессором 210, предписывают процессору 210 определять, что компоненты Cb' и/или Cr' включают в себя ошибки, и когда определено, что компоненты Cb' и/или Cr' включают в себя ошибки, они предписывают процессору 210 выводить скорректированную компоненту Y' для компенсации ошибок в компонентах Cb' и Cr'.
Предложенная технология также обеспечивает носитель 250, содержащий компьютерную программу 240. Носитель 250 представляет собой один из электронного сигнала, оптического сигнала, электромагнитного сигнала, магнитного сигнала, электрического сигнала, радиосигнала, микроволнового сигнала или машиночитаемого носителя данных 250.
В порядке примера, программное обеспечение или компьютерную программу 240 можно реализовать как компьютерный программный продукт, который нормально переносится или хранится на компьютерно-считываемом носителе 240, предпочтительно, энергонезависимом компьютерно-считываемом носителе 250 данных. Компьютерно-считываемый носитель 250 может включать в себя один или более сменных или стационарных запоминающих устройств, включающих в себя, но без ограничения, постоянную память (ROM), оперативную память (RAM), компакт-диск (CD), цифровой универсальный диск (DVD), диск Blue-ray, память с интерфейсом универсальной последовательной шины (USB), запоминающее устройство типа жесткого диска (HDD), флеш-память, магнитную ленту или любое другое традиционное запоминающее устройство. Таким образом, компьютерная программа 240 может загружаться в рабочую память компьютера или эквивалентного устройства обработки, представленного пользовательским оборудованием 200 на фиг. 34, для выполнения его процессором 210.
Дополнительный аспект вариантов осуществления также относится к сигналу, представляющему кодированную версию пикселя в изображении. Кодированная версия содержит кодированную версию значения дискретизированной с понижением первой нелинейной цветностной компоненты во втором цветовом формате, кодированную версию значения дискретизированной с понижением второй нелинейной цветностной компоненты во втором цветовом формате и кодированную версию значения нелинейной яркостной компоненты во втором цветовом формате, выведенного согласно любому из вариантов осуществления.
Согласно варианту осуществления, сигнал представляет собой один из электронного сигнала, оптического сигнала, электромагнитного сигнала, магнитного сигнала, электрического сигнала, радиосигнала и микроволнового сигнала.
Таким образом, представленную(ые) в настоящем документе блок-схему или блок-схемы операций можно рассматривать как блок-схему или блок-схемы компьютера, при осуществлении одним или более процессорами. Соответствующее устройство можно определить как группу функциональных модулей, где каждый этап, осуществляемый процессором, соответствует функциональному модулю. В этом случае, функциональные модули реализованы в виде компьютерной программы, выполняющейся на процессоре. Следовательно, устройство можно альтернативно определить как группу функциональных модулей, где функциональные модули реализованы в виде компьютерной программы, выполняющейся на, по меньшей мере, одном процессоре.
Таким образом, компьютерная программа, присутствующая в памяти, может быть организована как соответствующие функциональные модули, выполненные с возможностью осуществления, при выполнении процессором, по меньшей мере, часть описанных в настоящем документе этапов и/или задач. Пример таких функциональных модулей проиллюстрирован на фиг. 35.
На фиг. 35 показана блок-схема устройства 120 для предобработки пикселя в изображении с функциональными модулями. Согласно варианту осуществления, устройство 120 содержит блок 121 определения для получения значения исходной линейной яркостной компоненты пикселя в третьем цветовом пространстве, определенного на основании линейного цвета пикселя в первом цветовом пространстве. Устройство 120 также содержит выводитель 122 для вывода значения нелинейной яркостной компоненты во втором цветовом пространстве для пикселя на основании значения первой нелинейной цветностной компоненты во втором цветовом пространстве, значения второй нелинейной цветностной компоненты во втором цветовом пространстве и значения исходной линейной яркостной компоненты в третьем цветовом пространстве.
В другом варианте осуществления, устройство 120 содержит блок 121 определения для определения, что Cb' и/или Cr' включают в себя ошибки. Устройство 120 также содержит выводитель 102 для вывода скорректированного Y'. Устройство 120 дополнительно, в опциональном порядке, содержит видеокодер 123 для кодирования битового потока с использованием скорректированного Y'.
Дополнительный аспект вариантов осуществления, см. фиг. 33, относится к устройству 110 для кодирования пикселя в изображении. Устройство 110 содержит процессор 111 и память 112, содержащую инструкции, которые может выполнять процессор 111. Процессор 111 выполнен с возможностью получения значения исходной линейной яркостной компоненты пикселя в третьем цветовом пространстве, определенного на основании линейного цвета пикселя в первом цветовом пространстве. Процессор 111 также выполнен с возможностью вывода значения нелинейной яркостной компоненты во втором цветовом пространстве для пикселя на основании значения первой нелинейной цветностной компоненты во втором цветовом пространстве, значения второй нелинейной цветностной компоненты во втором цветовом пространстве и значения исходной линейной яркостной компоненты в третьем цветовом пространстве. Процессор 111 дополнительно выполнен с возможностью кодирования значения нелинейной яркостной компоненты, значения первой нелинейной цветностной компоненты и значения второй нелинейной цветностной компоненты.
Другой дополнительный аспект вариантов осуществления, см. фиг. 35, относится к устройству 120 для кодирования пикселя в изображении. Устройство 120 содержит блок 121 определения для получения значения исходной линейной яркостной компоненты пикселя в третьем цветовом пространстве, определенного на основании линейного цвета пикселя в первом цветовом пространстве. Устройство 120 также содержит выводитель 122 для вывода значения нелинейной яркостной компоненты во втором цветовом пространстве для пикселя на основании значения первой нелинейной цветностной компоненты во втором цветовом пространстве, значения второй нелинейной цветностной компоненты во втором цветовом пространстве и значения исходной линейной яркостной компоненты в третьем цветовом пространстве. Устройство 120 дополнительно содержит кодер 123 для кодирования значения нелинейной яркостной компоненты, значения первой нелинейной цветностной компоненты и значения второй нелинейной цветностной компоненты.
Согласно аспекту предусмотрен блок, например, препроцессор или кодер. Блок выполнен с возможностью определения, что компоненты Cb' и/или Cr' включают в себя ошибки, и когда определено, что компоненты Cb' и/или Cr' включают в себя ошибки, вывода скорректированной компоненты Y' для компенсации ошибок в компонентах Cb' и Cr'.
Настоящие варианты осуществления также относится к пользовательскому оборудованию, содержащему устройство для предобработки пикселя или устройство для кодирования пикселя согласно вариантам осуществления. Пользовательское оборудование, предпочтительно, является устройством или оборудованием, выполненным с возможностью приема и обработки видеоданных. Пользовательское оборудование может, например, быть устройством или оборудованием, выполненным с возможностью пересылки видеоданных по интерфейсу, например, HDMI.
Другой вариант осуществления относится к пользовательскому оборудованию, содержащему устройство для предобработки пикселя или устройство для кодирования пикселя согласно вариантам осуществления. В этом варианте осуществления, пользовательское оборудование, предпочтительно, выбирается из группы, состоящей из компьютера, портативного компьютера, смартфона, планшета и телевизионной приставки.
Все большую популярность приобретает предоставление вычислительных услуг, например аппаратных и/или программных, на сетевых устройствах, например, сетевых узлах и/или серверах, где ресурсы доставляются в виде услуги в удаленные места по сети. В порядке примера, это означает, что описанные в настоящем документе функциональные возможности могут распределяться или перемещаться на один или более отдельных физических узлов или серверов. Функциональные возможности могут перемещаться или распределяться на одну или более совместно действующих физических и/или виртуальных машин, которые могут располагаться в отдельном(ых) физическом(их) узле(ах), т.е. в так называемом облаке. Эту также иногда называется облачными вычислениями, что является моделью, обеспечивающей повсеместный сетевой доступ по требованию к массиву конфигурируемых вычислительных ресурсов, например, сетям, серверам, хранилищу, приложениям и общим или специализированным службам.
Фиг. 36 показана схема, иллюстрирующая пример того, как функциональные возможности, в общем случае, могут распределяться или разделяться между различными сетевыми устройствами 300, 301, 302. В этом примере представлены, по меньшей мере, два отдельных, но соединенных между собой сетевых устройства 300, 301, которые могут иметь различные функции или части одной и той же функции, разделенные между сетевыми устройствами 300, 301. Могут существовать дополнительные сетевые устройства 302, составляющие часть такой распределенной реализации. Сетевые устройства 300, 301, 302 могут входить в состав одной и той же системы беспроводной связи, или одно или более из сетевых устройств могут представлять собой так называемые облачные сетевые устройства, находящиеся вне системы беспроводной связи.
На фиг. 37 показана схема, иллюстрирующая пример системы беспроводной связи, включающей в себя сеть 1 доступа и/или базовую сеть 2 и/или систему 3 операционной поддержки (OSS) совместно с одним или более облачными сетевыми устройствами 300. Фигура также демонстрирует сетевой узел 4 сети 1 доступа и пользовательское оборудование 5 согласно вариантам осуществления.
Примеры
В последнее время было достигнуто существенное повышение качества цифрового видео за счет увеличения разрешения, от стандартной четкости к высокой четкости и далее к 4k. Видео высокого динамического диапазона (HDR) использует другой подход к повышению воспринимаемого качества изображения, а именно увеличение контрастности. Традиционная телевизионная система была построена для яркостей от 0,1 канделы на квадратный метр (кд/м2) до 100 кд/м2, или примерно десяти удвоений яркости, что, в общем случае, именуется видео стандартного динамического диапазона (SDR). Для сравнения, некоторые мониторы HDR способны отображать диапазон от 0,01 до 4000 кд/м2, т.е. свыше 18 удвоений.
Традиционная обработка SDR
Типичные системы SDR, например, телевизоры или компьютерные мониторы часто используют восьмибитовое представление, где 0 представляет темный и 255 - светлый. Простое линейное масштабирование диапазона кодовых значений [0; 255] в вышеупомянутый диапазон яркости [0,1; 100] кд/м2 не будет идеальным: первые два кодовых слова 0 и 1 будут отображаться в 0,1 кд/м2 и 0,49 кд/м2 соответственно, с относительной разностью 390%. Два последних кодовых слова 254 и 255 с другой стороны, будут отображаться в 99,61 кд/м2 и 100 кд/м2 соответственно, с относительной разностью лишь 0,3%. Во избежание этого большого различия в относительных размерах шага, системы SDR включают в себя электрооптическую передаточную функцию (EOTF), которая отображает нелинейно кодовые значения в яркости. В порядке примера, красная компонента сначала делится на 255 для получения значения R01 ∈ [0; 1] и затем подается на степенную функцию R'=(R01)γ.
Наконец, R' масштабируется в диапазон [0,1; 100] для получения представления светового сигнала в кд/м2. Зеленая и синяя компоненты обрабатываются таким же образом. При выборе γ=2,4, относительная разность между первыми двумя кодовыми словами становится 0,16% и то же самое для двух последних кодовых слов 0,95%, что гораздо более сбалансированно.
Процесс получения SDR
Предполагая, что датчик камеры измеряет линейный световой сигнал (R, G, B) в кд/м2, первый этап состоит в делении на пиковую светлоту для получения нормализованного линейного светового сигнала (R01, G01, B01). Затем применяется функция, обратная EOTF, R'=(R01)1/γ, и аналогично для зеленого и синего. Для устранения корреляции цветовых компонентов применяется цветовое преобразование из цветового пространства RGB в YCbCr. На следующем этапе осуществляется квантование данных. В этом примере применяется 10-битовое квантование, дающее компоненты (Y'444, Cb'444, Cr'444), которые изменяются от 0 до 1023. Наконец, две цветностные компоненты дискретизируются с понижением для получения (Y'420, Cb'420, Cr'420). Теперь данные можно отправлять на видеокодер, например, кодер HEVC.
Отображение данных SDR
На стороне приемника, битовый поток HEVC декодируется для восстановления (Y'420, Cb'420, Cr'420) или достаточно декодированных версий этих значений ввиду того, что HEVC является потерьным декодером. Затем сигнал подвергается обработке обратной описанной выше. Конечным результатом является линейное представление светового сигнала (R, G, B), которое отображается.
Обработка HDR
Для данных HDR, которые могут включать в себя яркости вплоть до 10000 кд/м2, простая степенная функция плохо подходит для выражения контрастной чувствительности человеческого глаза во всем диапазоне яркостей. Любое фиксированное значение γ приведет к слишком грубому квантованию либо в темных тонах, либо в светлых тонах, либо в промежуточных тонах. Для решения этой проблемы используется EOTF, заданная как
Figure 00000064
Пиковая яркость также изменяется от 100 до 10000.
Проблема
В случае применения традиционной обработки SDR, изложенной выше, но с новой EOTF, заданной выше, и пиковой яркостью, равной 10000, происходит что-то непредвиденное. Как показано в сравнении с фиг. 38A и 38B и фиг. 39A и 39B, возникают артефакты. Заметим, что для фиг. 38A, 38B, 39A, 39B, не происходит никакого сжатия помимо понижающей дискретизации и квантования до 10 битов. Тем не менее, возникают раздражающие артефакты.
Анализ
Предположим, что следующие два пикселя располагаются друг за другом в изображении:
RGB1=(1000; 0; 100); и
RGB2=(1000; 4; 100)
Заметим, что эти цвета весьма схожи. Однако первые этапы обработки дают
Y'444Cb'444Cr'4441=(263; 646; 831) и
Y'444Cb'444Cr'4442= (401; 571; 735),
весьма отличающиеся друг от друга. Среднее этих двух значений будет Y'Cb'Cr'=(332; 608,5; 783). Теперь, если двигаться назад по цепочке обработки, можно увидеть, какое линейный значение RGB это представляет, и получить RGB=(1001; 0,48; 100,5), весьма близкое к обоим RGB1 и RGB2. Таким образом, простое усреднение всех трех компонент не является проблемой. Более серьезная проблема возникает, когда интерполируются только Cb' и Cr', и используются значения Y' из пикселей без интерполяции. Именно это осуществляется при традиционной понижающей дискретизации цветности, которая осуществляется для создания представления 4:2:0. Например, если взять Y' из вышеупомянутого первого пикселя, т.е. Y'Cb'Cr'=(263; 608,5; 783) будет представлять линейный цвет RGB (484; 0,03; 45), который является слишком темным. Аналогично, если взять Y' из второго пикселя, т.е. Y'Cb'Cr'=(401; 608,5; 783), получится значение RGB (2061; 2,2; 216), которое является слишком светлым.
Возможные обходные пути
Рассмотрим добавление третьего пикселя в пример,
RGB3=(1000; 8; 100)
Если преобразовать эти линейные входные сигналы в R'G'B', получится
R'G'B'1=(0,7518; 0,0000; 0,5081)
R'G'B'2=(0,7518; 0,2324; 0,5081)
R'G'B'3=(0,7518; 0,2824; 0,5081).
Очевидно, скачок G' больше между первым и вторым пикселями, хотя линейный G изменяется равными шагами 4. Аналогично, разность между координатами Y'Cb'Cr' будет больше между первыми двумя пикселями, чем между последними двумя. Поэтому эффект будет наибольшим, когда одна или две компоненты близки к нулю в линейном световом сигнале, т.е. когда цвет находится вблизи границы цветовой гаммы. Таким образом, один способ избежать артефактов может состоять в том, чтобы просто избегать насыщенных цветов. Однако более обширное цветовое пространство BT.2020 было введено именно для того, чтобы использовать более насыщенные цвета, поэтому такое решение нежелательно.
Это высвечивает другую проблему. Большой объем содержания испытаний запечатлен в Rec.709, и другое преобразование в BT.2020, ни один из цветов не будет полностью насыщенным и, таким образом, артефакты будут малы. В порядке примера, пиксель, полученный в Rec.709, например, RGB709=(0; 500; 0) больше не будет после преобразования в BT.2020 иметь никаких нулевых компонентов, RGB2020=(165; 460; 44). Далее, когда камеры будут способны записывать в BT.2020, будут возникать гораздо более сильные артефакты. Для устранения эффекта содержания BT.2020 в контейнере BT.2020, таким образом, использовался материал Rec.709 в контейнере Rec.709 для обработки фигур в этом примере. Математически, однако, не существует различия, поскольку координаты R01G01B01 будут охватывать полный диапазон [0; 1] в обоих случаях.
Другой обходной путь состоит в использовании обработки постоянной яркости (CL). В CL вся яркость переносится в Y', в отличие от переноса лишь большей части яркости в яркости Y' в представленной выше обработке, что именуется обработкой неконтрастной яркости (NCL). Однако одна проблема с CL состоит в том, что она влияет на всю цепочку; преобразование в обоих направлениях между представлением CL 4:2:0/4:2:2 и представлением NCL 4:2:0/4:2:2 создает опасность внесения артефактов в каждый этап преобразования. На практике, таким образом, было трудно перевести всю промышленность с традиционной NCL на CL.
Предложенное решение: регулировка яркости
Основная идея состоит в том, что нужно убедиться в том, что результирующая яркость совпадает с желаемой. Под яркостью подразумевается компонента Y (линейного) цветового пространства XYZ CIE1931. Это Y отличается от вышеупомянутой яркости Y', поскольку Y вычисляется из линейных значений RGB Y=wRR+wGG+wBB (уравнение 1), где wR=0,2627, wG=0,6780 и wB=0,0593. Яркость Y полностью соответствует тому, как зрительная система человека оценивает светлоту, поэтому интересно хорошо ее сохранять. Это показано на фиг. 40, где оба обработанный сигнал (вверху) и исходный сигнал (внизу) преобразуется в линейное XYZ. Тогда компоненты Y сильно отличаются, что можно видеть на фигуре. Основная идея состоит в том, что значение яркости Y' может изменяться независимо в каждом пикселе, что позволяет достигать правильной желаемой или исходной линейной яркости YO путем изменения Y', пока Ŷ не сравняется с YO, как показано на фиг. 41. Также возможно, что Ŷ возрастает монотонно с Y', и это означает, что можно знать направление, в котором должно изменяться Y'. Таким образом, простые способы, например, уполовинивание интервала, могут использоваться для нахождения оптимального Y', самое большее, за десять шагов для 10-битового квантования. Если одношаговое решение предпочтительно, можно использовать 3D поисковую таблицу, которая принимает Cb, Cr и желаемую линейную яркость YO и доставляет Y'.
Аспекты реализации
Метод можно эффективно реализовать следующим образом: сначала, желаемая или исходная яркость YO для каждого пикселя получается путем применения уравнение 1 к исходным значениям (R, G, B) каждого пикселя. Во-вторых, осуществляется вся цепочка: (R, G, B) → (нормализация) → (R01, G01, B01) → (EOTF-1) → (R', G', B') → (цветовое преобразование) → (Y'01, Cb'0,5, Cr'0,5) → (10-битовое квантование) → (Y'444, Cb'444, Cr'444) → (понижающая дискретизация цветности) → (Y'420, Cb'420, Cr'420) → (повышающая дискретизация цветности) → (Ŷ'444, Ĉb'444, Ĉr'444) → (обратное квантование) → (Ŷ'01, Ĉb'0,5, Ĉr'0,5). Затем, для каждого пикселя, устанавливается начальный интервал [0; 1023]. Затем испытывается предполагаемое значение Ŷ'444=512. Ŷ'01 вычисляется из предполагаемого значения, и с использованием ранее вычисленных Ĉb'0,5, Ĉr'0,5 может проходить через последние этапы обработки, дающие (
Figure 00000065
) через цепочку (Ŷ'01, Ĉb'0,5, Ĉr'0,5) → (обратное цветовое преобразование) →(
Figure 00000066
) → (EOTF) → (
Figure 00000067
) → (денормализация) → (
Figure 00000065
). Далее используется уравнение 1 для получения предполагаемой яркости Ŷ. Для данного пикселя, если Ŷ < YO, это означает, что предполагаемое значение Ŷ'444 слишком мало, и что правильное значение яркости должно быть в интервале [512; 1023]. Аналогично, если Ŷ > YO, правильное значение яркости должно быть в интервале [0; 512]. Теперь процесс повторяется, и после десяти итераций интервал содержит два соседних значения. На этой стадии проверяются оба значения, и выбирается то, которое дает наименьшую ошибку (Ŷ - YO)2.
Результаты
Мы реализовали традиционную цепочку обработки и сравнили ее с нашей цепочкой, которая включает в себя этап регулировки яркости, но оставляет декодер без изменения. На фиг. 38A-38C и 39A-39C показаны результаты без сжатия. В настоящем документе, обе традиционная цепочка обработки (фиг. 38B и 39B) и наша цепочка обработки (фиг. 38C и 39C) преобразуют в Y'Cb'Cr' 4:2:0 и затем обратно в линейное RGB. Фиг. 38A и 39A иллюстрируют исходные изображения. Полное время кодирования (цветовое преобразование плюс сжатие HM) возрастает примерно на 3% по сравнению с традиционной обработкой.
Для материала HDR ни одна метрика не играет роль, аналогичную PSNR для содержания SDR. Вместо этого, предлагается два метрики: tPSNR-Y для яркости и deltaE для цветности. В таблице A5 показаны не сжатые результаты для материала BT.709 в контейнере BT.709. В настоящем документе можно видеть большое увеличение качества яркости, измеренного как tPSNR-Y свыше 17 дБ в среднем, и свыше 20 дБ на одной последовательности. Также улучшается результат deltaE. В таблице A6 показаны не сжатые результаты для материала BT.709 или материала P3 в контейнере BT.2020. В настоящем документе коэффициенты усиления менее выражены, поскольку непосредственно на границе гаммы нет никаких цветов, но повышение tPSNR-Y по-прежнему составляет 8 дБ в среднем и свыше 11 дБ на некоторых последовательностях. Мера deltaE улучшается минимально. Заметим, что с истинным материалом BT.2020, предполагается, что коэффициенты усиления более аналогичны коэффициентам усиления в таблице A5.
Таблица A5 - увеличение tPSNR-Y и deltaE (дБ) для контейнера Rec.709
Класс Последовательность tPSNR-Y deltaE
Класс A' FireEaterClip4000r1 13,81 2,23
Tibul2Clip4000r1 18,01 3,85
Market3Clip4000r2 20,30 0,15
Всего 17,37 2,08
Таблица A6 - увеличение tPSNR-Y и deltaE (дБ) для контейнера BT.2020
Класс последовательность tPSNR-Y deltaE
Класс A FireEAterClip4000r1 5,88 0,73
Market3Clip4000r2 10,17 0,95
Tibul2Clip4000r1 7,60 0,02
Класс B AutoWelding 11,25 0,12
BikeSparklers 11,33 0,02
Класс C ShowGirl2Teaser 6,28 0,05
Класс D StEM_MagicHour 7,22 0,03
stem_WarmNight 8,53 0,04
Класс G BallonFestival 7,71 0,05
Всего 8,44 0,22
Приложение B
В этом приложении B исследуются цветовые артефакты вследствие понижающей дискретизации 4:2:0. Сначала, делается попытка перекрестного контроля, но наихудшее значение не воспроизводится, возможно, вследствие ошибки в HDRTools, которая уже исправлена. Затем осуществляется поиск наихудшей относительной ошибки яркости, обусловленной понижающей дискретизацией 4:2:0. Обнаружено, что относительная ошибка 86% (195 шагов Бартена) может возникать даже при отображении на экране с ограничением до 4000 нит. Даже если данные ограничены Rec709 и содержатся в контейнере BT.2020, возможна ошибка в 30 шагов Бартена. Для контента P3 в контейнере BT.2020 возможна ошибка в 40 шагов Бартена.
1 Введение
Было замечено, что малые изменения цвета могут вносить неожиданно большие артефакты при использовании понижающей дискретизации 4:2:0, даже в отсутствие сжатия.
1.1 Различия в перекрестном контроле
Это исследование начинается с перекрестного контроля m35255 [B1], с попыткой повторить результаты на слайде 13, перепечатанном в нижеприведенной таблице B1. Результаты получены из проверочного изображения, где левая часть изображения до пикселя 95 имеет цвет (3000, 0, 100) и правая часть, после пикселя 96 имеет цвет (3000, 4, 100).
Таблица B1 - значения m35255
4:2:0 10 битов 94 95 96 97 98 99
Вход EXR RGB 3000
0
100
3000
0
100
3000
4
100
3000
4
100
3000
4
100
3000
4
100
YCbCr 258
650
882
258
650
882
404
640
870
404
640
870
404
570
787
404
570
787
Предполагаемый YCbCr 258
650
882
258
649
881
401
642
862
404
604
828
404
570
787
404
566
782
Выход EXR RGB 3006
0
99,1875
2958
0
97,125
10000
1,57324
402,25
5860
2,58008
199
2998
3,99609
100,125
2764
4,20313
92,1875
При перекрестном контроле с использованием тех же процедур, что и для привязок (n14548, [B2]) получается результат, представленный в таблице B2. Для понижающей дискретизации, далее применялись фильтры, описанные в разделе 2.4.7 [B2] (отводы 2 и 3) и для повышающей дискретизации далее применялись 4-отводные фильтры (Раздел 2,4.8 [B2]).
Таблица B2 - значения при попытке перекрестного контроля
4:4:4 10 битов 94 95 96 97 98 99
Вход EXR RGB 3000
0
100
3000
0
100
3000
4
100
3000
4
100
3000
4
100
3000
4
100
YcbCr 4:2:0 258
650
882
258 404
580
799
404 404
570
787
404
YcbCr после повышающей дискретизации 258
650
882
258
616
841
404
580
799
404
571
788
404
570
787
404
569
786
Выход EXR RGB 3006
0
99,1875
1551
0,0169
48,2188
3644
3,5293
122,9375
3048
3,9531
102,2500
2998
3,9961
100,125
2950
4,0391
98,0625
Как можно видеть, они действительно плохо совпадают, и совпадает только пиксели №№ 94 и 98, тогда как для пикселей №№ 95-97 или 99 не найдено никакого совпадения. Однако перемещение нарушения непрерывности к пикселю 97 дает значительно лучшее совпадение, как показано в таблице B3.
Таблица B3 - значения при перемещении нарушения непрерывности
4:4:4 10 битов 94 95 96 97 98 99
Вход EXR RGB 3000
0
100
3000
0
100
3000
0
100
3000
4
100
3000
4
100
3000
4
100
YcbCr 4:2:0 258
650
882
258 258
640
870
404 404
570
787
404
YcbCr после повышающей дискретизации 258
650
882
258
649
881
258
640
870
404
604
828
404
570
787
404
566
782
Выход EXR RGB 3006
0
99,1875
2958
0
97,125
2476
0,00142
80,5625
5860
2,58008
199
2998
3,99609
100,125
2764
4,20312
92,1875
В таблице B3 не совпадает только пиксель № 96. Также существует пиксель с наиболее странными значениями (10000, 1,57, 402,25), в то время, как правильным ответом является (3000, 0, 100) или (3000, 4, 100) в зависимости от размещения нарушения непрерывности.
Это выглядит, как если бы несовпадение при перекрестном контроле было вызвано ошибкой в HDRtools, которая уже исправлена. Возвращаясь к редакции 492, можно создавать такие же значения, как в m35255 [B1]. Для подтверждения, что более новая версия HDRtools (редакция 573) верна, была независимо осуществлена цепочка обработки в Matlab и были получены те же результаты, что в таблице A3. Причина, по которой необходимо перемещать нарушение непрерывности для получения совпадения, вероятно состоит в ошибочной фильтрации в редакции 492, которая исправлена в текущей версии.
1.2 Проблема округления
При осуществлении перекрестного контроля Matlab, было обнаружено, что преобразование числа с плавающей точкой в EXR в HDRtools имеет недостатки в округлении. Вместо округления 23 битов мантиссы до 10 битов, они просто сдвигаются вправо, в основном, заменяя round() на floor(). Это влияет на конечный результат. В порядке примера, число с плавающей точкой 3007,9 будет преобразовано в 3006,0, несмотря на то, что 3008,0 является гораздо более близким значением. Для получения совпадения нужно, чтобы код Matlab эмулировал преобразование типа floor() в текущей редакции HDRtools (редакция 587 [B3]).
1.3 Цветовые выбросы
Заметим, что даже если пиксель 96 больше не является экстремальным выбросом, пиксель 97 все еще весьма далек от правильного: (5860, 2,58, 199) вместо (3000, 4, 100). Это ставит вопрос; насколько плохие выбросы может генерировать понижающая дискретизация 4:2:0 и где это происходит? Чтобы ответить на этот вопрос, сначала нужно определить, что означает ʺплохиеʺ. Особое внимание уделялось яркости, поскольку зрительная система человека более чувствительна к изменениям яркости, чем к изменениям цветности. Поэтому входное изображение EXR и выходное изображение EXR преобразовывались из линейного светового сигнала в XYZ, и формировалось различие в Y. Для получения относительной ошибки производилось деление на компоненту Y источника. Затем была написана небольшая программа, максимизирующая эту относительную ошибку для пикселя 97 во всех возможных изображениях типа, где левая часть имеет один цвет, и правая часть имеет такой же цвет плюс малая дельта длиной 4, как в m35255 [B1].
Выполнение этой программы дало ответ, что наличие цвета (2142, 0, 138) в левой части и (2142, 4, 138) в правой части дает наибольшую наблюдаемую ошибку, как показано в таблице B4. Программное обеспечение оптимизации, которое ищет ʺнаихудшуюʺ ошибку, не гарантирует отыскание глобального максимума, следовательно, могут существовать еще худшие позиции в цветовой гамме.
Таблица B4 - данные ʺнаихудшегоʺ цвета для понижающей дискретизации 4:2:0
Пиксель 97 Значение RGB Значение Y Дифф. Y Относительная ошибка Шаги Бартена
Исходный 2142
4
138
573,5991 0 0 0
RGB 4:4:4 2142,6617
3,9750
138,2966
573,7735 0,1745 0,0304% 0,0691
RGB 4:2:0 3993,7333
2,4265
263,6030
1066,4311 492,8320 85,9192% 195,2710
Следует отметить, что наличие красной компоненты, превышающей 2142, приведет к дополнительному увеличению относительной ошибки. Однако предполагается, что значения RGB выше 4000 будут ограничиваться 4000 монитором, поэтому предполагается, что фактическое различие на экране начнет уменьшаться в случае использования более высоких значений.
Как можно видеть в таблице B4, относительная ошибка для RGB 4:4:4 равна 0,0304%. С общей точки зрения, производилось сравнивалась с кривой Бартена, см. фиг. 42 где изображена кривая Бартена для контрастной чувствительности. Контрастность под кривой незаметна. Таблица B5 демонстрирует значения, используемые для построения кривой на фиг. 42.
Таблица B5 - значения, используемые для построения кривой Бартена
Яркость в кд/м2 Контрастность (%)
10-3 13,8294
10-2 4,5454
10-1 1,7461
100 0,8507
101 0,5454
102 0,4360
103 0,4027
104 0,3962
Как можно видеть на фиг. 42, допуск для относительных ошибок снижается с увеличением яркости. При 100 нит может не восприниматься ошибка в 0,44%, тогда как при 1000 нит, может не восприниматься ошибка 0,40%. Поскольку 455 нит находится точно посередине между ними, используется более высокое значение 0,44%. Это дает шаг Бартена 0,069, что трудно заметить.
С другой стороны, для понижающей дискретизации 4:2:0, относительная ошибка равна 85,92%. Это эквивалентно свыше 195 шагов Бартена, что должно отчетливо наблюдаться. Это позволяет допустить, что понижающая дискретизация 4:2:0 может создавать отчетливо наблюдаемые артефакты, по меньшей мере, при непостоянной яркости и сильно нелинейной передаточной функции, что имеет место при генерации привязок.
Заметим, что наихудшая ошибка находится прямо на границе цветовой гаммы; когда зеленый цвет равен нулю, цвет (2142, 0, 138) находится на линии между красным и зеленым основными цветами. Это согласуется с описанием в m35255 [B1], где также указана проблема цветов на границе гаммы.
1.4 Когда входной сигнал является данными 709
Данные, представленные в таблице A1 относятся к основным цветам BT.2020. Если входные данные имеют основные цвета Rec709, но контейнер является BT.2020, не будет возможности достичь границы цветовой гаммы. Это объясняется тем, что треугольник гаммы Rec709 находится внутри треугольника BT.2020, не касаясь границы гаммы, как можно видеть на фиг. 43. Это позволяет предположить, что относительная ошибка будет меньше.
Программное обеспечение оптимизации позволяет найти цвет Rec709, который, после преобразования в BT.2020, приведет к наибольшей относительной ошибке. В результате получаются два цвета: (0, 0, 50) в левой части экрана и (2, 3, 49) в правой части. Это представлено в таблице B6.
Таблица B6 - данные ʺнаихудшегоʺ цвета для понижающей дискретизации 4:2:0, если входной сигнал является Rec709, и контейнер имеет формат BT.2020
Пиксель 97 Значение RGB Значение Y Дифф. Y Относительная ошибка шаги Бартена
Исходный цвет Rec709 2
3
49
Исходный цвет BT.2020 4,3650
3,4535
44,1810
6,1082
RGB 4:4:4 4,3793
3,4293
43,7035
6,0672 0,0410 0,6711% 1,2305
RGB 4:2:0 4,4055
2,9939
63,5135
7,2163 1,1082 18,1422% 33,2640
В настоящем документе использовалась кривая Бартена при 10 нит, что составляет 0,54%. Для RGB 4:4:4 была получена едва заметная ошибка в 1,2305 шагах Бартена, тогда как ошибка в RGB 4:2:0 равна 33 шагам Бартена, которая должна отчетливо наблюдаться. Возможно также, что ошибка меньше (33 шага Бартена в отличие от 195 шагов Бартена), поскольку, если начинать с данных Rec709, цвет не сможет достичь всей частей границы гаммы BT.2020.
Также следует обратить внимание на то, как результат оптимизации позволяет обнаружить наличие наихудшей ошибки вблизи синего основного цвета. Это, скорее всего, обусловлено тем, что синий основной цвет Rec709 является ближайшим к границе гаммы BT.2020, как можно видеть на фиг. 43.
1.5 Когда входной сигнал является данными P3
Такая же проверка может осуществляться для исходных данных P3, содержащихся в контейнере BT.2020. Тогда наихудшие цвета представляют собой (2,48, 3,32, 4,63) и (3,29, 0, 6,71), как показано в таблице B7.
Таблица B7 - данные ʺнаихудшегоʺ цвета для понижающей дискретизации 4:2:0, если входной сигнал является P3, и контейнер имеет формат BT.2020
Пиксель 97 Значение RGB Значение Y Дифф. Y Относительная ошибка Шаги Бартена
Исходный цвет P3 3,29
0
6,71
Исходный цвет BT.2020 2,7993
0,2342
6,5960
1,2853
RGB 4:4:4 2,8099
0,2304
6,4838
1,2788 0,0065 0,5062% 0,5951
RGB 4:2:0 1,4911
0,3834
3,2402
0,8438 0,4416 34,3530% 40,38
Можно предположить, что ошибка будет принимать промежуточное значение между Rec709 и BT.2020, и это также позволяет получить ошибку, эквивалентную 40,38 шагов Бартена. Заметим, что поскольку значение Бартена изменяется, важно включать его в цикл при поиске наихудшего значения. Использовалось значение Бартена для 1 кд/м2, равное 0,85%.
1.6 Заключение
В этом приложении была исследована ошибка яркости вследствие понижающей дискретизации 4:2:0. Хотя не удалось добиться совпадения с наихудшим выбросом из m35255 [B1], ошибки худшего случая все же значительны, достигая почти 200 шагов Бартена для общих данных. Даже если исходные данные ограничены Rec709 и помещены в контейнер BT.2020, ошибка все еще значительна, свыше 30 шагов Бартена, и для данных P3 в контейнере BT.2020, свыше 40 шагов Бартена.
Вышеописанные варианты осуществления следует рассматривать как несколько иллюстративных примеров настоящего изобретения. Специалисты в данной области техники могут предложить различные модификации, комбинации и изменения варианты осуществления, не выходящие за рамки объема настоящего изобретения. В частности, различные частичные решения в различных вариантах осуществления можно объединять в других конфигурациях, при наличии технической возможности. Однако объем настоящего изобретения определяется нижеследующей формулой изобретения.
ССЫЛКИ
[1] Tourapis et al., Enhanced Luma Adjustment Methods, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 23rd Meeting: San Diego, USA, 19-26 February 2016, Document: JCTVC-W0052
[2] Norkin, Closed form HDR 4:2:0 chroma subsampling (HDR CE1 and AHG5 related), Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 23rd Meeting: San Diego, USA, 19-26 February 2016, Document: JCTVC-W0107
[A4] International Organization for Standardization, ISO/IEC JTC1/SC29/WG11, Coding of moving pictures and audio, MPEG2014/N15083, February 2015, Geneva, Switzerland, Luthra et al., Call for Evidence (CfE) for HDR and WCG Video Coding
[B1] International Organization for Standardization, ISO/IEC JTC1/SC29/WG11, Coding of moving pictures and audio, MPEG2013/M35255, October 2014, Strasbourg, France, Francois et al., About using a BT.2020 container for BT.709 content
[B2] International Organization for Standardization, ISO/IEC JTC1/SC29/WG11, Coding of moving pictures and audio, MPEG2014/N14548, July 2014, Sapporo, Japan, Luthra et al., Test sequences and anchor generation for HDR and Wide Gamut Content Distribution
[B3] https://wg11.sc29.org/svn/repos/Explorations/XYZ/HDRTools/branches/0,9-dev

Claims (178)

1. Способ обработки пикселя в изображении, причем упомянутый способ содержит этапы, на которых:
проверяют (S1), приводит ли цветовая компонента упомянутого пикселя в цветовом пространстве, дающая наименьшую ошибку между, по меньшей мере, одной цветовой компонентой в другом цветовом пространстве, определенной на основании упомянутой цветовой компоненты в упомянутом цветовом пространстве, и, по меньшей мере, одной исходной цветовой компонентной упомянутого пикселя в упомянутом другом цветовом пространстве, к выходу любого цветового канала упомянутого пикселя за пределы допустимого диапазона;
получают (S2) значение упомянутой цветовой компоненты в упомянутом цветовом пространстве с использованием первой функции или первой поисковой таблицы, если упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, не приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона; и
получают (S3) значение упомянутой цветовой компоненты в упомянутом цветовом пространстве с использованием второй, другой, функции или второй, другой, поисковой таблицы, если упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона.
2. Способ по п. 1, в котором
проверка (S1), приводит ли упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона, содержит этап, на котором проверяют (S1), приводит ли цветовая компонента упомянутого пикселя во втором цветовом пространстве, дающая наименьшую ошибку между i) цветовой компонентой в третьем цветовом пространстве, определенной на основании упомянутой цветовой компоненты в упомянутом втором цветовом пространстве, и исходной цветовой компонентой в упомянутом третьем цветовом пространстве, определенной на основании исходных цветовых компонентов упомянутого пикселя в первом цветовом пространстве, или ii) цветовыми компонентами в упомянутом первом цветовом пространстве, определенными на основании упомянутой цветовой компоненты в упомянутом втором цветовом пространстве, и упомянутыми исходными цветовыми компонентами в упомянутом первом цветовом пространстве, к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона;
получение (S2) упомянутого значения содержит этап, на котором получают (S2) значение упомянутой цветовой компоненты в упомянутом втором цветовом пространстве с использованием упомянутой первой функции или упомянутой первой поисковой таблицы, если упомянутая цветовая компонента в упомянутом втором цветовом пространстве, дающая упомянутую наименьшую ошибку, не приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона; и
получение (S3) упомянутого значения содержит этап, на котором получают (S3) значение упомянутой цветовой компоненты в упомянутом втором цветовом пространстве с использованием упомянутой второй, другой, функции или упомянутой второй, другой, поисковой таблицы, если упомянутая цветовая компонента в упомянутом втором цветовом пространстве, дающая упомянутую наименьшую ошибку, приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона.
3. Способ по п. 1, в котором
проверка (S1), приводит ли упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона, содержит этап, на котором проверяют (S1), приводит ли яркостная компонента упомянутого пикселя, дающая наименьшую ошибку между i) яркостью, определенной на основании упомянутой яркостной компоненты и исходной яркости, определенной на основании исходных красной, зеленой и синей цветовых компонент упомянутого пикселя, или ii) красной, зеленой и синей цветовыми компонентами, определенными на основании упомянутой яркостной компоненты, и упомянутыми исходными красной, зеленой и синей цветовыми компонентами упомянутого пикселя, к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона;
получение (S2) упомянутого значения содержит этап, на котором получают (S2) значение упомянутой яркостной компоненты с использованием упомянутой первой функции или упомянутой первой поисковой таблицы, если упомянутая яркостная компонента, дающая упомянутую наименьшую ошибку, не приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона; и
получение (S3) упомянутого значения содержит этап, на котором получают (S3) значение упомянутой яркостной компоненты с использованием упомянутой второй, другой, функции или упомянутой второй, другой, поисковой таблицы, если упомянутая яркостная компонента, дающая упомянутую наименьшую ошибку, приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона.
4. Способ по п. 1, в котором проверка (S1), приводит ли упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона, содержит этап, на котором проверяют (S1), приводит ли упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, к обрезке любого цветового канала упомянутого пикселя.
5. Способ по п. 1, в котором проверка (S1), приводит ли упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона, содержит этап, на котором проверяют (S1), приводит ли упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, к тому, что любой цветовой канал упомянутого пикселя больше единицы или меньше нуля.
6. Способ по п. 1, в котором проверка (S1), приводит ли упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона, содержит этап, на котором проверяют (S1), приводит ли упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, к насыщению любого цветового канала упомянутого пикселя.
7. Способ по п. 1, в котором
получение (S2) упомянутого значения содержит этап, на котором вычисляют (S2) упомянутое значение упомянутой цветовой компоненты в упомянутом цветовом пространстве с использованием первой функции линеаризации, если упомянутая цветовая компонента в упомянутом цветовом пространстве не приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона; и
получение (S3) упомянутого значения содержит этап, на котором вычисляют (S3) упомянутое значение упомянутой цветовой компоненты в упомянутом цветовом пространстве с использованием второй, другой, функции линеаризации или обратной функции, если упомянутая цветовая компонента в упомянутом цветовом пространстве приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона.
8. Способ по п. 7, в котором вычисление (S3) упомянутого значения упомянутой цветовой компоненты содержит этапы, на которых:
выбирают (S10) упомянутую вторую, другую, функцию линеаризации или упомянутую обратную функцию в зависимости от того, какой цветовой канал или цветовые каналы упомянутого пикселя, который(е) выходит или выходят за пределы упомянутого допустимого диапазона; и
вычисляют (S11) упомянутое значение упомянутой цветовой компоненты в упомянутом цветовом пространстве с использованием упомянутой выбранной второй, другой, функции линеаризации или упомянутой выбранной обратной функции.
9. Способ по п. 8, в котором
проверка (S1), приводит ли упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона, содержит этап, на котором проверяют (S1), приводит ли яркостная компонента Y' упомянутого пикселя, дающая наименьшую ошибку между яркостью Y, определенной на основании упомянутой яркостной компоненты Y', и исходной яркостью Yo, определенной на основании исходных красной, зеленой и синей цветовых компонент RoGoBo упомянутого пикселя, к обрезке любого из красного, зеленого и синего цветовых каналов упомянутого пикселя;
вычисление (S2) упомянутого значения содержит этап, на котором вычисляют (S2) значение упомянутой яркостной компоненты Y' как
Figure 00000068
если упомянутая яркостная компонента Y' не приводит к обрезке любого из упомянутых красного, зеленого, синего цветовых каналов упомянутого пикселя, причем wR, wG, wB обозначают весовые коэффициенты цветов, a13, a22, a23, a32 обозначают положительные постоянные цветового преобразования из цвета Y'CbCr в цвет R'G'B', Cb, Cr обозначают цветностные компоненты упомянутого пикселя, P=tf(P'), где Р=красный (R), зеленый (G) или синий (В), tf(.) - передаточная функция, и tf'(Po') обозначает производную упомянутой передаточной функции по Ро';
выбор (S10) упомянутой второй, другой, функции линеаризации или упомянутой обратной функции содержит этапы, на которых:
выбирают упомянутую вторую, другую, функцию линеаризации
Figure 00000069
при обрезке упомянутого красного цветового канала;
выбирают упомянутую вторую, другую, функцию линеаризации
Figure 00000070
при обрезке упомянутого зеленого цветового канала;
выбирают упомянутую вторую, другую, функцию линеаризации
Figure 00000071
при обрезке упомянутого синего цветового канала;
выбирают упомянутую обратную функцию
Figure 00000072
при обрезке упомянутого красного цветового канала и упомянутого зеленого цветового канала, где tf-1(.) обозначает функцию, обратную упомянутой передаточной функции tf(.);
выбирают упомянутую обратную функцию
Figure 00000073
при обрезке упомянутого красного цветового канала и упомянутого синего цветового канала; и
выбирают упомянутую обратную функцию
Figure 00000074
при обрезке упомянутого зеленого цветового канала и упомянутого синего цветового канала.
10. Способ по п. 9, дополнительно содержащий этап, на котором вычисляют (S20) Y'redclip=1-a13Cr, Y'greenclip=1+a22Cb+a23Cr и Y'blueclip=1-a32Cb, причем проверка (S1), приводит ли упомянутая яркостная компонента Y', дающая упомянутую наименьшую ошибку, к обрезке любого из упомянутых красного, зеленого и синего цветовых каналов упомянутого пикселя, содержит этап, на котором проверяют (S1), приводит ли упомянутая яркостная компонента Y', дающая упомянутую наименьшую ошибку, к обрезке любого из упомянутых красного, зеленого и синего цветовых каналов упомянутого пикселя на основании наименьшего значения Y'redclip, Y'greenclip и Y'blueclip.
11. Способ по п. 10, дополнительно содержащий этапы, на которых:
выбирают (S21) наименьшее значение Y'firstclip=min(Y'redclip, Y'greenclip, Y'blueclip); и
вычисляют (S22)
Yfirstclip=wRtf(Y'firstclip+a13Cr)+wGtf(Y'firstclip-a22Cb-a23Cr)+wBtf(Y'firstclip+a32Cb), причем проверка (S1), приводит ли упомянутая яркостная компонента Y', дающая упомянутую наименьшую ошибку, к обрезке любого из упомянутых красного, зеленого и синего цветовых каналов упомянутого пикселя, содержит этап, на котором проверяют (S1), выполняется ли Yo<Yfirstclip.
12. Способ по п. 11, дополнительно содержащий этапы, на которых:
выбирают (S24) медианное значение Y'secondclip=median (Y'redclip, Y'greenclip, Y'blueclip); и
вычисляют (S25)
Ysecondclip=wRtf(Y'secondclip+a13Cr)+wGtf(Y'secondclip-a22Cb-a23Cr)+wBtf(Y'senodclip+a32Cb), причем проверка (S1), приводит ли упомянутая яркостная компонента Y', дающая упомянутую наименьшую ошибку, к обрезке любого из упомянутых красного, зеленого и синего цветовых каналов упомянутого пикселя, содержит этапы, на которых:
определяют (S27), что упомянутая яркостная компонента Y', дающая упомянутую наименьшую ошибку, не приводит к обрезке любого из упомянутых красного, зеленого и синего цветовых каналов упомянутого пикселя, если Yo<Yfirstclip;
определяют (S28), что упомянутая яркостная компонента Y', дающая упомянутую наименьшую ошибку, приводит к обрезке одного из упомянутых красного, зеленого и синего цветовых каналов упомянутого пикселя, если Yfirstclip<Yo<Ysecondclip; и
определяют (S29), что упомянутая яркостная компонента Y', дающая упомянутую наименьшую ошибку, приводит к обрезке двух из упомянутых красного, зеленого и синего цветовых каналов упомянутого пикселя, если Yo≥Ysecondclip.
13. Способ по п. 1, в котором проверка (S1), приводит ли упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона, содержит проверку (S1), приводит ли яркостная компонента Y' упомянутого пикселя, дающая наименьшую ошибку между красной, зеленой и синей цветовыми компонентами RGB, определенными на основании упомянутой яркостной компоненты Y', и исходными красной, зеленой и синей цветовыми компонентами RoGoBo упомянутого пикселя, к обрезке любого из красного, зеленого и синего цветовых каналов упомянутого пикселя.
14. Способ по п. 13, в котором проверка (S1), приводит ли упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона, получение (S2) упомянутого значения и получение (S3) упомянутого значения содержат этапы, на которых:
вычисляют (S50) Y'redclip=1-a13Cr, Y'greenclip=1+a22Cb+a23Cr и Y'blueclip=1-a32Cb, где a13, a22, a23, a32 обозначают положительные постоянные цветового преобразования из цвета Y'CbCr в цвет R'G'B', Cb, Cr обозначают цветностные компоненты упомянутого пикселя;
вычисляют (S51) первое значение Y'rgb упомянутой яркостной компоненты Y' как
Figure 00000075
где wR, wG, wB обозначают весовые коэффициенты цветов, а13, а22, а23, а32 обозначают положительные постоянные цветового преобразования из цвета Y'CbCr в цвет R'G'B', P=tf(P'), где Р=красный (R), зеленый (G) или синий (В), tf(.) - передаточная функция, и tf'(Po') обозначает производную упомянутой передаточной функции по Ро';
вычисляют (S52) второе значение Y'one упомянутой яркостной компоненты Y' как
Figure 00000076
если Y'redclip=min(Y'redclip,Y'greenclip,Y'blueclip), как
Figure 00000077
если Y'greenclip=min(Y'redclip,Y'greenclip,Y'blueclip), и как
Figure 00000078
если Y'blueclip=min(Y'redclip,Y'greenclip,Y'blueclip);
вычисляют (S53) третье значение Y'two упомянутой яркостной компоненты Y' как
Figure 00000079
если Y'redclip=max(Y'redclip,Y'greenclip,Y'blueclip), как
Figure 00000080
если Y'greenclip=max(Y'redclip,Y'greenclip,Y'blueclip), и как
Figure 00000081
если Y'blueclip=min(Y'redclip,Y'greenclip,Y'blueclip);
вычисляют (S54) первое значение ошибки
errRGB(Y'rgb)=wR(tf(Y'rgb+a13Cr)-Ro)2+wG(tf(Y'rgb-a22Cb-a23Cr)-Go)2+wB(tf(Y'rgb+a32Cb)-Bo)2;
вычисляют (S55) второе значение ошибки
errRGBone=wR(10000-Ro)2+wG(tf(Y'gb-a22Cb-a23Cr)-Go)2+wB(tf(Y'gb+a32Cb)-Bo)2, если Y'redclip=min(Y'redclip,Y'greenclip,Y'blueclip), как errRGBone=wR(tf(Y'rb+a13Cr)-Ro)2+wG(10000-Go)2+wB(tf(Y'rb+a32Cb)-Bo)2, если Y'greenclip=min(Y'redclip,Y'greenclip,Y'blueclip), и как
errRGBone=wR(tf(Y'rg+a13Cr)-Ro)2+wG(tf(Y'rg-a22Cb-a23Cr)-Go)2+wB(10000-Bo)2, если Y'blueclip=min(Y'redclip,Y'greenclip,Y'blueclip);
вычисляют (S56) третье значение ошибки errRGBtwo=wR(tf(Y'r+a13Cr)-Ro)2+wG(10000-Go)2+wB(10000-Bo)2, если Y'redclip=max(Y'redclip,Y'greenclip,Y'blueclip), как errRGBtwo=wR(10000-Ro)2+wG(tf(Y'g-a22Cb-a23Cr)-Go)2+wB(10000-Bo)2, если Y'greenclip=max(Y'redclip, Y'greenclip, Y'blueclip), и как errRGBtwo=wR(10000-Ro)2+wG(1000-Go)2+wB(tf(Y'b+a32Cb)-Bo)2, если Y'blueclip=max(Y'redclip,Y'greenclip,Y'blueclip); и
выбирают (S57) Y'rgb как упомянутое значение упомянутой яркостной компоненты Y', если errRGB(Y'rgb)=min(errRGB(Y'rgb,errRGBone,errRGBtwo), Y'one как упомянутое значение упомянутой яркостной компоненты Y', если errRGBone=min(errRGB(Y'rgb,errRGBone,errRGBtwo),. и Y'two как упомянутое значение упомянутой яркостной компоненты Y', если errRGBtwo=min(errRGB(Y'rgb,errRGBone,errRGBtwo).
15. Способ по п. 9, в котором проверка (S1), приводит ли упомянутая яркостная компонента Y', дающая упомянутую наименьшую ошибку, к обрезке любого из упомянутых красного, зеленого и синего цветовых каналов упомянутого пикселя, содержит этап, на котором извлекают (S1), из поисковой таблицы и для каждого цветового канала из упомянутых красного, зеленого и синего цветовых каналов упомянутого пикселя с использованием упомянутой исходной яркости Yo и упомянутых цветностных компонентов Cb, Cr упомянутого пикселя или их квантованных версий в качестве входа, бит, указывающий, приводит ли упомянутая яркостная компонента Y', дающая упомянутую наименьшую ошибку, к обрезке упомянутого цветового канала.
16. Способ по п. 1, дополнительно содержащий этапы, на которых вычисляют (S30) Y'redclipZero=-a13Cr, Y'greenclipZero=a22Cb+a23Cr и Y'blueclipZero=1-a32Cb, где a13, a22, a23, a32 обозначают положительные постоянные цветового преобразования из цвета Y'CbCr в цвет R'G'B', Y' обозначает яркостную компоненту упомянутого пикселя, Cb, Cr обозначают цветностные компоненты упомянутого пикселя, причем проверка (S1), приводит ли упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона, содержит этап, на котором проверяют (S1), приводит ли яркостная компонента Y' упомянутого пикселя, дающая наименьшую ошибку между i) яркостью Y, определенной на основании упомянутой яркостной компоненты Y', и исходной яркостью Yo, определенной на основании исходных красной, зеленой и синей цветовых компонент RoGoBo упомянутого пикселя, или ii) красной, зеленой и синей цветовыми компонентам RGB, определенными на основании упомянутой яркостной компоненты Y', и упомянутыми исходными красной, зеленой и синей цветовыми компонентами RoGoBo упомянутого пикселя, к обрезке любого из красного, зеленого и синего цветовых каналов упомянутого пикселя до нуля на основании, по меньшей мере, одного из Y'redclipZero=-a13Cr, Y'greenclipZero=a22Cb+a23Cr и Y'blueclipZero=1-a32Cb.
17. Способ по п. 1, в котором
получение (S2) упомянутого значения содержит этап, на котором извлекают (S2) упомянутое значение упомянутой цветовой компоненты в упомянутом цветовом пространстве из первой поисковой таблицы, если упомянутая цветовая компонента в упомянутом цветовом пространстве не приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона; и
получение (S3) упомянутого значения содержит этап, на котором извлекают (S3) упомянутое значение упомянутой цветовой компоненты в упомянутом цветовом пространстве из второй, другой, поисковой таблицы, если упомянутая цветовая компонента в упомянутом цветовом пространстве приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона.
18. Способ по п. 17, в котором извлечение (S3) упомянутого значения упомянутой цветовой компоненты содержит этапы, на которых:
выбирают (S40) упомянутую вторую, другую, поисковую таблицу в зависимости от того, какой цветовой канал или цветовые каналы упомянутого пикселя, который(е) выходит или выходят за пределы упомянутого допустимого диапазона; и
извлекают (S41) упомянутое значение упомянутой цветовой компоненты в упомянутом цветовом пространстве из упомянутой выбранной второй, другой, поисковой таблицы.
19. Способ кодирования пикселя в изображении, причем упомянутый способ содержит этапы, на которых:
обрабатывают (S1, S2, S3) упомянутый пиксель согласно любому из пп. 1-18 для вывода значения яркостной компоненты для упомянутого пикселя; и
кодируют (S4) упомянутое значение упомянутой яркостной компоненты и значения дискретизированных с понижением цветностных компонентов.
20. Устройство (100, 110, 120, 130) обработки пикселя в изображении, в котором
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью проверки, приводит ли цветовая компонента упомянутого пикселя в цветовом пространстве, дающая наименьшую ошибку между, по меньшей мере, одной цветовой компонентой в другом цветовом пространстве, определенной на основании упомянутой цветовой компоненты в упомянутом цветовом пространстве, и, по меньшей мере, одной исходной цветовой компонентной упомянутого пикселя в упомянутом другом цветовом пространстве, к выходу любого цветового канала упомянутого пикселя за пределы допустимого диапазона;
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью получения значения упомянутой цветовой компоненты в упомянутом цветовом пространстве с использованием первой функции или первой поисковой таблицы, если упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, не приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона; и
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью получения значения упомянутой цветовой компоненты в упомянутом цветовом пространстве с использованием второй, другой, функции или второй, другой, поисковой таблицы, если упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона.
21. Устройство по п. 20, в котором
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью проверки, приводит ли цветовая компонента упомянутого пикселя во втором цветовом пространстве, дающая наименьшую ошибку между i) цветовой компонентой в третьем цветовом пространстве, определенной на основании упомянутой цветовой компоненты в упомянутом втором цветовом пространстве, и исходной цветовой компонентой в упомянутом третьем цветовом пространстве, определенной на основании исходных цветовых компонентов упомянутого пикселя в первом цветовом пространстве, или ii) цветовыми компонентами в упомянутом первом цветовом пространстве, определенными на основании упомянутой цветовой компоненты в упомянутом втором цветовом пространстве, и упомянутыми исходными цветовыми компонентами в упомянутом первом цветовом пространстве, к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона;
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью получения значения упомянутой цветовой компоненты в упомянутом втором цветовом пространстве с использованием упомянутой первой функции или упомянутой первой поисковой таблицы, если упомянутая цветовая компонента в упомянутом втором цветовом пространстве, дающая упомянутую наименьшую ошибку, не приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона; и
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью получения значения упомянутой цветовой компоненты в упомянутом втором цветовом пространстве с использованием упомянутой второй, другой, функции или упомянутой второй, другой, поисковой таблицы, если упомянутая цветовая компонента в упомянутом втором цветовом пространстве, дающая упомянутую наименьшую ошибку, приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона.
22. Устройство по п. 20, в котором
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью проверки, приводит ли яркостная компонента упомянутого пикселя, дающая наименьшую ошибку между i) яркостью, определенной на основании упомянутой яркостной компоненты и исходной яркости, определенной на основании исходных красной, зеленой и синей цветовых компонент упомянутого пикселя, или ii) красной, зеленой и синей цветовыми компонентами, определенными на основании упомянутой яркостной компоненты, и упомянутыми исходными красной, зеленой и синей цветовыми компонентами упомянутого пикселя, к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона;
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью получения значения упомянутой яркостной компоненты с использованием упомянутой первой функции или упомянутой первой поисковой таблицы, если упомянутая яркостная компонента, дающая упомянутую наименьшую ошибку, не приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона; и
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью получения значения упомянутой яркостной компоненты с использованием упомянутой второй, другой, функции или упомянутой второй, другой, поисковой таблицы, если упомянутая яркостная компонента, дающая упомянутую наименьшую ошибку, приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона.
23. Устройство по п. 20, в котором упомянутое устройство (100, 110, 120, 130) выполнено с возможностью проверки, приводит ли упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, к обрезке любого цветового канала упомянутого пикселя.
24. Устройство по п. 20, в котором упомянутое устройство (100, 110, 120, 130) выполнено с возможностью проверки, приводит ли упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, к тому, что любой цветовой канал упомянутого пикселя больше единицы или меньше нуля.
25. Устройство по п. 20, в котором упомянутое устройство (100, 110, 120, 130) выполнено с возможностью проверки, приводит ли упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, к насыщению любого цветового канала упомянутого пикселя.
26. Устройство по п. 20, в котором
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью вычисления упомянутого значения упомянутой цветовой компоненты в упомянутом цветовом пространстве с использованием первой функции линеаризации, если упомянутая цветовая компонента в упомянутом цветовом пространстве не приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона; и
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью вычисления упомянутого значения упомянутой цветовой компоненты в упомянутом цветовом пространстве с использованием второй, другой, функции линеаризации или обратной функции, если упомянутая цветовая компонента в упомянутом цветовом пространстве приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона.
27. Устройство по п. 26, в котором
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью выбора упомянутой второй, другой, функции линеаризации или упомянутой обратной функции в зависимости от того, какой цветовой канал или цветовые каналы упомянутого пикселя, который(е) выходит или выходят за пределы упомянутого допустимого диапазона; и
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью вычисления упомянутого значения упомянутой цветовой компоненты в упомянутом цветовом пространстве с использованием упомянутой выбранной второй, другой, функции линеаризации или упомянутой выбранной обратной функции.
28. Устройство по п. 27, в котором
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью проверки, приводит ли яркостная компонента Y' упомянутого пикселя, дающая наименьшую ошибку между яркостью Y, определенной на основании упомянутой яркостной компоненты Y', и исходной яркостью Yo, определенной на основании исходных красной, зеленой и синей цветовых компонент RoGoBo упомянутого пикселя, к обрезке любого из красного, зеленого и синего цветовых каналов упомянутого пикселя;
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью вычисления значения упомянутой яркостной компоненты Y' как
Figure 00000082
если упомянутая яркостная компонента Y' не приводит к тому, что любой из упомянутых красного, зеленого, синего цветовых каналов упомянутого пикселя обрезается/обрезается до единицы/насыщается/больше или равен единице, где wR, wG, wB обозначают весовые коэффициенты цветов, а13, а22, а23, а32 обозначают положительные постоянные цветового преобразования из цвета Y'CbCr в цвет R'G'B', Cb, Cr обозначают цветностные компоненты упомянутого пикселя, P=tf(P'), где Р=красный (R), зеленый (G) или синий (В), tf(.) - передаточная функция, и tf'(Po') обозначает производную упомянутой передаточной функции по Ро';
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью выбора упомянутой второй, другой, функции линеаризации
Figure 00000083
при обрезке упомянутого красного цветового канала;
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью выбора упомянутой второй, другой, функции линеаризации
Figure 00000084
при обрезке упомянутого зеленого цветового канала;
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью выбора упомянутой второй, другой, функции линеаризации
Figure 00000085
при обрезке упомянутого синего цветового канала;
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью выбора упомянутой обратной функции
Figure 00000086
при обрезке упомянутого красного цветового канала и упомянутого зеленого цветового канала, где tf-1 (.) обозначает функцию, обратную упомянутой передаточной функции tf(.);
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью выбора упомянутой обратной функции
Figure 00000087
при обрезке упомянутого красного цветового канала и упомянутого синего цветового канала; и
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью выбора упомянутой обратной функции
Figure 00000088
при обрезке упомянутого зеленого цветового канала и упомянутого синего цветового канала.
29. Устройство по п. 28, в котором
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью вычисления Y'redclip=1-a13Cr, Y'greenclip=1+a22Cb+a23Cr и Y'blueclip=1-a32Cb; и
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью проверки, приводит ли упомянутая яркостная компонента Y', дающая упомянутую наименьшую ошибку, к обрезке любого из упомянутых красного, зеленого и синего цветовых каналов упомянутого пикселя на основании наименьшего значения Y'redclip, Y'greenclip и Y'blueclip.
30. Устройство по п. 29, в котором
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью выбора наименьшего значения Y'firstclip=min(Y'redclip,Y'greenclip,Y'blueclip);
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью вычисления
Yfirstclip=wRtf(Y'firstclip+al3Cr)+wGtf(Y'firstclip-a22Cb-a23Cr)+wBtf(Y'firstclip+a32Cb); и
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью проверки, выполняется ли Yo<Yfirstclip.
31. Устройство по п. 30, в котором
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью выбора медианного значения
Y'secondclip=median(Y'redclip,Y'greenclip,Y'blueclip);
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью вычисления
Ysecondclip=wRtf(Y'secondclip+a13Cr)+wGtf(Y'secondclip-a22Cb-a23Cr)+wBtf(Y'secondclip+a32Cb);
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью определения, что упомянутая яркостная компонента Y', дающая упомянутую наименьшую ошибку, не приводит к обрезке любого из упомянутых красного, зеленого и синего цветовых каналов упомянутого пикселя, если Yo<Yfirstclip;
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью определения, что упомянутая яркостная компонента Y', дающая упомянутую наименьшую ошибку, приводит к обрезке одного из упомянутых красного, зеленого и синего цветовых каналов упомянутого пикселя, если Yfirstclip≤Yo<Ysecondclip; и
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью определения, что упомянутая яркостная компонента Y', дающая упомянутую наименьшую ошибку, приводит к обрезке двух из упомянутых красного, зеленого и синего цветовых каналов упомянутого пикселя, если Yo≥Ysecondclip.
32. Устройство по п. 20, в котором упомянутое устройство (100, 110, 120, 130) выполнено с возможностью проверки, приводит ли яркостная компонента Y' упомянутого пикселя, дающая наименьшую ошибку между красной, зеленой и синей цветовыми компонентами RGB, определенными на основании упомянутой яркостной компоненты Y', и исходными красной, зеленой и синей цветовыми компонентами RoGoBo упомянутого пикселя, к обрезке любого из красного, зеленого и синего цветовых каналов упомянутого пикселя.
33. Устройство по п. 32, в котором
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью вычисления Y'redclip=1-a13Cr, Y'greenclip=1+a22Cb+a23Cr и Y'blueclip=1-a23Cb, и где a13,a22,a23,a32 обозначают положительные постоянные цветового преобразования из цвета Y'CbCr в цвет R'G'B', Cb, Cr обозначают цветностные компоненты упомянутого пикселя;
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью вычисления первого значения Y'rgb упомянутой яркостной компоненты Y' как
Figure 00000089
где wR, wG, wB обозначают весовые коэффициенты цветов, а13, а22, а23, а32 обозначают положительные постоянные цветового преобразования из цвета Y'CbCr в цвет R'G'B', P=tf(P'), где Р=красный (R), зеленый (G) или синий (В), tf (.) - передаточная функция, и tf'(Po') обозначает производную упомянутой передаточной функции по Ро';
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью вычисления второго значения Y'one упомянутой яркостной компоненты Y' как
Figure 00000090
если Y'redclip=min(Y'redclip,Y'greenclip,Y'blueclip), как
Figure 00000091
если Y'greenclip=min(Y'redclip,Y'greenclip,Y'blueclip), и как
Figure 00000092
если Y'blueclip=min(Y'redclip,Y'greenclip,Y'blueclip);
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью вычисления третьего значения Y'two упомянутой яркостной компоненты Y' как
Figure 00000093
если Y'redclip=max(Y'redclip,Y'greenclip,Y'blueclip), как
Figure 00000094
если Y'greenclip=max(Y'redclip,Y'greenclip,Y'blueclip), и как
Figure 00000095
если Y'blueclip=min(Y'redclip,Y'greenclip,Y'blueclip);
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью вычисления первого значения ошибки
errRGB(Y'rgb)=wR(tf(Y'rgb+a13Cr)-Ro)2+wG(tf(Y'rgh-a22Cb-a23Cr)-Go)2+wB(tf(Y'rgb+a32Cb)-Bo)2;
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью вычисления второго значения ошибки
errRGBone=wR(10000-Ro)2+wG(tf(Y'gb-a22Cb-a23Cr)-Go)2+wB(tf(Y'gb+a32Cb)-Bo)2, если Y'redclip=min(Y'redclip,Y'greenclip,Y'blueclip), как errRGBone=wR(tf(Y'rb+a13Cr)-Ro)2+wG(10000-Go)2+wB(tf(Y'rb+a32Cb)-Bo)2, если Y'greenclip=min(Y'redclip,Y'greenclip,Y'blueclip), и как errRGBone=wR(tf(Y'rg+a13Cr)-Ro)2+wG(tf(Y'rg-a22Cb-a23Cr)-Go)2+wB(10000-Bo)2, если Y'blueclip=min(Y'redclip,Y'greenclip,Y'blueclip);
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью вычисления третьего значения ошибки errRGBtwo=wR(tf(Y'r+a13Cr)-Ro)2+wG(10000-Go)2+wB(10000-Bo)2, если Y'redclip=max(Y'redclip,Y'greenclip,Y'blueclip), как errRGBtwo=wR(1000-Ro)2+wG(tf(Y'g-a22Cb-a23Cr)-Go)2+wB(10000-Bo)2, если Y'greenclip=max(Y'redclip,Y'greenclip,Y'blueclip), и как errRGBtwo=wR(10000-Ro)2+wG(1000-Go)2+wB(tf(Y'b+a32Cb)-Bo)2, если Y'blueclip=max(Y'redclip,Y'greenclip,Y'blueclip); и
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью выбора Y'rgb как упомянутого значения упомянутой яркостной компоненты Y', если errRGB(Y'rgb)=min(errRGB(Y'rgb,errRGBone,errRGBtwo), Y'one как упомянутое значение упомянутой яркостной компоненты Y', если errRGBone=min(errRGB(Y'rgb,errRGBone,errRGBtwo) и Y'two как упомянутое значение упомянутой яркостной компоненты Y', если errRGBtwo=min(errRGB(Y'rgb,errRGBone,errRGBtwo).
34. Устройство по п. 28, в котором упомянутое устройство (100, 110, 120, 130) выполнено с возможностью извлечения, из поисковой таблицы и для каждого цветового канала из упомянутых красного, зеленого и синего цветовых каналов упомянутого пикселя с использованием упомянутой исходной яркости Yo и упомянутых цветностных компонентов Cb, Cr упомянутого пикселя или их квантованных версий в качестве входа, бита, указывающего, приводит ли упомянутая яркостная компонента Y', дающая упомянутую наименьшую ошибку, к обрезке упомянутого цветового канала.
35. Устройство по п. 20, в котором
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью вычисления Y'redclipZero=-a13Cr, Y'greenclipZero=a22Cb+a23Cr и Y'blueclipZero=1-a32Cb, где a13, a22, a23, a32 обозначают положительные постоянные цветового преобразования из цвета Y'CbCr в цвет R'G'B', Y' обозначает яркостную компоненту упомянутого пикселя, Cb, Cr обозначают цветностные компоненты упомянутого пикселя; и
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью проверки, приводит ли яркостная компонента Y' упомянутого пикселя, дающая наименьшую ошибку между i) яркостью Y, определенной на основании упомянутой яркостной компоненты Y', и исходной яркостью Yo, определенной на основании исходных красной, зеленой и синей цветовых компонент RoGoBo упомянутого пикселя, или ii) красной, зеленой и синей цветовыми компонентам RGB, определенными на основании упомянутой яркостной компоненты Y', и упомянутыми исходными красной, зеленой и синей цветовыми компонентами RoGoBo упомянутого пикселя, к обрезке любого из красного, зеленого и синего цветовых каналов упомянутого пикселя до нуля на основании, по меньшей мере, одного из Y'redclipZero=-a13Cr, Y'greenclipZero=a22Cb+a23Cr и Y'blueclipZero=1-a32Cb.
36. Устройство по п. 20, в котором
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью извлечения упомянутого значения упомянутой цветовой компоненты в упомянутом цветовом пространстве из первой поисковой таблицы, если упомянутая цветовая компонента в упомянутом цветовом пространстве не приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона; и
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью извлечения упомянутого значения упомянутой цветовой компоненты в упомянутом цветовом пространстве из второй, другой, поисковой таблицы, если упомянутая цветовая компонента в упомянутом цветовом пространстве приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона.
37. Устройство по п. 36, в котором
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью выбора упомянутой второй, другой, поисковой таблицы в зависимости от того, какой цветовой канал или цветовые каналы упомянутого пикселя, который(е) выходит или выходят за пределы упомянутого допустимого диапазона; и
упомянутое устройство (100, 110, 120, 130) выполнено с возможностью извлечения упомянутого значения упомянутой цветовой компоненты в упомянутом цветовом пространстве из упомянутой выбранной второй, другой, поисковой таблицы.
38. Устройство по п. 20, дополнительно содержащее:
процессор (131); и
память (132), содержащую инструкции, исполняемые упомянутым процессором (101), причем
упомянутый процессор (131) выполнен с возможностью проверки, приводит ли упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона;
упомянутый процессор (131) выполнен с возможностью получения упомянутого значения упомянутой цветовой компоненты в упомянутом цветовом пространстве с использованием упомянутой первой функции или упомянутой первой поисковой таблицы, если упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, не приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона; и
упомянутый процессор (131) выполнен с возможностью получения упомянутого значения упомянутой цветовой компоненты в упомянутом цветовом пространстве с использованием упомянутой второй, другой, функции или упомянутой второй, другой, поисковой таблицы, если упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона.
39. Устройство (140) для обработки пикселя, содержащее:
блок определения (140) для определения, приводит ли цветовая компонента упомянутого пикселя в цветовом пространстве, дающая наименьшую ошибку между, по меньшей мере, одной цветовой компонентой в другом цветовом пространстве, определенной на основании упомянутой цветовой компоненты в упомянутом цветовом пространстве, и, по меньшей мере, одной исходной цветовой компонентной упомянутого пикселя в упомянутом другом цветовом пространстве, к выходу любого цветового канала упомянутого пикселя за пределы допустимого диапазона; и
выводитель (141) значения для вывода значения упомянутой цветовой компоненты в упомянутом цветовом пространстве с использованием i) первой функции или первой поисковой таблицы, если упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, не приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона, и ii) второй, другой, функции или второй, другой, поисковой таблицы, если упомянутая цветовая компонента в упомянутом цветовом пространстве, дающая упомянутую наименьшую ошибку, приводит к выходу любого цветового канала упомянутого пикселя за пределы упомянутого допустимого диапазона.
RU2018144162A 2016-05-16 2016-11-18 Обработка пикселей с учетом цветового компонента RU2709652C1 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662337025P 2016-05-16 2016-05-16
US62/337,025 2016-05-16
PCT/SE2016/051146 WO2017200447A1 (en) 2016-05-16 2016-11-18 Pixel processing with color component

Publications (1)

Publication Number Publication Date
RU2709652C1 true RU2709652C1 (ru) 2019-12-19

Family

ID=60325420

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2018144162A RU2709652C1 (ru) 2016-05-16 2016-11-18 Обработка пикселей с учетом цветового компонента

Country Status (5)

Country Link
US (1) US10699671B2 (ru)
EP (1) EP3459256A4 (ru)
CN (1) CN109479151B (ru)
RU (1) RU2709652C1 (ru)
WO (1) WO2017200447A1 (ru)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230169689A1 (en) * 2021-11-30 2023-06-01 Texas Instruments Incorporated Suppression of clipping artifacts from color conversion
US12131504B2 (en) * 2021-11-30 2024-10-29 Texas Instruments Incorporated Suppression of clipping artifacts from color conversion

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018117948A1 (en) * 2016-12-23 2018-06-28 Telefonaktiebolaget Lm Ericsson (Publ) Chroma adjustment with color components in color spaces in video coding
US10555004B1 (en) * 2017-09-22 2020-02-04 Pixelworks, Inc. Low frequency compensated encoding
CN109842799B (zh) * 2017-11-29 2021-02-09 杭州海康威视数字技术股份有限公司 颜色分量的帧内预测方法、装置及计算机设备
US11025842B2 (en) 2019-04-05 2021-06-01 Apple Inc. Binner circuit for image signal processor
US11024006B2 (en) 2019-04-22 2021-06-01 Apple Inc. Tagging clipped pixels for pyramid processing in image signal processor
US11049286B2 (en) * 2019-07-31 2021-06-29 Hewlett Packard Enterprise Development Lp Deep neural network color space optimization
EP4415343A1 (en) * 2023-02-08 2024-08-14 Koninklijke Philips N.V. Hdr out of gamut adjusted tone mapping

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090123089A1 (en) * 2007-11-14 2009-05-14 Microsoft Corporation Adaptive filtering for image transform processes
US20130177066A1 (en) * 2012-01-09 2013-07-11 Dolby Laboratories Licensing Corporation Context based Inverse Mapping Method for Layered Codec
US20140078198A1 (en) * 2012-09-17 2014-03-20 Samsung Electronics Co., Ltd. Methods and devices for controlling operations of an organic light-emitting diode display
US20150029210A1 (en) * 2012-03-21 2015-01-29 Dolby Laboratories Licensing Corporation Systems and Methods for ISO-Perceptible Power Reduction for Displays

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0522586A (ja) * 1991-07-10 1993-01-29 Toppan Printing Co Ltd 色変換システム
US6414687B1 (en) 1997-04-30 2002-07-02 Canon Kabushiki Kaisha Register setting-micro programming system
EP1070423A1 (en) * 1999-02-05 2001-01-24 Koninklijke Philips Electronics N.V. Histogram equalization
US7298892B2 (en) * 2003-04-09 2007-11-20 Eastman Kodak Company Producing a balanced digital color image having minimal color errors
TWI489442B (zh) * 2008-04-03 2015-06-21 Sunplus Technology Co Ltd Adaptive color space conversion system and method
CN103096092B (zh) * 2013-02-07 2015-12-02 上海国茂数字技术有限公司 基于颜色空间变换进行编解码误差修正的方法和系统
CN103237225B (zh) * 2013-05-10 2016-04-20 上海国茂数字技术有限公司 利用yuv与rgb空间联合修正视频编解码误差的方法
US10134360B2 (en) * 2014-11-25 2018-11-20 Intel Corporation Compressing the size of color lookup tables
JP6516851B2 (ja) * 2015-02-13 2019-05-22 テレフオンアクチーボラゲット エルエム エリクソン(パブル) 画素の前処理および符号化
CN107615761B (zh) * 2015-05-20 2020-04-07 瑞典爱立信有限公司 用于像素处理和编码的方法、设备和计算机可读介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090123089A1 (en) * 2007-11-14 2009-05-14 Microsoft Corporation Adaptive filtering for image transform processes
US20130177066A1 (en) * 2012-01-09 2013-07-11 Dolby Laboratories Licensing Corporation Context based Inverse Mapping Method for Layered Codec
US20150029210A1 (en) * 2012-03-21 2015-01-29 Dolby Laboratories Licensing Corporation Systems and Methods for ISO-Perceptible Power Reduction for Displays
US20140078198A1 (en) * 2012-09-17 2014-03-20 Samsung Electronics Co., Ltd. Methods and devices for controlling operations of an organic light-emitting diode display

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230169689A1 (en) * 2021-11-30 2023-06-01 Texas Instruments Incorporated Suppression of clipping artifacts from color conversion
US12131504B2 (en) * 2021-11-30 2024-10-29 Texas Instruments Incorporated Suppression of clipping artifacts from color conversion

Also Published As

Publication number Publication date
EP3459256A4 (en) 2019-11-13
US20190206360A1 (en) 2019-07-04
CN109479151A (zh) 2019-03-15
EP3459256A1 (en) 2019-03-27
WO2017200447A1 (en) 2017-11-23
CN109479151B (zh) 2022-03-11
US10699671B2 (en) 2020-06-30

Similar Documents

Publication Publication Date Title
RU2709652C1 (ru) Обработка пикселей с учетом цветового компонента
RU2679239C1 (ru) Предобработка и кодирование пикселей
JP6582062B2 (ja) 画素の前処理および符号化
RU2680197C1 (ru) Кодирование пикселя входной видеопоследовательности
CN107615761B (zh) 用于像素处理和编码的方法、设备和计算机可读介质
KR102054092B1 (ko) 높은 동적 범위 색 변환 보정
WO2018231968A1 (en) Efficient end-to-end single layer inverse display management coding
CN110770787A (zh) 高效端到端单层逆向显示管理编码
CN107925778B (zh) 像素预处理和编码
Le Pendu et al. Inter-layer prediction of color in high dynamic range image scalable compression
Hanhart et al. Evaluation of JPEG XT for high dynamic range cameras
US20130100313A1 (en) Image processing device and storage medium storing image processing program