.


Processamento digital de imagens
Geometria


Exercício, girar uma imagem

Podemos aplicar transformações às posições dos pixels. Nesta aula você pode aprender como efetuar a rotação de uma imagem. Para isto, utilize a imagem em cinza e python.

A rotação consiste na multiplicação de uma matriz de ttotação (2x2) e o vetor de posição de cada pixel. Y= R * X Neste caso a matriz de rotação depende do ângulo ang R=[ [cos(ang) , -sin(ang) ],[sin(ang), cos(ang) ] ] Se aplicarmos esta rotação à imagem, a mesma será girada em torno da origem, que é o canto superior esquerdo, perdendo assim grande parte da imagem.
Então, devemos aplciar uma translação ao centro da imagem antes da rotação. X1 = X - Trans1
Y= R * X
Porém, dessa maneira, a imagem é rotacionada no seu centro, mas colocada com o centro na origem da segunda imagem.

Por isso, é necessário deslocar o resultado ao centro da imagem de saída: X1 = X - Trans1
Y1= R * X
Y=Y1+ Trans2
OK, agora vamos fazer isto em python. Primeiro aplique o método do mapeamento direto.

Algumas considerações

Ler imagem e recuperar o tamanho
Como a origem da imagem está no canto sujperior esquerdo, desloque a origem ao centro da imagem (translação)
Calcule as coordenadas dos 4 cantos e defina o tamanho da imagem de saída
... como a imagem será rotacionada, a imagem de saída será maior que a de entrada
crie uma imagem vazia para a saída
varrendo a imagem de saída
... calcule a posicao de cada pixel na imagem original
.... Se cair fora da imagem original, pode escrever zero na saída
.... se nao, copie o valor da imagem, usando a reamostragem bilinear
salve a image de saída

use este código.

CONFIRA o resultado. Nota que existem falhas na sua imagem de saída?

Isso se deve a que usamos o mapeamento direto neste programa.

Desafio

agora você modifique o programa para usar o mapeamento inverso.

mapa mais tarde ... em casa

Aluno 01. Aluno 02. Aluno 03. Aluno 04.
Aluno 05. Aluno 06. Aluno 07. Aluno 08.
Aluno 09. Aluno 10. Aluno 11. Aluno 12.
Aluno 13. Aluno 14. Aluno 15. Aluno 16.
Aluno 17. Aluno 18. Aluno 19. Aluno 20.
Aluno 21. Aluno 22. Aluno 23. Aluno 24.