ColorMatrix

Общая информация

автор: Wilbert Dijkhof и другие
версия: 1.9
загрузка: http://www.avisynth.org/warpenterprises/
категория: Разнообразные другие плагины
требования: 

лицензия: GPL


Использование

ColorMatrix (clip, string "mode", bool "interlaced", bool "mmx", bool "hints", string "d2v", bool "debug")

Описание фильтра

ColorMatrix корректирует цвета потоков MPEG-2 DVD. Более корректно, многие MPEG-2 потоки используют слегка отличающиеся коэффициенты (называемые Rec.709) для хранения цветовой информации, чем это делают подпрограммы преобразования цвета AviSynth или XviD/DivX декодеры (называемые Rec.601), с тем результатом, что клипы DivX/XviD или MPEG-2, закодированные TMPGEnc/QuEnc отображатся со слегка смещенными цветами (что выглядит подобно небольщой разницы в яркости). Это может быть проверено путем открытия потока MPEG-2 прямо в VirtualDubMod.

Данный фильтр пересчитывает YUV величины (используя по умолчанию режим mode = "Rec.709->Rec.601"), предполагая коэффициенты, которые используются AviSynth/VDub/DivX/XviD, со следствием, что Ваше финальное кодирование (MPEG-2 or MPEG-4) отображается корректно. Однако, Вы можете также использовать hints = true вместо указания d2v-file d2v = filename, что делает коррекцию автоматически, если она необходима. Смотри Опции для больщей информации.

В случае, если Вы захватили что-либо, или Вы имеете XviD/DivX (оба кодированы с Rec.601 коэффициентами), и Вы хотите закодировать это в mpeg-2 используя CCE (который предполагает Rec.709 коэффициенты), Вы должны использовать следующий скрипт (прогрессивный материал)

ColorMatrix(clip, mode="Rec.601->Rec.709")

Следующий скрипт конвертирует YV12/YUY2 поток в RGB, используя Rec.709 коэффициенты (что может быть полезно, если Вы хотите преобразовать DVD в MPEG-2 используя TMPGEnc)

ConvertToRGB(clip, matrix="Rec.709")

Это должно дать те же результаты как

ColorMatrix(clip, mode="Rec.601->Rec.709")
ConvertToRGB()

Заключительное замечание. Данный фильтр будет поджимать=подрезать (clamp=round) входное видео до величин, удовлетворяющих CCIR-601 (эти диапазоны есть 16-235 для компоненты яркости и 16-240 для цветности).

Опции

mode - режим (по умолчанию "Rec.709->Rec.601")

mode может быть "Rec.601->Rec.709" or "Rec.709->Rec.601", смотри Описание данного фильтра для примеров, когда использовать эти опции. Отметьте, что эта опция будет переопределена при использовании hints = true или d2v = filename.

interlaced (по умолчанию - false)

Для чересстрочного материала используйте

Mpeg2source("F:\TestStreams\avs\AguileraGrammies.d2v", info=3) # для dgdecode v1.20 или новее
ColorMatrix(hints=true, interlaced=true)
или если Вы не хотите использовать подсказки (hints)
Mpeg2source("F:\TestStreams\avs\AguileraGrammies.d2v")
ColorMatrix(interlaced=true)

mmx (по умолчанию - true)

Из-за разницы округления, выход MMX (присутствует только для YV12) и C не являются точно одинаковыми. Максимальное отличие на плоскости Y это +-2 и для UV это +-1. Параметр mmx включен, чтобы отменить использование mmx-оптимизации, если вы хотите обойтись.

ColorMatrix(clip, mode="Rec.601->Rec.709", mmx=false)

hints - подсказки (по умолчанию - false)

DGDecode v1.20 и более новые версии выводят колориметрические подсказки в видео. Колориметрпическая информация (смотри Колориметрия) может быть просмотрена используя

Mpeg2source("F:\TestStreams\avs\AguileraGrammies.d2v", info=1)

Подсказки используются, если установлено info=3 in Mpeg2source, установлено hints = true в ColorMatrix и если ColorMatrix используется сразу после загрузки видео

Mpeg2source("F:\TestStreams\avs\AguileraGrammies.d2v", info=3)
ColorMatrix(hints=true)

Если подсказки не передаются (например из-за того что используется неверная версия dvd2avi/dgdecode), это приведет к ошибке.

Технически (хотя я никогда не видет таких потоков) колориметрическая информация может быть разной на протяжении видео, опция подсказок (hints) будет обращаться с этим корректно.

d2v

