minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Nota: Referimo-nos ao Método de Aprendizagem do Círculo Dourado (O que é a Regra do Círculo Dourado? -> Modelo da Regra do Círculo Dourado, este artigo usa: por que-o quê) para aprender a codificação de áudio e vídeo H264. Esta série de artigos concentra-se na compreensão do sistema de conhecimento e dos métodos práticos de codificação de vídeo. O aspecto teórico explicará mais sobre a origem dos conceitos em áudio e vídeo e a conexão entre vários conceitos. Saiba como é, saiba por que é assim. Ao mesmo tempo, é dada maior ênfase ao estabelecimento de sistemas de conhecimento.
Neste artigo, falamos principalmente sobre o processo de compactação de dados H.264 e conceitos relacionados. A compactação de dados H.264 tem apenas um propósito: compactar, compactar e recompactar para reduzir o tamanho dos dados de vídeo e, ao mesmo tempo, garantir a máxima qualidade de imagem possível. Portanto, antes de aprender a compactação de dados H.264, devemos primeiro entender: Embora existam muitos conceitos e métodos envolvidos neste processo, todos os métodos e processos são para este propósito: compactação.
O processo de compactação de dados do H.264 é resumido principalmente nas seguintes etapas principais: divisão de macrobloco e divisão de subbloco -> agrupamento de quadros -> previsão de quadros -> transformação discreta de cosseno inteiro (DCT) -> compactação CABAC. As instruções específicas de expansão são as seguintes.
Bloco macro: Pode-se entender que quando o quadro de vídeo é enviado para o buffer do codificador H264, o codificador divide blocos macro em cada imagem. Por padrão, a codificação H264 usa uma área de 16X16 pixels como macrobloco (H265 usa uma área de 64X64 pixels). O efeito de dividir um quadro do vídeo em macroblocos é o seguinte:
Ao mesmo tempo, na imagem acima, podemos dividir o bloco macro de 16X16 pixels em subblocos menores. O tamanho do subbloco pode ser 8X16、16X8、8X8、4X8、8X4、4X4 é muito flexível. O objetivo de dividi-lo novamente em subblocos é registrar esses dados com dados muito pequenos. Após a divisão dos macroblocos, todas as imagens no cache do codificador H264 podem ser agrupadas.
A divisão de macroblocos e subblocos permite que a codificação de vídeo analise e processe o conteúdo de vídeo com mais precisão e obtenha uma compactação de dados mais eficiente. Os quadros de vídeo são divididos em macroblocos de tamanho 16x16 pixels, e esses macroblocos podem ser divididos em blocos menores, como 8x8, 8x4, 4x8, etc., para acomodar a complexidade do conteúdo da imagem.
O agrupamento de quadros (estrutura GOP) é definido antes da intra-predição e da inter-predição. No processo de codificação de vídeo, a configuração do agrupamento de quadros é uma das etapas iniciais, que determina a organização e a ordem de codificação dos quadros de vídeo. O principal objetivo do agrupamento de quadros é reduzir a redundância de dados. A redundância de dados de vídeo é dividida principalmente em duas categorias:
Etapas de execução do agrupamento de quadros H264:
Quando o agrupamento é concluído, o problema de compressão de predição de quadros começa a ser resolvido.
Esta parte inclui principalmente previsão intra-quadro e previsão inter-quadro. A previsão intra-quadro consiste em compactar quadros de imagem estáticos, prever o valor do pixel de cada macrobloco por meio de 9 modos diferentes e, em seguida, calcular o valor residual com a imagem original. Predição entre quadros (estimativa de movimento e compensação de movimento): Para quadros P e quadros B, encontre o vetor de movimento entre o quadro anterior ou dois quadros por meio da estimativa de movimento e, em seguida, execute a previsão de compensação de movimento, gere uma imagem prevista e calcule o resíduo do quadro atual.
Nota: A ordem da predição intra e inter predição depende do tipo de quadro codificado e da estratégia de codificação. Em uma implementação real de codificador de vídeo, essas etapas fazem parte do processo de codificação e são tratadas automaticamente pelo codificador. Não precisa ser quem cuida disso primeiro.
Compressão de previsão intra-quadro: resolve o problema de redundância de dados espaciais. Os dados redundantes do espaço aéreo referem-se à cor, brilho, etc., que se destinam principalmente a informações insensíveis ao olho humano. A codificação é compactada por exclusão.O princípio utilizado na previsão intra-quadro é que o olho humano tem um certo grau de reconhecimento de imagens. É muito sensível ao brilho de baixa frequência e menos sensível ao brilho de alta frequência.(Pode ser entendido como um tamanho de macrobloco de 16X16. No H264, outros dados são previstos através dos 16 pixels superiores e dos 16 pixels mais à esquerda, de modo que as informações de representação de pixel que originalmente requerem 16*16=256 podem ser convertidas para 16+ 16-1 =31 pixels para representar informações)。
Compressão de previsão entre quadros (estimativa e compensação de movimento): resolve o problema de redundância de dados no domínio do tempo. Existem vários quadros no vídeo organizados linearmente em ordem cronológica. A correlação entre os quadros é muito forte, portanto há muitos dados que podem ser excluídos entre os quadros.Após a compactação, ele será dividido em três tipos: quadro I, quadro P e quadro B.(Explicação: Princípio de estimativa e compensação de movimento: o codificador H264 primeiro retira dois quadros de dados de vídeo do cabeçalho do buffer em sequência e, em seguida, executa a varredura de macroblocos. Quando se descobre que há um objeto em uma das imagens, ele irá procurar a posição próxima (na janela de pesquisa). Se o objeto for encontrado em outra imagem neste momento, o vetor de movimento do objeto pode ser calculado.。
Para quadros P e quadros B, a estimativa de movimento é usada para encontrar o vetor de movimento entre o quadro anterior ou dois quadros e, em seguida, a previsão de compensação de movimento é realizada para gerar uma imagem prevista e o resíduo com o quadro atual é calculado.
Esta etapa realiza principalmente a transformação DCT no resíduo de predição, converte a correlação espacial em dados irrelevantes no domínio da frequência e, em seguida, quantiza-os. DCT é usado principalmente para compressão de dados ou imagens, convertendo a correlação espacial em dados irrelevantes no domínio da frequência e depois quantizando-os.(Explicação: a transformação DCT pode reunir informações mais importantes da imagem, e áreas e coeficientes sem importância no domínio da frequência podem ser cortados diretamente)。
Resumo: A ordem de compactação de dados de quadro é realizar primeiro a compactação entre quadros e intraquadros e, em seguida, realizar a transformação DCT nos dados residuais para remover a correlação dos dados e compactar ainda mais os dados. Do seguinte modo:
A compactação CABAC é uma tecnologia de compactação sem perdas e um método de codificação de entropia. Quando CABAC é compactado e codificado, os dados de alta frequência são definidos como códigos curtos e os dados de baixa frequência são definidos como códigos longos. Este método é mais eficiente que o método VLC. O método de codificação de entropia CABAC (Context-Adaptive Binary Arithmetic Coding) é usado para compactar ainda mais os coeficientes quantizados para melhorar a eficiência da compactação. Aqui, os dados processados nas quatro etapas anteriores são codificados no fluxo de código final usando o algoritmo de codificação. Os quadros finais compactados são divididos em: quadros I, quadros P e quadros B. Após a execução do método de compactação sem perdas CABAC, o fluxo de código de vídeo é obtido.
Redundância de dados espaciais e redundância de dados temporais são dois conceitos básicos na compressão de vídeo. Eles descrevem informações repetidas dentro e entre quadros de vídeo, respectivamente.
Interpretação da Redundância Espacial:
Interpretação da Redundância Temporal:
Na compressão de vídeo H.264, os dados residuais referem-se à diferença entre o quadro de vídeo original e o quadro previsto. Ao mesmo tempo, se quiser ter uma compreensão mais profunda dos dados residuais, você precisa entender os seguintes conceitos, conforme mostrado abaixo:
quadro previsto : Durante o processo de codificação de vídeo, a predição intra (Predição Intra) ou predição inter (Predição Inter) será usada para gerar quadros previstos. A predição intra é baseada em informações de pixel do quadro atual, enquanto a predição inter é baseada em informações de compensação de movimento de quadros anteriores ou subsequentes.
quadro original: Refere-se aos quadros da imagem original realmente capturados na sequência de vídeo.
Cálculo residual : Os dados residuais são calculados subtraindo o quadro previsto do quadro original. Os dados residuais representam a diferença entre o quadro previsto e o quadro original.
Com a base dos conceitos acima, podemos compreender melhor as características dos dados residuais:
Os dados residuais geralmente apresentam alta aleatoriedade espacial porque o quadro de predição removeu a maior parte das informações redundantes. Esta aleatoriedade torna os dados residuais adequados para compressão adicional através de transformação e quantização.
Depois que os dados residuais são processados pela Transformada Discreta de Cosseno Inteiro (IDCT) e quantização, a quantidade de dados pode ser significativamente reduzida. A transformação converte a informação espacial bidimensional do resíduo em informação de frequência, enquanto a quantização reduz a precisão desses coeficientes e remove detalhes que são imperceptíveis ao olho humano.
O objetivo da codificação de dados residuais é reduzir ainda mais a taxa de bits dos dados de vídeo, mantendo ao mesmo tempo a qualidade da imagem tanto quanto possível. Ao mesmo tempo, a compressão eficaz de dados residuais é crucial para a eficiência da codificação H.264, porque afeta diretamente a qualidade do vídeo codificado e o armazenamento necessário ou a largura de banda de transmissão.
A codificação de entropia é uma técnica de compressão de dados sem perdas baseada no conceito de entropia de informação e tem como objetivo representar os dados com o menor número de bits possível. A ideia central da codificação de entropia é alocar menos bits para símbolos que têm maior probabilidade de ocorrer e alocar mais bits para símbolos que aparecem com menos frequência. Desta forma, o espaço de armazenamento desejado ou a largura de banda de transmissão são reduzidos porque a taxa de bits média de todo o conjunto de dados é reduzida.
A codificação de entropia é frequentemente usada para texto e alguns tipos específicos de compactação de dados e pode melhorar significativamente a eficiência da compactação, especialmente quando os dados têm uma distribuição de probabilidade significativamente não uniforme. Na codificação de compressão de vídeo, os métodos de codificação de entropia mais intimamente relacionados à compressão de vídeo incluem principalmente o seguinte:
Na compressão de vídeo, a codificação de entropia é a etapa final de codificação usada para codificar os dados residuais após intra e interpredição. Os dados residuais são a diferença entre os dados originais e os dados previstos e geralmente têm menos energia e uma distribuição de probabilidade mais desigual. Através da codificação de entropia, a taxa de bits destes dados residuais pode ser ainda mais reduzida, atingindo assim o objectivo de comprimir dados de vídeo.