Transformações geométricas em coordenadas homogêneas 2-D

Documentos relacionados
Modelos Geométricos Transformações

Transformações Geométricas. Transformações Geométricas. Sistemas de Coordenadas. Translação: M.C.F. de Oliveira Rosane Minghim 2006

Reamostragem. Os métodos populares para reamostragem de imagens incluem: Vizinho mais próximo Bilinear Bicúbico Spline Reamostragem Lanczos

Explicação simplificada de template matching (casamento de máscara, ou casamento de modelo)

Computação Gráfica. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro. Aula 3. Transformações Geométricas

Transformações de Pontos. Computação Gráfica Prof. Dr. Paulo Roberto Gomes Luzzardi Aluna: Karina da Silva Salles

3D no OpenGL. Visualização e Transformações Perspectiva. Transformações do Modelview. Processo

Transformações Geométricas 2D e 3D

Visualização por Computador: Teoria, Prática e Aplicações

Imagem f

4. Curvas Paramétricas e Transformações 2D

Pilha, fila e recursão para processar componentes conexos.

Aula 5 - Produto Vetorial

Coordenadas Homogêneas

Sistemas de Referência

aula9 Coordenadas homogêneas e projeções 2016/2 IC / UFF

Transformações Geométricas em C.G. Claudio Esperança Paulo Roma Cavalcanti

Processamento de Imagens CPS755

Instituto Tecnológico de Aeronáutica. Prof. Carlos Henrique Q. Forster Sala 121 IEC. ramal 5981

Transformações 2D. Prof. Márcio Bueno Fonte: Material do Prof. Robson Pequeno de Sousa e do Prof.

Computação Gráfica. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro. Aula 6. Projeções

Universidade de Aveiro Departamento de Electrónica, Telecomunicações e Informática. Transformações 2D

Processamento de Imagens CPS755

CÁLCULO VETORIAL E GEOMETRIA ANALÍTICA

Transformações Geométricas Grafos de Cena

Processamento de Imagens CPS755

Sumário COMPUTAÇÃO GRÁFICA E INTERFACES. Modelos e modelagem. Modelos e modelagem. Transformações Geométricas e Visualização 2D

aula8 Transformações Geométricas no Plano e no Espaço 2016/2 IC / UFF

Coordenadas Homogêneas no Plano e no Espaço

Transformações Geométricas

Curso de CG 2018/2 IC / UFF

Transformações Geométricas em C.G.

Transformações geométricas no plano e no espaço

Notas de Aula - Fascículo 03 Transformações projetivas do plano

Transformações (Cap 4.3, 4.4 e 4.6 a 4.10)

Aula 17: Funções (Parte III) e Introdução a Vetores

Universidade Federal de Alagoas Instituto de Matemática. Geometria. Prof. Thales Vieira

Reconstrução Geométrica a Partir de Imagens TIC /TCC

aula6 Projeções Planas 2017/2 IC / UFF

Transformações Geométricas

TRANSFORMAÇÕES LINEARES

Sumário. VII Geometria Analítica Jorge Delgado Katia Frensel Lhaylla Crissaff

Reconstrução Geométrica a Partir de Imagens TIC

1 FUNÇÃO - DEFINIÇÃO. Chama-se função do 1. grau toda função definida de por f(x) = ax + b com a, b e a 0.

Computação Gráfica Viewing

Agrupamento de Escolas de Alcácer do Sal MATEMÁTICA - 8o Ano

SIFT (Scale-invariant feature transform), SURF (Speeded up robust features)

Transformações Geométricas

Planificação de Matemática 8º ano. Ano letivo: 2014/15

-INF Aula 17 Visualização 3D: Projeções

Chamamos de grandezas coisas que podem ser medidas. Por exemplo, tempo, área, volume, temperatura, velocidade, aceleração, força, etc..

ESCOLA BÁSICA DE MAFRA 2016/2017 MATEMÁTICA (2º ciclo)

1) A seguir são dados operadores lineares T em IR e em IR. Verificar quais são inversíveis e, nos casos afirmativos, determinar uma fórmula para T.

Nota de aula: Transformações Lineares

TRANSFORMAÇÕES EM SISTEMAS CARTESIANOS

ROBÓTICA (ROB74) AULA 2. TRANSFORMAÇÕES GEOMÉTRICAS E COORDENADAS HOMOGÊNEAS PROF.: Michael Klug

Robótica Experimental

GEQ Prof. Paulo R. Coelho. Lista para prova

Lista de exercícios 9 Mudanças de Bases

DEPARTAMENTO DE MATEMÁTICA E INFORMÁTICA DISCIPLINA: Matemática (8º Ano) METAS CURRICULARES/CONTEÚDOS ANO LETIVO 2017/

Integrais Múltiplas. Prof. Ronaldo Carlotto Batista. 23 de outubro de 2014

Álgebra Linear e Geometria Anaĺıtica. Matrizes e Sistemas de Equações Lineares

Introdução à Computação Gráfica

Transformações Geométricas

