Índice do Artigo

Artigos

Upscaling: como as TVs transformam vídeos em 4K em tempo real

Melhorias no hardware e algoritmos cada vez mais eficientes permitem que sua TV aumente a resolução dos vídeos e engane até mesmo os olhares mais atentos

Upscaling: como as TVs transformam vídeos em 4K em tempo real
Créditos: NASA

Não se trata mais de uma questão de escolha. Ao contrário de outras tecnologias que prometiam uma revolução no mercado dos aparelhos de TV, mas morreram na praia, a resolução 4k já é uma realidade consolidada e cada vez é mais difícil encontrar modelos a venda sem o recurso.

Apesar de, num primeiro olhar, a mudança não representar um salto tão grande em qualidade quanto a transição da resolução standard (480p) para o FullHD(1080p), por exemplo, o aumento da resolução se torna mais necessário na medida em que as telas vão aumentando.

Em uma TV de 42 polegadas, um dos tamanhos mais populares dentre os primeiros lançamentos com suporte FullHD, a diferença de qualidade trazida pelo 4k pode beirar o imperceptível, mas cada polegada a mais na tela ajuda a evidenciar o impacto do aumento da resolução na qualidade percebida da imagem.

Tecnologia é basicamente onipresente nas novas TVs, mas conteúdo ainda é escasso

O problema é que, como é regra nesses momentos de mudança de padrões, o conteúdo disponibilizado de forma nativa em 4k ainda é um tanto restrito. Fora todo material produzido antes do surgimento do novo padrão e filmado em resoluções inferiores, há ainda limitações artificiais que não são impostas necessariamente pela tecnologia, mas por questões econômicas.

No mundo do streaming, por exemplo, além da necessidade de uma largura de banda maior para transmissão na medida que a resolução aumenta, muitos dos serviços ainda apostam no 4k como uma vantagem pela qual os consumidores estão dispostos a colocar a mão no bolso.

A Netflix, pioneira no mercado brasileiro e ainda um dos serviços mais populares, oferece planos a partir de R$ 18,90 mensais, mas quem quem utilizar ao máximo a capacidade de sua televisão nova precisa pagar mais.

E a diferença não é pequena: o suporte ao padrão 4k só está disponível no plano Premium, que sai por R$ 55,90 por mês, quase três vezes mais caro.

Diferenças de resolução atrapalham experiência

Esse descompasso entre a adoção pelo consumidor e a oferta de conteúdo na resolução maior garante que uma palavrinha seja onipresente nas especificações das TVs: upscaling.

Embora algumas marcas anunciem como “feature” de suas TVs, o upscaling está longe disso. É uma necessidade básica e disponível desde as primeiras TVs no formato HD Ready (720p).

Para entender como funciona o upscaling, a razão pela qual na prática não é possível oferecer um televisor sem ele e te ajudar a não ser confundido pelos marqueteiros na compra da sua próxima televisão, vamos começar pelo quadro abaixo.

Quadro comparativo entre os formatos mais populares de vídeo: SD, HD, FullHD e 4k UltraHD

A imagem não está na resolução correta e nem faria sentido que estivesse, porque muito provavelmente a tela na qual você está lendo este texto não suporta 4k, mas a proporção entre as diferentes resoluções foi mantida.

Tente imaginar a cena. Você instala sua TV 4k novinha, prepara a pipoca e o guaraná, esparrama no sofá, dá o play no seu Blu-ray de Beijo do Vampiro e…

Representação de conteúdo FullHD exibido em tela 4k sem upscaling

Ao invés de se deleitar com 60 polegadas de Nicholas Cage dando uma aula de sutileza e finesse ao encarnar Peter Loew, o agente literário que pensa ter sido mordido por uma vampira, precisa se contentar com uma caixinha ocupando um quarto da tela com bordas pretas ao redor.

A representação é exagerada, mas é basicamente isso que aconteceria se você tentasse rodar um filme FullHD em uma tela 4k sem nenhum processamento. A cena não causa estranheza pra quem teve a oportunidade de assistir filmes em DVD em TVs de tubo e passar raiva com as faixas pretas que ocupavam espaço precioso na tela, que muitas vezes não passava de míseras 14 polegadas.

Representação de TV de tubo exibindo filme widescreen com faixas pretas horizontais

Como preencher a tela – e não enfurecer o consumidor

E é aí que entra o upscaling. Pra garantir que 3/4 da tela não fiquem sem nada para exibir, o televisor usa um algoritmo para ampliar a imagem.