Если указывается d2v файл, то колориметрическая информация будет браться прямо из него самого.

Mpeg2source("F:\TestStreams\avs\AguileraGrammies.d2v")
ColorMatrix(d2v="AguileraGrammies.d2v")

Это полезно, когда колориметрическая информация не меняется на протяжении Вашего видео (как всегда в большинстве случаев), так как это намного быстрее чем использование подсказок. Если произойдет, то это приведет к ошибке. Если d2v- файл помещен в другом каталоге, чем AviSynth скрипт, Вы должны дать полный путь к d2v-файлу.

Для интересующихся людей, это есть данная (и последующие) строка(и) в файле d2v

800 5 0 8210 0 0 32 32 92 b2 b2 a2 b2 b2 a2 b2 b2 a2

Я сделал колориметрическую информацию жирным шрифтом. Смотри Колориметрия для объяснений этой информации.

debug - отладка

Вы можете использовать debug = true, чтобы проверить, что подсказки обнаруживаются. Выводит отладочную информацию через OutputDebugString() (используйте утилиту DebugView для просмотра этой информации).

Колориметрия (Colorimetry)

Это список всех возможностей согласно спецификациям mpeg-2 и DGDecode, и после этого как GSpot называет это

1 ITU-R BT.709 I709
4 FCC (почти то же самое как ITU-R BT.601) FCC
5 ITU-R BT.470-2 (точно как ITU-R BT.601)
(рекомендации BT.601 это обновление BT.470-2)
I470
6 SMPTE 170M (точно как ITU-R BT.601) S170
7 SMPTE 240M (почти такое же как ITU-R BT.709) S240

Для ColorMatrix мы предполагаем I709 = S240 и I470=FCC=S170, так как ошибка будет очень малой.

Фоновая информация

Существуют несколько способов преобразования поток YUV в RGB. Наиболее хорошо известный способ использует коэффициенты Rec.601. Это например используется в функциях цветовых преобразрваний AviSynth, VirtualDub и XviD/DivX. При проигрывании XviD/DivX поток преобразуется в RGB с использованием коэффициенты Rec.601. Основной вопрос в том, что иногда используются другие коэффициенты для преобразования YUV в RGB conversion (два других есть коэффициенты Rec.709 и коэффициенты FCC). Проблема происходит, если поток кодируется с использованием одного набора коэффициентов (Rec.709 для многоих dvd потоков например), и где-то в цепочке перекодирования-обработки-проигрывании предполагается другой набор коэффициентов (Rec.601 для XviD/DivX декодера или FCC коэффициенты для TMPGEnc/QuEnc или Rec.709 коэффициенты для CCE). Вы получите небольщое искажение цвета, которое выглядит подобно изменению в яркости (это в действительности не является изменением яркости, цвета просто слегка не те).

Как вы узнаете, какой набор коэффициентов используется при кодировании MPEG-2 потока? Иногда коэффициенты хранятся в заголовке MPEG-2 файла (поле "matrix coefficients" в расширении отображения последовательности ("sequence display extension")). Новые версии GSpot способны прочитать эту часть заголовка, но также и DGDecode (с Mpeg2source(info=1)) может быть использовано чтобы просмотреть их. Если данное расширенное поле не присутствует в заголовке MPEG-2 файла, спецификация говорит, что мы предполагаем использовать по умолчанию коэффициенты Rec.709 (0.2126, 0.7152, 0.0722).

Ссылки

пользователи сообщают проблему - получение разной яркости при сравнении скрипта avs с открытием mpeg2 прямо VDubMod.
фоновая информация - doom9 ветка о проблеме.
Поле "matrix coefficients" указывает набор коэффициентов данный в Table 6-9 ISO/IEC 13818-2, раздел 6.3.6 (Rec.709 не совсем корректен).
ITU-R_BT.709 - вы можете получить три свободных рекомендации на существующий email адрес.

Версии

v1.9, 23th February 2005 (by tritical)

v1.8, 13th February 2005 (by tritical)

v1.7, 30th January 2005 (by tritical)

v1.6, 29th January 2005 (by Wilbert)

v1.5, 30th October 2004 (by Wilbert)

v1.4, 26th October 2004 (by Wilbert)

v1.3, 4th of October 2004 (by Manao)

v1.2, 12th September 2004 (by Sh0dan)

v1.1, 12th September 2004

v1.0, 11th September 2004

$English Date: 2005/07/10 16:11:01 $
Русский перевод 02.10.2005 Fizick http://bag.hotmail.ru