Aula 14: Funções Passagem de Parâmetros por Referência

Sumário. Computação Gráfica. Transformações Geométricas. Transformações Geométricas. Translação: Transformações Geométricas

Qual é a posição do Centro de Massa de um corpo de material homogêneo que possui um eixo de simetria

Departamento de Matemática e Ciências Experimentais PROJECTO CURRICULAR DE MATEMÁTICA - 8º ANO /2015

Pipeline de Visualização 3D

(b) { (ρ, θ);1 ρ 2 e π θ } 3π. 5. Representar graficamente

- Aula 6 - Visualização 3D: Projeções

Computação Gráfica e Processamento de Imagens. - mapeamento - visualização. Prof. Julio Arakaki

Universidade Federal do Pará Curso de Licenciatura em Matemática PARFOR Lista de Exercícios Referentes a Prova Substitutiva de Geometria Analítica

Equação Geral do Segundo Grau em R 2

Processamento de Imagens CPS755

Computação Gráfica. Prof. MSc André Yoshimi Kusumoto

Aula 22 Derivadas Parciais - Diferencial - Matriz Jacobiana

Prof. Fernando V. Paulovich 3 de maio de SCC Computação Gráca

AGRUPAMENTO DE ESCOLAS DR. VIEIRA DE CARVALHO

A B C A 1 B 1 C 1 A 2 B 2 C 2 é zero (exceto o caso em que as tres retas são paralelas).

Reconstrução Geométrica a Partir de Imagens TIC /TCC

Halftoning. Formalização do problema de halftoning:

Calendarização da Componente Letiva Ano Letivo 2016/2017

P2 de Álgebra Linear I Data: 10 de outubro de Gabarito

1. Entre as funções dadas abaixo, verifique quais são transformações lineares: x y z

1 Para expressar um ponto intermediário em função dos pontos extremos, precisamos

E- Correção Geométrica

6 Matrizes. Matrizes. Aluno Matemática Eletricidade Básica Desenho Técnico A B C D 3 7 4

Visualização 3D. Soraia Raupp Musse

Planificação anual- 8.º ano 2014/2015

1. Operações com vetores no espaço

Transformações Geométricas

Vetores e Geometria Analítica

AGRUPAMENTO DE ESCOLAS DR. VIEIRA DE CARVALHO

PERFIL DO ALUNO APRENDIZAGENS ESPECÍFICAS - 5.ºANO

Transcrição:

Transformações geométricas em coordenadas homogêneas 2-D Coordenadas homogêneas (ou coordenadas projetivas, abreviado CHs) são um sistema de coordenadas usada na geometria projetiva. Um ponto em R 2 (x,y) é representado em CHs utilizando 3 números (x,y,w). O ponto em CHs (x,y,w) representa o ponto (x/w, y/w) em R 2. Por exemplo, (4,6,2) em CHs representa o ponto (2,3) de R 2. Se w=1, dizemos que a representação está normalizada. Exemplo da representação em CHs normalizada: (2,3,1). Figura retirada de Wikipedia.

Matriz 2x2 (transformação linear): Representando os pontos por vetores 2x1, a transformação entre pontos é representada por uma matriz 2x2. Matriz 2x2 consegue representar rotação (em torno do centro do sistema de coordenadas), shearing, reflexão e mudança de escala. Exemplos: Rotação: [ x n Shearing: [ x n s y n] = [ c c][ s x v y v] y n] = [ 1 k 0 1][ x v y v] Reflexão em torno do eixo X: [ x n y n] = [ 1 0 0 1][ x v y v] Mudança de escala: [ x n y n] [ = e x 0 0 e y][ x v y v], c=cos( ) e s=sin( ) y x Uma composição de transformações pode ser obtida multiplicando as matrizes de transformação. A transformação inversa é calculada pela inversa da matriz.

Matriz 2x3 (transformação afim): Se utilizar matrizes de transformação 2x3, consegue representar transformações afins. Elas incluem (além das transformações 2x2) a translação. Consegue mapear retângulo em paralelograma (mantém o paralelismo das retas). Translação por (t x, t y ): [ x n y n] [ = 1 0 t x y][ x v ] y 0 1 t v 1 A função getaffinetransform consegue determinar a matriz de transformação 2x3 a partir de 3 pares de pontos correspondentes. O problema de transformação 2x3 é que não dá para multiplicar duas matrizes 2x3, assim como não existe matriz inversa de uma matriz 2x3. Exemplo: //shear.cpp pos2016 #include <cekeikon.h> int main() { Mat_<FLT> src = (Mat_<FLT>(3,2) << 0,0, 0,511, 511,511); cout << src << endl; Mat_<FLT> dst = (Mat_<FLT>(3,2) << 200,100, 100,400, 400,400); cout << dst << endl; Mat_<FLT> m=getaffinetransform(src,dst); cout << m << endl; Mat_<GRY> a; le(a,"lenna.jpg"); Mat_<GRY> b; warpaffine(a,b,m,a.size(),inter_linear,border_wrap); imp(b,"afim.png"); [0.58708417, -0.19569471, 200; 0, 0.58708417, 100]