Não é nenhuma novidade. Isso já acontece desde os tempos do “HD ready” em que as imagens em “Standard Definition” eram ampliadas para preencher a tela.

Mas por que o termo upscaling nem sequer passava pela cabeça do consumidor que comprava sua primeira TV HD?

Do ponto de vista do marketing, havia tantas vantagens na troca de um aparelho que gerava imagem com um jurássico tubo de raios catódicos(CRT) por outro que usava tecnologias como LCD e plasma que isso simplesmente passava batido, mas mesmo tecnicamente a diferença absoluta na resolução de uma imagem SD para uma HD não era tão considerável.

Para entender porquê, precisamos saber o que é o pixel.

Na base de tudo, o pixel

A imagem digital é formada basicamente por uma matriz de pontos, chamados pixels. Pra ficar mais fácil, vamos imaginar uma imagem em preto e branco em 8 bits.

É como se fosse uma planilha do Excel, com linhas e colunas em que cada uma das células armazena um valor de 0 a 255. Esses valores, por sua vez, representam uma escala luminosidade que vai do preto (0) ao branco (255).

Para simplificar as coisas, vamos ignorar os 254 tons de cinza entre eles e imaginar uma tela de 10 pixels por 10 pixels que consegue exibir somente a cor preta e a cor branca. Imagino que não seria um produto de muito sucesso no mercado gamer, mas em princípio é algo bem próximo aos displays de cristal líquido de calculadoras e relógios digitais.

Demonstração de uma matriz de pixels

Reparem os valores dispostos nas linhas e colunas na imagem da esquerda. Cada célula representa um pixel e o valor numérico corresponde à sua luminosidade, mínima (0) no caso do preto e máxima (255) para o branco . Na direita podemos ver a imagem que nossa tela hipotética mostraria caso fosse real.

Como estamos usando apenas duas cores, geramos algo que costuma ser chamado de imagem binária, que poderia ser representada com somente um bit (valor 0 para preto e 1 para branco). Os outros 254 tons estão sendo desperdiçados aqui, mas vamos seguir com eles porque isso ajuda na compreensão de uma tela “real”, que precisa de muito mais variações entre o preto e o branco para exibir uma imagem com qualidade.

Podemos pensar, no caso das telas monocromáticas, como se cada pixel fosse uma pequena lâmpada cuja intensidade da luz tivesse 256 níveis diferentes. Para exibir cores, o princípio é basicamente o mesmo, mas precisamos de três lâmpadas por pixel, cada uma com sua intensidade controlada individualmente .

Padrão RGB: Transformando números em cores

Ao invés de um valor que representa somente a luminosidade, cada pixel precisa de três valores distintos, um para cada lâmpada: vermelho (R), verde (G) e azul (B). Daí que vem o termo RGB (Red, Green and Blue), que com certeza você já viu em algum lugar.

As telas de TV e monitores funcionam projetando luz em nossos olhos, por isso conseguimos enxergar a imagem até melhor em ambientes escuros.  Todas as cores são reproduzidas a partir da soma dessas três cores. Quanto maior a intensidade de cada uma das delas, mais luz chega até nossos olhos. Por isso chamamos o padrão RGB de sistema aditivo.

Matriz de cores RGB

No quadro acima usamos a mesma matriz da imagem anterior, mas dividida em três canais e invertida (O que era 0 virou 255 e vice-versa) . Em cada pixel colorido é como se somente a lâmpada da cor correspondente estivesse ligada com brilho máximo.

Já as cores do quadro abaixo são resultado da soma de dois dos três canais de cor em sua intensidade máxima. É o que aconteceria se duas das três lâmpadas de nossos pixels estivessem ligadas com força total. Se ligássemos ainda a terceira, chegaríamos ao branco.

Demonstração do sistema aditivo de cores

Repare que a soma das cores do sistema aditivo em sua forma “pura” gerou as cores ciano(C), magenta(M) e amarelo(Y), que certamente são bastante familiares para quem trabalha com design gráfico, ou mesmo para quem tem impressora com tanques individuais para cada cor. Elas, junto com o preto, são a base do sistema subtrativo (CMYK), que é a forma padrão para reproduzir cores através da mistura de tintas.

Mais de 16 milhões de variações a partir de três cores

Usando somente dois valores possíveis para cada cor, chegamos a um total de 8 cores (vermelho, verde, azul, ciano, magenta, amarelo, branco e preto). Se usarmos todas as combinações possíveis dentre os 256 valores possíveis para cada canal chegamos a mais de 16 milhões de cores. Isso para cada um dos pixels.

