• Nenhum resultado encontrado

3.1 Point Cloud Compression (PCC-âncora)

3.1.1 Predição Inter-nuvens

Na etapa de predição inter-nuvens, primeiramente é realizada uma normaliza- ção das coordenadas das nuvens de pontos. Essa normalização também tem função de alinhar as nuvens de pontos, pois insere as nuvens temporalmente vizinhas em intervalos conhecidos e iguais, isto é, intervalo 0 e 1 (MEKURIA; BLOM; CESAR, 2017). O alinhamento é importante devido às características de irregularidade dos ta- manhos de nuvens temporalmente vizinhas. Nesse sentido, para calcular a normali- zação são obtidas as coordenadas mínimas e máximas nos três eixos considerando as duas nuvens. Obtendo esses limites de cada eixo, os valores são usados para

Figura 13: Visão geral do codec PCC-âncora (adaptado de (MEKURIA; BLOM; CESAR, 2017)).

normalizar as nuvens de pontos (MEKURIA; BLOM; CESAR, 2017). A Figura 14, mos- tra duas nuvens de pontos de entrada (parte superior da figura) e as nuvens de pontos após o alinhamento e normalização (parte inferior).

A predição inter-nuvens prevê a geração de blocos de tamanho N×N×N voxels, onde N é definido previamente como parâmetro de configuração do codec. Os resul- tados apresentados na proposta de (MEKURIA; BLOM; CESAR, 2017) utilizam N=16. Segundo o autor, esse tamanho de macrobloco habilitou os melhores resultados para os experimentos realizados.

Diferentemente do que ocorre na codificação de vídeos, nesse codec os blocos não são particionados em macroblocos menores, ou seja, uma vez definido o tamanho para os blocos, esses são inalteráveis. A ME é realizada a partir da comparação do macrobloco atual da nuvem corrente com o macrobloco colocalizado na nuvem tem- poralmente vizinha anterior (nuvem de referência).

3.1.1.1 Algoritmo ICP

O algoritmo ICP (Iterative Closest Point) é aplicado para calcular a matriz de translações e rotações para cada macrobloco, equivalente ao vetor de movimento pro- duzido pelos codificadores de vídeo. Portanto, o algoritmo de ICP tem como objetivo estimar movimentos que um dado macrobloco possa ter sofrido na nuvem corrente visando minimiza a distância entre os dois blocos.

Para isso, o ICP tem como etapas:

1. Calcular correspondência dos pontos por meio do algoritmo k-Nearest

Neighbors (k-NN) para selecionar os pontos vizinhos mais próximos;

2. Calcular a transformação para informação de geometria (rotação ou translação) e posteriormente é calculada a distância quadrática (Square

Distance) entre um bloco da nuvem atual e a nuvem temporalmente anterior;

3. Aplicar a transformação (rotação ou translação) ao bloco se o resultado da distância quadrática respeitar um determinado limiar a ser definido;

4. Repetir todo o processo novamente.

Nesse sentido, o algoritmo realiza transformações (combinação de translação e rotação) necessárias para minimizar uma métrica de erro, ou seja, a distância do bloco atual e o bloco da nuvem de referência de forma iterativa. Para isso, primeira- mente são selecionados alguns pontos correspondentes entre os blocos. A seleção desses pontos pode ser baseada na avaliação de características ou por meio de uma amostragem aleatória.

É importante destacar que o ICP estima o movimento do bloco considerando somente a informação de geometria dos pontos. Dessa forma, não é realizada avali- ação de similaridade de textura dos pontos que compõem os macroblocos.

Como critério de parada do ICP são utilizados o número máximo de iterações, o valor máximo permitido para rotação e translação e o limiar para a distância quadrá- tica, também chamado de fitness score. No trabalho proposto em (MEKURIA; BLOM; CESAR, 2017) foi utilizado um limite de 20 iterações e como valor de fitness score foi calculado o produto do LoD da octree em bits por quatro, ou seja, quatro vezes a quantidade de bits da representação octree.

3.1.1.2 Fluxo da Predição Inter-Nuvens