O seguinte programa faz rotação em torno de um ponto arbitrário: #include <cekeikon.h> int main() { Mat_<GRY> ent; le(ent,"lenna.jpg"); Mat_<GRY> sai; Mat_<double> m=getrotationmatrix2d(point2f(ent.cols/2,ent.rows/2), 30, 1); cout << m << endl; warpaffine(ent, sai, m, ent.size(), INTER_LINEAR, BORDER_CONSTANT, Scalar(255)); mostra(sai); Saída: [0.8660254037844387, 0.4999999999999999, -93.70250336881629; -0.4999999999999999, 0.8660254037844387, 162.2974966311837]

Como construir a matriz m manualmente, sem usar a função getrotationmatrix2d? Utilizando matrizes 3x3. dx=256; dy=256; (T(dx,dy) * R(30) * T(-dx,-dy)) * (xv, yv, 1) t //manual.cpp #include <cekeikon.h> Mat_<double> translacao(double tx, double ty) { Mat_<double> m(3,3, 0.0); m(0,0)=1; m(1,1)=1; m(2,2)=1; m(0,2)=tx; m(1,2)=ty; return m; Mat_<double> rotacao(double graus) { double radianos=deg2rad(graus); double co=cos(radianos); double se=sin(radianos); Mat_<double> m(3,3, 0.0); m(0,0)=co; m(0,1)=se; m(1,0)=-se; m(1,1)=co; m(2,2)=1; return m; int main() { Mat_<double> m=translacao(256,256)*rotacao(30)*translacao(-256,-256); cout << m << endl; Saída: [0.8660254037844387, 0.4999999999999999, -93.70250336881628; -0.4999999999999999, 0.8660254037844387, 162.2974966311837; 0, 0, 1] Despreza-se a última linha.

Matriz 3x3 (transformação perspectiva): Usando sistema de coordenadas homogêneas (matriz 3x3) permitem efetuar rotação, translação, reflexão, mudança de escala, transformação afim e transformação em perspectiva. A composição das transformações é calculada pela multiplicação matricial. A transformação inversa é dada pela inversa da matriz. Rotação em coordenadas homogêneas: [ x n ]=[ c s 0 ] y n s c 0 y v R A, onde c=cos(a) e s=sin(a) 1 1 0 0 1][ xv Translação em coordenadas homogêneas: [ x ]=[1 0 t n x ] y n 0 1 t y y v T t, onde t = (t x, t y ). 1 1 0 0 1][ xv Mudança de escala em coordenadas homogêneas: [ x ]=[ex 0 0 n ] y n 0 e y 0 y v E e, onde e = (e x, e y ). 1 1 0 0 1][ xv As matrizes podem ser multiplicadas para obter transformação composta. Por exemplo, rotação de A graus em torno de centro c = (c x, c y ): T -c R A T c.

O seguinte programa corrige o efeito em perspectiva (usando rotinas de OpenCV): pv warppers quadrado1.bmp quadrado1b.pgm 55 156 585 156 0 324 639 324 10 156 630 156 10 324 630 324 pv warppers quadrado2.bmp quadrado2b.pgm 237 156 639 205 0 260 451 324 10 10 630 10 10 470 630 470 pv warppers ka0.jpg ka1.jpg 73 0 533 0-22 479 626 479 10 10 630 10 10 470 630 470 quadrado1.bmp quadrado1b.pgm quadrado2.bmp quadrado2b.pgm ka0.jpg ka1.jpg

//pers.cpp grad-2017 #include <cekeikon.h> int main() { Mat_<FLT> src = (Mat_<FLT>(4,2) << 70,0, 533,0, -22,479, 626,479); Mat_<FLT> dst = (Mat_<FLT>(4,2) << 10,0, 630,0, 10,479, 630,479); Mat_<FLT> m=getperspectivetransform(src,dst); cout << m << endl; Mat_<FLT> v=(mat_<flt>(3,1) << 70,0,1); Mat_<FLT> w=m*v; cout << w << endl; Mat_<COR> a; le(a,"ka0.jpg"); Mat_<COR> b; warpperspective(a,b,m,a.size()); imp(b,"ka1.jpg"); C:\haepi\algpi\transgeom\grad2017>persp [1.3390929, 0.26553699, -83.736504; 1.373901e-015, 1.3995681, -5.6843419e-013; 6.3154777e-018, 0.00083417125, 1] [9.9999924; -4.7226112e-013; 1] É possível usar mais de 4 pontos para achar a transformação em perspectiva. Fica mais robusto. Mat findhomography(inputarray srcpoints, InputArray dstpoints, int method=0, double ransacreprojthreshold=3, OutputArray mask=noarray() ) method Method used to computed a homography matrix. The following methods are possible: 0 - a regular method using all the points CV_RANSAC - RANSAC-based robust method CV_LMEDS - Least-Median robust method Veja o manual do OpenCV.

Escrever sobre calibração de câmera. Escrever sobre correção de defeito da lente.