Compreendida a teoria, fica mais simples entender como as TVs geram imagens coloridas. Funciona da mesma forma que nossa tela imaginária, mas em uma escala absurdamente maior.

Ao invés das parcas 10 linhas e colunas de nossa tela hipotética, são 1080 linhas e 1920 colunas em FullHD. Em uma imagem 4k, você basicamente precisa multiplicar tudo por 4.

Há variações de acordo com cada tecnologia (LED, OLED, Plasma..), mas basicamente todas as telas hoje seguem esse princípio, seja em uma TV de 90 polegadas, ou num minúsculo smartwatch. 

Esses pixels que criamos na nossa tela imaginária baseada numa planilha do Excel existem de forma física na tela da TV. Cada um deles é um pequeno ponto com três fontes de luz, uma de cada cor, que variam em intensidade pelo menos em 256 níveis. A soma da luz dessas três fontes vai gerar a cor do pixel.

Ao contrário de uma planilha do Excel, em que podemos aumentar ou diminuir o tamanho de cada coluna para termos um número maior ou menor de células no mesmo espaço, no “mundo real” a coisa é bem diferente. Cada pixel tem um tamanho fixo e todos precisam ser “acesos”, ou então em seu lugar haverá um ponto preto, como às vezes acontece em telas com defeito em que um ou mais pixels param de funcionar. 

Isso significa que a tela 4k precisa de valores R, G e B para todos os pixels de suas 3840 colunas e 2160 linhas.

O que fazer então se a matriz do seu vídeo só tem 1920 colunas e 1080 linhas?

Aí que entra o upscaling.

O tamanho do problema

Como não é possível reduzir o número de pixels da tela, porque eles são estruturas físicas, e a informação necessária para “criar” a cor do pixels faltantes simplesmente não existe, a TV precisa de alguma forma aumentar as dimensões da imagem e “adivinhar” quais seriam as cores dos pixels que foram criados com esse aumento.

E esse processo é bem trabalhoso. Pensemos num vídeo que tem 30 quadros por segundo e resolução FullHD. É só pegar a calculadora que fica bem evidente o desafio computacional em que consiste o processo de “esticar” este conteúdo para que preencha a tela 4k. 

Enquanto vídeo original tem “míseros” 2.073.600 pixels por quadro, são 8.294.400 pixels por quadro numa tela de 4k. Sim, ambos os números estão na casa dos milhões.

Isso significa que a TV vai ter de “criar” três valores de 0 a 255 por 6.220.800 vezes em cada quadro. Isso é mais informação do que há no vídeo original e essa operação se repete 30 vezes por segundo.

Na realidade há  algoritmos de compressão e outros processos que facilitam um pouco a coisa e reduzem esse número na prática. Partes fixas de uma cena, por exemplo, não são recalculadas a cada quadro e isso diminui bastante a capacidade de processamento necessária. Ainda assim, é muita coisa.

Algoritmos de upscale: um mesmo objetivo, diferentes métodos e resultados

Para ampliar a imagem, basicamente a TV tenta “adivinhar” qual seria o valor desses pixels que existiriam na imagem caso ela tivesse sido capturada ou produzida originalmente em 4k.

Podemos até dizer que é um chute, mas como a chance de acertar aleatoriamente um valor razoável dentre os milhões possíveis para cada um dos pixels é praticamente nula, foram desenvolvidos alguns algoritmos que garantem pelo menos que a bola vá na direção da trave do time adversário – e que não se faça um gol contra.

Esse processo de “chute embasado” é chamado de interpolação e já é usado há muito tempo, em suas diversas formas, em outras áreas do conhecimento. É uma forma comum de se preencher lacunas de dados estatísticos em pesquisas sem que haja comprometimento muito grande do resultado final, por exemplo. 

Muitas das técnicas de interpolação já são bem conhecidas e documentadas, mas nenhuma é perfeita. Algumas são mais gentis com o hardware no processamento de imagens, enquanto outras exigem um sistema mais robusto, por exemplo, mas o mais complicado é que o resultado de cada processo depende muito do tipo de imagem que se está tentando ampliar. É isso que vamos tentar mostrar a seguir.

Interpolação por vizinho mais próximo

Provavelmente a técnica mais simples, mais antiga e mais utilizada é a interpolação por vizinho mais próximo. O nome é esquisito, mas é basicamente autoexplicativo: atribui-se ao pixel cujo valor é desconhecido o valor do pixel conhecido mais próximo. É um método fácil, rápido, que exige pouco poder de processamento, mas que é o mais adequado somente em alguns poucos casos.

