Que algoritmo de redimensionamento escolher para vídeos?

17

Estou usando o VirtualDub para codificar com os configurações .

No entanto, gravo minhas coisas em 1920x1080 e redimensiono para 1280x720. Agora, a pergunta: qual algoritmo devo escolher ao tomar uma decisão de qualidade equilibrada vs. tamanho de arquivo?

Eu sempre fui com o Lanczos porque era o que estava pré-configurado. Essas descrições realmente não ajudam em nada na minha pergunta.

    
por Grumpy ol' Bear 07.01.2012 / 11:17

3 respostas

21

Por que isso importa?

Pode-se argumentar que os filtros de redimensionamento não importam muito quando você faz downscale em um vídeo. Mais importante, eles têm um impacto na qualidade do upscaling, porque você precisa gerar dados onde não existe, em primeiro lugar.

Todos esses filtros têm apenas um impacto marginal no tamanho do arquivo. Você, portanto, não deve se preocupar com grandes diferenças lá.

O fato é que, como sempre, quando codifica vídeo, o resultado depende muito do material de origem. Você nem sempre pode prever o resultado, mas veja o que funciona melhor para você.

Algoritmos diferentes

Como exemplo, aqui está bicubic vs. interpolação bilinear :

Veja que a interpolação bicúbica resulta em arestas mais suaves? Essa é uma afirmação muito genérica… mas você pode encontrar uma visão geral dos algoritmos de escalonamento de imagens aqui .

  • A interpolação bilinear usa um ambiente 2x2 de um pixel e, em seguida, leva o média desses pixels para interpolar o novo valor. Não é o melhor algoritmo, mas rápido.

  • A interpolação bicúbica usa um ambiente 4x4 de um pixel, pesando o mais interno pixels mais altos e, em seguida, pega a média para interpolar o novo valor. É - até onde eu sei - o mais popular.

  • A média de área usa um mapeamento de pixels de origem e de destino, calculando a média dos pixels de origem em relação à fração de pixels de destino cobertos. De acordo com esta página , deve produzir melhores resultados ao reduzir a amostragem.

  • Spline e sinc usa polinômios de ordem superior e, portanto, é mais difícil de calcular que a interpolação bicúbica. Eu não acho que o aumento global no tempo de processamento vale a pena usá-los.

  • A resampling do Lanczos também envolve um filtro sinc.

  • hqx e filtros 2xSaI são usados para dimensionamento de pixel-art (por exemplo, emuladores de jogos). Eu não acho que haja uma boa razão para usá-los em vídeo.

Comparação de Jeff Atwood

Acontece que Jeff Atwood fez uma comparação dos algoritmos de interpolação de imagens . Sua regra prática era usar a interpolação bicúbica para redução da amostragem e interpolação bilinear ao fazer upsampling. No entanto, ele também mencionou que…

Reducing images is a completely safe and rational operation. You're simply reducing precision and resolution by discarding information. Make the image as small as you want, and you have complete fidelity-- within the bounds of the number of pixels you've allowed. You'll get good results no matter which algorithm you pick. (Well, unless you pick the nave Pixel Resize or Nearest Neighbor algorithms.)

Aqui estão mais alguns exemplos de algoritmos de interpolação de imagens , incluindo os que mencionei acima.

Então, qual escolher?

Eu finalmente encontrei um documento da cena de codificação de vídeo que explicitamente proíbe filtragem bicubica. Em vez disso, endossa a reamostragem de Lanczos, Spline ou "Blackman". Esses caras provavelmente sabem do que estão falando, então talvez você queira apenas se ater à filtragem do Lanczos.

    
por 07.01.2012 / 12:20
4

Encontrei uma boa imagem que documenta um pouco disso.

Versãocompleta aqui .

Em geral, você deseja um efeito de nitidez suave ao transformar uma imagem maior em uma menor e um efeito de desfoque suave ao transformar uma imagem menor em uma maior. O conjunto de filtros MadVR é padronizado para o Lanczos para upscaling e bicubic para downscaling.

    
por 16.08.2016 / 10:15
2

Você está convertendo pixels originais 3x3 em pixels alvo 2x2.

Se você quiser manter linhas nítidas, escolha Lanczos ou algo que use mais pixels adjacentes para não desfocar linhas nítidas (como peles ou reflexos)

Caso contrário, a área média, etc (também bilinear / trilinear) seria suficiente.

    
por 24.04.2012 / 14:13