A matriz calculada pelo ICP é quantizada. Para isso, primeiramente são calcu- lados os quaterniões (ADAMI; TREGLIA, 2002) para os valores de rotação. O cálculo de quaterniões consiste basicamente em gerar uma representação mais compacta da matriz de rotação, em que a matriz de 3x3 é representada por um vetor de 4 compo- nentes. Posteriormente, é realizada uma quantização que converte os quatro compo- nentes dos quaterniões em três valores. Assim, ao final da quantização dos quaterni- ões, os nove valores da matriz referentes às rotações são convertidos em um vetor de três posições. Ao final do processo de quantização, o vetor de movimento é cons- tituído por três componentes de translação, três componentes de rotação e três com- ponentes das coordenadas do macrobloco na nuvem de referência, também chama- das de keys. A Tabela I apresenta a estrutura do vetor de movimento para codificação inter-nuvens proposta por (MEKURIA; BLOM; CESAR, 2017). Cada componente é armazenado em uma variável inteira de 16 bits, assim cada linha da Tabela I, utiliza 6 bytes, totalizando 18 bytes o vetor completo.

Tabela I: A estrutura dos dados que compõem o vetor de movimento. Coordenada X Coordenada Y Coordenada Z

Quaternião 1 Quaternião 2 Quaternião 3 Translação X Translação Y Translação Z

A utilização das keys é justificada pela possibilidade de exploração de parale- lismo no processo de decodificação e as características inerentes as nuvens de

pontos como a falta de regularidade de voxels ocupados, conforme descrito em (ME- KURIA; BLOM; CESAR, 2017).

3.1.1.3 Decisão de Modo

A decisão do melhor modo de predição, inter ou intra-nuvem, segue um con- junto de testes com seus respectivos critérios:

• Número de pontos: o macrobloco corrente não deve ter um número de pontos menor que cinquenta por cento dos pontos da nuvem de referência, nem mesmo pode ter um número de pontos cinquenta por cento maior que os pontos da nuvem de referência.

• Variância de cor: para cada macrobloco é calculada a variância de cor. Se- gundo (MEKURIA; BLOM; CESAR, 2017), macroblocos codificados como inter com alta variância de cor podem gerar artefatos visíveis em regiões da nuvem. • Convergência do ICP: É verificado se algoritmo ICP obteve sucesso no cálculo da matriz de rotações e translações e, posteriormente o resultado é verificado por meio de um nível de aptidão alcançado (fitness score).

O fitness score é calculado por meio da média das distâncias quadráticas do macrobloco do bloco da nuvem de referência em relação ao macrobloco da nuvem corrente. Para isso, através da matriz gerada pelo ICP é aplicada a transformação do bloco na nuvem de referência e posteriormente é avaliada a distância em relação ao macrobloco corrente. O valor da distância é confrontado com o fitness score definido por (MEKURIA; BLOM; CESAR, 2017), que tem como valor a resolução dos pontos após subamostragem por octree, multiplicado por quatro. Dessa forma, se o valor es- tiver abaixo do fitness score, o bloco será codificado como inter; caso contrário, o macrobloco será codificado como intra.

A predição inter-nuvens corresponde ao bloco seis da Figura 15 e o seletor se refere aos critérios citados (bloco cinco da Figura 15). O fluxo é melhor representado através da Figura 15, primeiramente são gerados macroblocos para a nuvem de refe- rência e nuvem corrente (bloco número 1). Para cada macrobloco da nuvem corrente é verificada a existência de pontos na nuvem de referência (bloco número 2 e 3 da Figura 15). Além disso, é realizada a verificação do número de pontos conforme crité- rios apresentados (bloco 4), assim como a variância de cor (bloco 5). O ICP é

calculado (bloco 6) e é verificada a convergência e o fitness score para o macrobloco (bloco de número 7 e 8). Se todos os critérios forem satisfeitos para codificar o ma- crobloco como inter, a matriz de rotação e translação é codificada (bloco 9), ou seja, são calculados os quaterniões e é aplicada uma quantização sobre os componentes, conforme já descrito. Dessa forma, é enviado ao bitstream a coordenada do macro- bloco (key), a matriz de rotação e translação do macrobloco já codificada (rigid tf). Caso algum dos critérios não seja satisfeito, o macrobloco é codificado como intra.

Figura 15: Fluxo da predição inter-nuvens e decisão de modo (adaptado de (MEKURIA; BLOM; CESAR, 2017)).