Para demonstrar o princípio, o mais fácil é voltar para bom e velho Excel. Vamos começar processando apenas uma linha com 4 colunas com pixels das cores verde e vermelho. 

Demonstração prática da interpolação por vizinho mais próximo

Na segunda linha da imagem imagem é possível ver que se quisermos que nossa linha passe a ter 10 colunas, 6 novos pixels terão de ser criados e não inicialmente não sabemos quais são seus valores. Já na terceira, aplicamos a interpolação por vizinho mais próximo, em que cada um dos pixels cuja cor é desconhecida assume a cor daquele mais próximo cuja cor já sabemos

Na prática é como se os pixels ficassem maiores e não há perda de proporção, suavização bordas e nem redução de contraste, por exemplo. Essa forma de interpolação é perfeita para figuras simples como códigos de barras e QR codes, imagens em que há somente linhas retas, ângulos de 90 graus e duas cores sólidas, sem gradientes.

Para ter uma ideia mais precisa dos efeitos, vamos aos exemplos práticos.

Demonstração do algoritmo de interpolação por vizinho mais próximo com o logotipo do Mundo Conectado

Na imagem acima vemos o logotipo do Mundo Conectado na resolução que se encontra no cabeçalho das nossas páginas e ampliado para 2x e 3x o tamanho original usando a interpolação por vizinho mais próximo.

Demonstração do algoritmo de interpolação por vizinho mais próximo com o foto de Neil Armstrong

E agora uma das imagens em domínio público mais famosas da história. O rosto do primeiro homem a pisar na lua, Neil Armstrong, extraído da foto oficial da missão Apollo 11.

Mantivemos propositalmente o crachá com o nome para demonstrar o efeito do algoritmo sobre o texto. A imagem foi reduzida em 2x e 4x e ampliada novamente para ficar com o mesmo tamanho da original, sempre utilizando a interpolação por vizinho mais próximo.

Os exemplos mostram claramente as limitações do modelo em imagens mais complexas. Não há o estabelecimento de um gradiente que suavize a transição de uma cor para outra e isso faz com que a imagem fique com uma aparência quadriculada. Os próximos modelos buscam remediar esta questão, mas não sem trazer consigo outras limitações.

Interpolação Bilinear 

Também bastante popular, o upscaling por interpolação bilinear busca suavizar o aspecto quadriculado com o uso de uma técnica um pouco mais refinada, mas que demanda maior capacidade de processamento. 

Ao invés de simplesmente repetir os valores do pixel mais próximo, o algoritmo faz uma média dos valores dos quatro pixels mais próximos daquele cujo valor está sendo estimado. 

Isso resulta em uma imagem mais suave e agradável, especialmente no caso de fatores de ampliação pequenos. O custo dessa suavidade é a perda de detalhes nas linhas da imagem original, que deixam de ser marcantes. No final tudo fica com um aspecto um pouco desfocado

A utilização de um valor médio também  tem um problema adicional quando se trata de imagens binárias, compostas por somente duas cores. Se há pixels brancos e pretos no entorno daquele cujo valor se quer estimar, o algoritmo irá retornar uma média das duas cores: um tom de cinza que não consta na imagem original. Isso pode gerar problemas na leitura de informações como códigos de barras e QR codes.

Vamos novamente aos nossos exemplos práticos, primeiro com o logotipo do Mundo Conectado.

Demonstração do algoritmo de interpolação bilinear com o logotipo do Mundo Conectado

E com o astronauta Neil Armstrong.

Demonstração do algoritmo de interpolação bilinear com o foto de Neil Armstrong

A diferença é bem considerável. A imagem fica muito mais suave, mas há uma perda bem considerável de detalhes. Funciona muito bem em algumas partes, mas deixa a desejar em outras.

Interpolação Bicúbica

Pode-se dizer que a interpolação bicúbica é uma evolução da interpolação bilinear. O processo é basicamente o mesmo, baseado na média dos valores dos pixels no entorno daquele cujo valor está sendo estimado, mas há duas mudanças fundamentais.

A primeira trata da amostragem utilizada, que passa de quatro para os dezesseis pixels mais próximos do que está sendo estimado. Esse aumento sozinho não garantiria uma maior precisão na estimativa e poderia deixar a imagem ainda mais borrada em alguns casos. Para evitar isso, há introdução de mais um fator que torna o cálculo mais complicado. 

Ao invés de uma média simples dos valores, na interpolação bicúbica há uma ponderação com base na distância absoluta dos pixels. É como se houvesse a aplicação de um peso diferenciado que garante que os pixels mais próximos influenciem mais na construção da média.

