Os formatos de vídeo suportam perfis de cores?


7

Recentemente, eu estava lendo um wiki, dedicado a um programa de desenho animado popular e me deparei com um problema interessante :quadros das diferentes lojas regionais do iTunes

Da esquerda para a direita: quadros da versão iTunes dos EUA, iTunes australiano e iTunes dos EUA com CC em um player de vídeo

Como você pode ver, é o mesmo quadro, mas as cores são diferentes. Então, isso me faz pensar: o contêiner H.264 padrão / MP4 suporta qualquer tipo de perfil de cores (como ICC em JPEG) e, se sim, algum player é compatível? E quanto aos discos de DVD / Blu-Ray? Ou não há como assistir a mesma versão de qualquer vídeo, como foi filmado por seus criadores? Obrigado. :)

Respostas:


7

A maioria dos formatos de vídeo (quase todos) não permite a incorporação de perfis de cores ICC personalizados. (Melhoramento / correção: os MP4s podem ter perfis de cores marcados nos metadados de um arquivo de vídeo.) A maioria dos vídeos no consumidor é destinada ao espaço de cores REC.709. O sRGB é semelhante e usa as mesmas primárias. A transcodificação (incluindo compactação) quase sempre resultará em uma ligeira mudança na precisão das cores, saturação, curva gama ou alteração de nível de preto e branco. Isso piorou devido à conversão entre os espaços de cores RGB e YCbCr.


Eu não estava realmente satisfeito com a primeira resposta e obrigado por apontar para a Rec.709, por isso marquei esta como a resposta "aceita".
Oleg Kuznetsov

@OlegKuznetsov - aliás, não sinta a necessidade de aceitar uma resposta se realmente não achar que a pergunta foi totalmente respondida. É perfeitamente aceitável que as perguntas permaneçam sem resposta até que uma resposta seja encontrada. Fico feliz que a resposta de Nick tenha sido mais útil.
AJ Henderson

4

Como foi filmado por seus criadores, é uma espécie de conceito nebuloso, principalmente quando a compressão está envolvida. A reprodução de cores varia muito de um dispositivo para outro e sem uma tela calibrada e uma cadeia completa de controle de cores voltando à fonte, você não será exato. Mesmo assim, há boas chances de que, em algum ponto da linha, os espaços de cores não correspondam exatamente.

Fica ainda mais difícil quando você entra na compactação porque a compactação afeta as cores. As cores são generalizadas sutilmente por compressão. Quanto maior a área de uma imagem que ela pode simplificar (especialmente para itens como desenhos animados), menor a imagem. Provavelmente, a ligeira faixa de cores que é vista nesse quadro não existe no original, no entanto, como o H264 agrupa cores semelhantes e as simplifica para uma, acaba causando um efeito de faixa.

Em resumo, para um formato com perdas, um perfil de cores não resolverá o problema, pois a cor não é preservada exatamente de qualquer maneira. Isso pode ajudar a melhorá-lo um pouco, mas ainda haverá alterações de cores devido à compactação.


Você obtém faixas com codecs de vídeo se sua taxa de bits for muito baixa, mas eles não produzem nada como as diferenças sistemáticas que você vê quando o RGB-> yuv usa uma fórmula e o yuv-> RGB usa uma diferente. Você pode ver na pergunta original a diferença óbvia depois de decodificar as imagens compactadas com perdas do iTunes.
Peter Cordes

2

O h.264 suporta várias informações de cores no fluxo de bits. De x264 --fullhelp:

--range <string>        Specify color range ["auto"]
                      - auto, tv, pc.
--colorprim <string>    Specify color primaries ["undef"]
                      - undef, bt709, bt470m, bt470bg, smpte170m,
                        smpte240m, film, bt2020.
--transfer <string>     Specify transfer characteristics ["undef"]
                      - undef, bt709, bt470m, bt470bg, smpte170m,
                        smpte240m, linear, log100, log316,
                        iec61966-2-4, bt1361e, iec61966-2-1,
                        bt2020-10, bt2020-12.
--colormatrix <string>  Specify color matrix setting ["???"]
                      - undef, bt709, fcc, bt470bg, smpte170m,
                        smpte240m, GBR, YCgCo, bt2020nc, bt2020c.
--chromaloc <integer>   Specify chroma sample location (0 to 5) [0].

Portanto, acho que não é possível incorporar um perfil de cores personalizado, mas você pode indicar qual padrão o decodificador deve usar para produzir valores de pixels RGB.

Eu pensei que alguns formatos de contêiner também poderiam conter informações sobre espaços de cores, mas talvez não.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.