Trab2 - Escala e Rotação

Fornecido

O código fonte do IMLAB.

 Pegue o arquivo "src/process/geometric.cpp" como base. Basta acrescentar mais itens neste mesmo arquivo para realização deste trabalho.

Enunciado

O objetivo do trabalho é se familiarizar com a implementação de um sistema de processamento de imagens que possui vários tipos numéricos e aplicar os conhecimentos de amostragem e reconstrução para implementar a escala de imagem com interpolação bicúbica e a rotação com interpolação linear.

A escala com interpolação bicúbica deve ser otimizada para evitar cálculos duplicados, assim como na interpolação linear já implementada. Veja o artigo "EFFICIENT IMAGE MAGNIFICATION BY BICUBIC SPLINE INTERPOLATION" por Michael J. Aramini no tópico Image Processing em http://members.bellatlantic.net/~vze2vrva/.

Corrija o código da escala com interpolação linear para ser mais simples e realizar o anti-aliasing para redução do tamanho corretamente.

Para a rotação você deve substituir o código com interpolação de ordem zero por uma interpolação linear.

O menus devem ser:

Geometric  ->  Resize... (linear)
               Resize... (bicubic)
               -------------------
               Rotate... 
               -------------------
               Crop...

Sugestão

Embora o código fique um pouco mais lento crie uma função genérica de transformação geométrica onde você passa como parâmetro uma função que realiza a transformação e qual a interpolação a ser utilizada.

Compare o desempenho com a solução otimizada.

Extra

Para ganhar pontos extras implemente outras operações geométricas simples, tais como:

Rotate -90o (ccw)
Rotate +90o (cw)
Rotate 180o
Reduze Area by 2
Reduze Area by 4
Rotate By Line... 
Mirror
Flip
Add Margins...

Reduce Area - reduz o número total de pixels pela metade (w/Ö2, h/Ö2) ou por um quarto (w/2, h/2).
Rotate By Line
- no diálogo deve-se especificar dois pontos e um flag dizendo se estão na vertical ou horizontal.
Flip - inverte a ordem das linhas
Mirror - inverte a ordem das colunas
Add Margins - é o inverso de Crop


Retorna para a página do curso: INF1378.