Vamos aos exemplos para ver a diferença na prática.

Demonstração do algoritmo de interpolação Bicúbica com o logotipo do Mundo Conectado

Em uma imagem relativamente simples como nosso logotipo, a diferença não é suficiente pra deixar ninguém boquiaberto, mas existe. Há uma preservação um pouco maior dos detalhes da imagem original com aparência menos difusa dos limites de cada caractere, por exemplo.

Demonstração do algoritmo de interpolação Bicúbica com foto de Neil Armstrong

Mesmo na fotografia a conclusão é parecida. Há uma maior preservação dos detalhes e uma aparência menos desfocada, em especial na versão com ampliação para 2x.

Mas e qual é o melhor algoritmo?

Pode ser frustrante, mas infelizmente a resposta provavelmente fica entre “não é possível dizer” e “depende”.

A diferença entre os métodos é bastante clara, e isso é perceptível mesmo tomando como base somente nosso curto teste. Há casos em que a interpolação bicúbica gera a imagem mais agradável, mas em outras ocasiões a técnica do vizinho mais próximo é a mais adequada.

Mesmo levando em consideração somente a percepção de qualidade da imagem final não é fácil estabelecer um vencedor, mas a realidade é ainda mais complicada e há muitos outros fatores que precisam ser considerados.

Processando somente uma imagem de cada vez o desempenho do algoritmo pode praticamente ser ignorado. Em um aparelho de TV ou monitor que precisa processar mais de 30 imagens de todo tipo por segundo, a coisa muda de figura.

Abordar estes três métodos é apenas arranhar a superfície do tema. Há diversos outros algoritmos mais complexos e na prática é extremamente improvável que um televisor projetado nos últimos anos utilize somente uma técnica de interpolação.

Como cada um se destaca em um tipo de imagem ou critério, há vantagens consideráveis na combinação de mais de um método em um mesmo quadro, “fatiando” a imagem e processando individualmente partes com diferentes características. 

Inteligência artificial pode melhorar processamento e aumentar qualidade da imagem final

Assim como vários outros campos, o avanço rápido da inteligência artificial e do machine learning promete causar uma revolução no processamento de imagens. 

Certamente a utilização destes recursos já é realidade em muitos sistemas proprietários das grandes fabricantes e esse parece um caminho sem volta.

Não só sistemas inteligentes trariam uma vantagem na escolha certa do algoritmo de upscale para cada quadro, mas é possível, por exemplo, que uma IA reconheça um ator e se baseie em imagens feitas de forma nativa em 4 ou 8k na renderização do upscale. Assim, ao invés de “adivinhar” os pixels que faltam, é possível referenciar outra fonte.

Com cenários como as ruas de Nova Iorque e Los Angeles que já foram exaustivamente filmadas e exibidas em filmes e séries, o processo tem tudo para ser ainda mais simples

No que diz respeito ao potencial do uso de sistemas inteligentes, o processamento de imagens é mais um campo em que o céu parece ser o limite.

Upscaling não é novidade, mas é cada vez mais necessário

Em conclusão, embora o upscaling já esteja presente nas TVs de forma silenciosa há muito tempo e seja uma tecnologia onipresente, o termo representa muito mais que puro marketing.

Embora todas utilizem a tecnologia, a qualidade do sistema de upscale faz toda a diferença em uma TV de alta resolução e isso não deve mudar tão cedo. 

Você certamente usará o upscaling muito mais do que imagina, então vale a pena prestar atenção nele.

Antes de passar o cartão e levar a sua nova TV para casa, peça para o vendedor trocar o vídeo de demonstração que roda nos modelos expostos por algum outro vídeo em resolução inferior.

Uma alternativa simples é sintonizar as emissoras abertas locais e comparar a qualidade da imagem com a de outros modelos.

Mesmo com a crescente produção de conteúdo em 4k nativo, sempre haverá um acervo virtualmente interminável de produtos audiovisuais gravados em menor qualidade

E todo esse processo se repete a cada nova tecnologia. O 8k já está ganhando espaço no mercado e certamente há novos padrões em desenvolvimento.  

O descompasso entre a oferta de conteúdo e o ritmo das vendas de aparelhos compatíveis com novos padrões de resolução não é inédito e não deve acabar.

Ainda bem que temos o upscaling e ele está cada vez melhor.

Via: Towards Data Science, Vinc Mazet – Basics of Image Processing

Via: Towards Data Science, Vinc Mazet – Basics of Image Processing