PROJETO 2 AMOSTRAGEM, INTERPOLAÇÃO E QUANTIZAÇÃO Guilherme Simões Dias - 160123364 Engenharia Eletrônica, UnB-FGA, Brası́lia, Brasil ABSTRACT Este projeto busca explorar os conceitos de resolução espacial e resolução em nı́veis de cinza e os diferentes métodos existentes de manipulação, como a interpolação e a quantização. Index Terms— resolução, interpolação, quantização. 1. INTRODUÇÃO Fig. 1. Banco de imagens. (a) Ponte, (b) Face, (c) Cameramen, (d) Rosa. 3. DESENVOLVIMENTO 3.1. Subamostragem Este projeto busca introduzir conceitos sobre amostragem de imagens, intensidade de quantização e interpolação. Demonstrando seus efeitos na resolução espacial e de intensidade das imagens. A resolução espacial, como descrita por [1] é a medida do menor detalhe discernı́vel em uma imagem ou então como o número de pontos (pixels) por unidade de distância. A interpolação está atrelada a esta resolução, realizando tarefas como ampliação e redução de escala, rotação e correção geométrica de imagens. No entanto, neste projeto abordaremos apenas a ampliação e redução das imagens, que são processos de amostragem e re-amostragem que fazem uso de dados existentes para estimar valores coordenadas desconhecidas. Já a resolução de intensidade é descrita como o menor detalhe discernı́vel na mudança do nı́vel de intensidade. Sendo que os nı́veis de intensidade são os responsáveis pela coloração da imagem em diferentes tons. O nı́vel de intensidade mais comum é de 8 bits, que representa 256 tons diferentes, e que é o nı́vel das imagens usadas neste projeto. O procedimento de subamostragem no processamento de imagens tem como objetivo reduzir o número de pixel de uma imagem, o método desenvolvido para essa tarefe consiste em descartar amostras igualmente espaçadas durante toda a imagem. Para isso, a imagem original é percorrida em relação as suas dimensões x, y e seus pixels de interesse são enviados para uma nova imagem. A escolha desses pixels de interesse vão de acordo com o grau de redução que se deseja obter, por exemplo, se desejamos obter uma imagem com a metade do tamanho da imagem original, durante a varredura será enviado o primeiro pixel na posição (0, 0) e será descartado o próximo em (0, 1), sendo o próximo enviado o (0, 2) e o descartado (0, 3), processo repetido para todas as linhas da imagem. Portanto, se a imagem possuı́a 500 pixels inicialmente, após a subamostragem de grau 2 ela apresentará 250 pixels. Para testar o precedimento, foi aplicado a subamostragem na imagem da face, figura x, reduzindo sua resolução espacial inicial de 512 x 512 pixels para 256 x 256 pixels, 128 x 128 pixels, 64 x 64 pixels e 32 x 32 pixels. 2. OBJETIVO A partir das imagens fornecidas pelo banco de dados da disciplina, realizar processos de leitura e manipulação para redimensionar e quantizar imagens. Desenvolvendo programas no GNU OCTAVE, MATLAB ou PYTHON 3 sem fazer uso de funções já prontas. Fig. 2. Efeitos da redução da resolução espacial. 3.2. Interpolação A interpolação pode ser definida como um método para criar dados com base nos dados já existentes. Método usado no processamento de imagens para aumentar uma imagem, em que por meio de diversas estratégias são criados novos pixels com valores estimados para se obter uma imagem ampliada o mais próximo da original. caso, duplicando o valor para a direita e por fim duplicando todos os valores da linha conhecida para a linha abaixo. 3.2.1. Interpolação de vizinho mais próximo O primeiro tipo de interpolação a ser estudado é a interpolação de vizinho mais próximo, que tem como fundamento designar o valor de um pixel conhecido para o pixel desconhecido mais próximo. Para exemplificar digamos que tenhamos uma imagem de 4 x 4 pixel representada por uma tabela 2x2 e desejamos amplifica-la por um fator 2. Fig. 5. Processo de interpolação por vizinho mais próximo, parte 3. Este processo pode ser aplicado, por exemplo, nas imagens geradas pela subamostragem apresentadas na Fig,2 para retorna-las ao seu tamanho original. Fig. 3. Processo de interpolação por vizinho mais próximo, parte 1. A matriz resultado apresenta o dobro de pixels que a original, logo, é preciso traçar uma estratégia para preencher as lacunas. Inicialmente podemos transferir cada uma das linhas da imagem original para o nova com um espaçamento de um pixel entre as amostras. Fig. 4. Processo de interpolação por vizinho mais próximo, parte 2. Desta forma, temos dados conhecidos alocados nas proximidades de todas as lacunas e podemos então copiar os valores de cada posição para o seu vizinho mais próximo, neste Fig. 6. Efeito da amplificação da resolução espacial pelo método da interpolação por vizinhos mais próximos. 3.2.2. Interpolação bilinear A interpolação bilinear, assim como seu nome sugere, faz uso da interpolação linear em dois sentidos (vertical e horizontal). Extraindo informações dos quatro vizinhos mais próximos para criar um argumento de valor proporcional a influencia exercida pelos vizinhos. Para um melhor entendimento, vamos exemplificar como funciona uma interpolação linear. Olhando para a Fig.7 podemos identificar dois pontos com valores conhecidos (0,0) e (0,3) e queremos encontrar o valor de (0,1), para isso devemos calcular o polinômio linear formado pelos valores multiplicados pelo peso (a influencia do argumento relativo a distância até o novo ponto). Q(0, 1) = x − x1 x2 − x × Q(0, 0) + × Q(0, 3) x2 − x1 x2 − x1 Q(0, 1) = 3−1 1−0 × 10 + × 20 3−0 3−0 Q(0, 1) = 13 Fig. 7. Exemplo de interpolação linear entre dois pontos. Este procedimento quando aplicado nas duas direções (colunas e linas) é denominado de interpolação bilinear. Para o melhor entendimento, nas figuras abaixo esta apresentado o exemplo proposto por [2] em que é aplicado a interpolação entre 4 pixels localizados em (0,0), (0,1), (1,0) e (1,1) para encontrar o valor presente em (0.3, 0.4). Fig. 8. Processo de interpolação bilinear, parte 1. Fig. 10. Efeito da amplificação da resolução espacial pelo método da interpolação bilinear. 3.3. Quantização Uma imagem digital é formada por pixels com diferentes valores que determinam a sua cor. Para uma imagem em escala de cinza esses valores se limitam a 8-bit, ou seja um valor 0 para um pixel pode ser expresso em sua forma binária 00000000, de mesma maneira, o maior valor que pode ser expresso em binário 11111111 é o mesmo que 255. Sabe-se que em um número binário o bit mais significativo é o que mais contribui para o range de valores que podem ser formados, por exemplo número com 7 bits é apenas capaz de expressar até 27 ou 127 valores diferentes. Portando os bits menos significativos, de forma análoga, são os que menos contribuem na formação da imagem. Portanto, podemos realizar um procedimento de bit-plane slicing para separar cada um dos bits da imagem e selecionar apenas os bits de interesse para a formação de uma nova imagem como mostrado na figura abaixo. O primeiro passo é refletir esse ponto para as fileira obtendo A:(0,0.4) e B:(1,0.4) para então realizar a interpolação linear para cada um dos pontos em relação aos pixels na horizontal. Fig. 9. Processo de interpolação bilinear, parte 2. Para somente então realizar a segunda interpolação entre A e B, obtendo assim o valor final para o pixel na posição (0.3, 0.4). Aplicando esse método nas imagens subamostradas da Fig.2 podemos observar o efeito da amplificação em relação a imagem original. Fig. 11. Demonstração do procedimento de bit-plane slice. Desta forma, a quantização busca diminuir o número de bits usados na formação da imagem de forma a diminuir/comprimir a imagem sem comprometer o seu entendimento. Para demonstrar este procedimento a Fig.1(d) foi manipulada tendo seus bits por pixel reduzidos de 8 para 7, 6, 5, 4, 3, 2 e 1, sempre descartando o bit menos significativo. Em sequência, cada uma das quadro imagens geradas a partir das figuras originais tiveram seu número de bits por pixel reduzido de 8 para, respectivamente, 6, 5, 4, 3. Formando assim um total de 16 imagens por figura. Fig. 12. Efeito da quantização na resolução em bits de uma imagem. 3.3.1. Alteração simultânea da resolução espacial e da resolução em bits Com o conhecimento acumulado até este tópico, é possı́vel realizar um experimento para avaliar o efeito da alteração simultânea da resolução espacial e da resolução em bits de uma imagem. Para isso, foram selecionadas três imagem com nı́veis de detalhes diferentes sendo essas a Fig.1(a) (nı́vel alto), Fig.1(c) (nı́vel moderado) e Fig.1(d) (nı́vel baixo). Aplicando nelas os métodos de subamostragem e posteriormente quantização. As três imagens selecionadas apresentam uma resolução de 512 x 512 pixels e foram subamostradas para 256 x 256, 128 x 128, 64 x 64 e 32 x 32 pixels descartando amostras. (a) Imagens com resolução de 6 bits por pixel. (a) Imagem da ponte subamostrada. (b) Imagens com resolução de 5 bits por pixel. (b) Imagem do cameramen subamostrada. (c) Imagens com resolução de 4 bits por pixel. (c) Imagem da flor subamostrada. (d) Imagens com resolução de 3 bits por pixel. Fig. 13. Resultados obtidos a partir do processo de subamostragem com descarte de amostras para as resoluções 256 x 256, 128 x 128, 64 x 64 e 32 x 32 pixels respectivamente. Fig. 14. Resultados obtidos a partir da redução de bits por pixel das imagens subamostradas presentes na Fig.13(a). (a) Imagens com resolução de 6 bits por pixel. (a) Imagens com resolução de 6 bits por pixel. (b) Imagens com resolução de 5 bits por pixel. (b) Imagens com resolução de 5 bits por pixel. (c) Imagens com resolução de 4 bits por pixel. (c) Imagens com resolução de 4 bits por pixel. (d) Imagens com resolução de 3 bits por pixel. (d) Imagens com resolução de 3 bits por pixel. Fig. 15. Resultados obtidos a partir da redução de bits por pixel das imagens subamostradas presentes na Fig.13(b). Fig. 16. Resultados obtidos a partir da redução de bits por pixel das imagens subamostradas presentes na Fig.13(c). 4. DISCUSSÃO E CONCLUSÃO A partir da visualização e da análise das imagens formadas podemos compreender os efeitos de cada um dos métodos aplicados. Em relação ao processo de subamostragem com descarte de amostras temos que a cada redução, informação é perdida. Como visto na Fig.13 temos que nas imagens com maior número de detalhes essa redução acaba por dificultar a interpretação da imagem mas em figuras mais simples, mesmo tendo seus pixels reduzidos em quase 90%, sua compreensão continua fácil. A interpolação por vizinho mais próximo (nni) é um método de rápida execução e com baixo custo operacional devido a pouca necessidade de cálculos. No entanto, devido ao fato deste metodo apenas replicar os pixels mais próximos, a imagem resultante acaba se tornando ”pixelada” pois esta operação apenas transforma os pixels presentes em blocos de mesmo valor. Em comparação com o método de nni, a interpolação bilinear gera imagens mais suaves pois o valor dos pixels criados é uma combinação dos pixels ao seu redor. Contudo, esse processo demanda mais cálculos para ser executado e tem como efeito negativo a formação de imagens com menos contraste entre os contornos. Apesar dos pontos negativos, a interpolação bilinear é uma ótima escolha para ampliação de imagens como pode ser visto na Fig.17 que apresenta a imagem da diferença entre cada imagem interpolada em relação a original por meio da função absolute difference da biblioteca Numpy. Fig. 17. Diferença entre cada imagem interpolada de forma bilinear em relação a original. O resultado obtido da quantização das imagens nos mostra que é possı́vel reconstruir, de forma quase idêntica, a imagem original fazendo uso de menos bits. Isso ocorre pelo fato de que os bits finais detêm a maior parte da informação da imagem, enquanto bits iniciais quase não produzem diferença. Dessa forma, podemos fazer uso de menos bits para armazenar uma imagem, ocupando assim um menor espaço. Portanto, este método possui uma boa aplicação no processo de compressão de imagens. 5. REFERENCES [1] Rafael C. Gonzales and Richard E. Woods, Processamento Digital de Imagens, Pearson, 4 edition, 2018. [2] TheAILearner, “Image processing,” Janeiro 2019.