tg
-
Upload
luiz-santana -
Category
Documents
-
view
89 -
download
0
Transcript of tg
EXPERIMENTO PARA ADISCIPLINA MPS-36
MODELAGEM E SIMULACAODE SISTEMAS DINAMICOS
Identificacao dos comprimentos focais de
cameras
Luiz Manoel Santos Santana
Sao Jose dos Campos - SP
26 de Junho de 2016
Sumario
Sumario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Lista de ilustracoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1 INTRODUCAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 COMPONENTES DO EXPERIMENTO . . . . . . . . . . . . . . . . . 5
2.1 Microsoft Lifecam Cinema . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Computador com MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Boards de Identificacao das Posicoes . . . . . . . . . . . . . . . . . . . . 6
3 IDENTIFICACAO DOS COMPRIMENTOS FOCAIS . . . . . . . . . . 7
3.1 Processamento de Imagem . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.1 Deteccao de Cantos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.2 Segmentacao de Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 Modelo de Camera Pinhole . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.3 Metodo dos Mınimos Quadrados . . . . . . . . . . . . . . . . . . . . . . . 12
4 EXPERIMENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.1 Preparacao e Parametros do Experimento . . . . . . . . . . . . . . . . . 14
4.2 Programa em linguagem MATLAB . . . . . . . . . . . . . . . . . . . . . 15
4.3 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5 CONCLUSAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
REFERENCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6 ANEXOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.1 Anexo A – Instalacao dos Complementos . . . . . . . . . . . . . . . . . . 22
6.2 Anexo B – Programa de Calibracao das Cameras . . . . . . . . . . . . . 22
Lista de ilustracoes
Figura 1 – Visao geral do experimento. . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Figura 2 – Microsoft Lifecam Cinema. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Figura 3 – Boards Utilizadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Figura 4 – Metodo de Harris para Identificacao de Cantos. . . . . . . . . . . . . . . . 7
Figura 5 – Exemplo de Separacao de Objetos Utilizando Limiarizacao. . . . . . . . . . 8
Figura 6 – Matiz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Figura 7 – Saturacao da Cor Vermelha. . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Figura 8 – Luminosidade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Figura 9 – Modelo de Cor HSV. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Figura 10 – Elementos das Cameras Escuras – Pinhole. . . . . . . . . . . . . . . . . . . 11
Figura 11 – Camera Pinhole. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Figura 12 – Comprimento Focal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Figura 13 – Determinacao do Comprimento Focal. . . . . . . . . . . . . . . . . . . . . 14
Figura 14 – Possıveis Layouts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Figura 15 – Centralizacao da Camera. . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Figura 16 – Fluxograma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Figura 17 – Checkerboard: Cantos Identificados. . . . . . . . . . . . . . . . . . . . . . 18
Figura 18 – Todos os Cırculos: Imagem binaria e Cırculos Identificados. . . . . . . . . 18
Figura 19 – Cırculos Vermelhos: Imagem binaria e Cırculos Identificados. . . . . . . . . 18
Figura 20 – Cırculos Verdes: Imagem binaria e Cırculos Identificados. . . . . . . . . . . 19
Figura 21 – Cırculos Azuis: Imagem binaria e Cırculos Identificados. . . . . . . . . . . 19
Figura 22 – MATLAB – versao R2015a. . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Figura 23 – Opcoes de instalacao dos pacotes para o Matlab de comunicacao com ca-
meras USB e do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1 Introducao
O presente relatorio tem como objetivo mostrar o desenvolvimento teorico e pratico de um
experimento para a disciplina MPS-36: Modelagem e Simulacao de Sistemas Dinamicos,
do curso de graduacao em Engenharia Mecanica Aeronautica do Instituto Tecnologico de
Aeronautica (ITA), sendo o experimento um dos requisitos do estagio docencia da instituicao.
O intuito do experimento e a identificacao de parametros intrınsecos de uma camera
(comprimentos focais). Para a identificacao dos mesmos sao utilizados metodos de visao
computacional, processamento de imagem e estimacao otima de parametros.
Os comprimentos focais sao parametros importantes para determinar a posicao de um
objeto com utilizacao de cameras. Em (1) os comprimentos focais sao utilizados para a
determinacao da posicao e velocidade de um robo aereo multirotor.
Os proximos capıtulos mostrarao a teoria, o desenvolvimento, e o funcionamento do ex-
perimento.
2 Componentes do Experimento
Os tres principais componentes utilizados para a realizacao do experimento de estimacao
dos comprimentos focais sao: uma webcam microsoft lifecam cinema para a aquisicao das
imagens; um computador com o software MATLAB instalado, sendo o mesmo responsavel
pelo tratamento da imagem, identificacao das coordenadas e calculo dos comprimentos focais;
uma board de identificacao, onde, em um lado ha marcas coloridas, sendo os centros dessas
marcas posicoes bem conhecidas, e do outro lado uma checkerboard com as posicoes dos
cantos dos quadrados negros tambem bem conhecidas. A Figura 1 ilustra o sistema descrito.
Figura 1 – Visao geral do experimento.
2.1 Microsoft Lifecam Cinema
A camera utilizada e a Microsoft lifecam cinema, essa webcam tem como principais caracte-
rısticas um sensor CMOS; uma taxa de aquisicao de imagem de 30 frames por segundo; um
campo de visao (FOV) em diagonal de 730; e uma resolucao padrao de imagem de 640x480
pixels. A sua utilizacao no sistema e a captura das imagens e o envio das mesmas via cabo
USB para um microcomputador. A Figura 2 mostra uma foto da webcam.
Figura 2 – Microsoft Lifecam Cinema.
2.2 Computador com MATLAB
O microcomputador recebe os dados enviado pela camera via interface USB. No software
MATLAB ha tratamentos distintos para as imagens capturadas na checkerbord das captura-
das na board de marcas coloridas. Na checkerbord e utilizado um metodo para identificacao
de cantos, ja a identificacao dos cırculos coloridos e realizada seguindo os seguintes passos:
segmentacao da cor desejada e a transformada circular de Hough. A partir das coordenadas
xI e yI encontradas, utilizando o modelo de camera pinhole em conjunto com o metodo dos
mınimos quadrados, sao calculados os valores otimos dos comprimentos focais fx e fy .
2.3 Boards de Identificacao das Posicoes
A board de identificacao e um plano no qual estao os pontos a serem identificados pelos
metodos de visao computacional. Foram utilizadas duas boards no experimento. Uma em
um padrao quadriculado em preto e branco e a outra com cırculos vermelhos, azuis e verdes,
conforme ilustrado na Figura 3.
Figura 3 – Boards Utilizadas.
3 Identificacao dos Comprimentos Focais
O experimento de identificacao dos comprimentos focais e dividido em tres partes principais:
processamento de imagem, determinacao do comprimento focal a partir do modelo de camera
pinhole e a estimacao otima com o metodo dos mınimos quadrados.
3.1 Processamento de Imagem
O processamento de imagem e a etapa na qual os elementos de interesse sao separados
computacionalmente de outros elementos da imagem, com o intuito da identificacao de suas
coordenadas x(i)I , y
(i)I em pixel. Foram utilizados metodos distintos para a identificacao das
marcas coloridas e do checkerboard. Os principais metodos utilizados foram a deteccao de
cantos e a segmentacao de cores. No caso dos cırculos, para a deteccao das coordenadas dos
centros, foi utilizada a transformada circular de Hough.
3.1.1 Deteccao de Cantos
O algoritmo para a deteccao de cantos e baseado no metodo Harris corner detector. O metodo
de Harris identifica cantos pela variacao do gradiente de intensidade da imagem nas direcoes
Xi e Yi. O algoritmo varre todos os pixels da imagem com uma janela n x n pixels. Quando
encontrada uma grande variacao no gradiente da imagem em uma unica direcao, isso implica
que foi encontrada uma borda. Quando ha uma grande variacao do gradiente de intensidade
nas direcoes Xi e Yi simultaneamente, isso resulta que um canto foi detectado.
A Figura 4 demonstra os tres casos possıveis:
Figura 4 – Metodo de Harris para Identificacao de Cantos.
1 – Nenhuma grande variacao, em nenhum dos dois sentidos, do gradiente de intensidade
da imagem;
2 – Grande variacao do gradiente de intensidade da imagem em um sentido (borda);
3 – Grande variacao do gradiente de intensidade da imagem nos dois sentidos (canto);
Com os cantos identificados, sao coletadas as suas respectivas coordenadas x(i)I e y
(i)I .
3.1.2 Segmentacao de Cores
Na board de marcas coloridas sao utilizados quatro formas de reconhecimento dos cırculos.
1 – Identificar e coletar a posicao de todos os cırculos;
2 – Identificar e coletar a posicao dos cırculos vermelhos;
3 – Identificar e coletar a posicao dos cırculos verdes;
4 – Identificar e coletar a posicao dos cırculos azuis.
No caso no 1, e utilizado limiarizacao na imagem em escala de cinza, para a distincao dos
cırculos dentre os outros elementos da imagem.
A limiarizacao e um metodo de segmentacao de imagem onde os elementos da imagem
sao separados pelos seus respectivos nıveis de cinza. Adotando um valor para o limiar (T ),
os pixels da imagem sao divididos em dois grupos, no qual o valor do limiar e o separador
dos grupos. Com isso, a imagem torna-se binaria, sendo os valores maiores que T iguais a
um, e os valores menores ou igual a T com valor zero (2).
Figura 5 – Exemplo de Separacao de Objetos Utilizando Limiarizacao.
Uma imagem limiarizada pode ser representada pela seguinte funcao (onde F (xI , yI) e a
imagem em escala de cinza):
g(xI , yI) =
0, se F (xI , yI) ≤ T,
1, se F (xI , yI) > T.
Portanto, os pixels de g(xI , yI) com valores igual a um correspondem ao fundo da imagem,
enquanto os valores igual a zero sao os pixels correspondentes aos elementos desejados. A
Figura 5 mostra um exemplo de limiarizacao com tres valores distintos de limiar.
Nos casos no 2, 3 e 4 e utilizado o mesmo metodo de segmentacao. Sendo o mesmo a
segmentacao de cor no modelo HSV.
Para a sintonizacao via histogramas, e realizada a conversao da imagem coletada pela
camera no modelo de cor RGB para o modelo de HSV.
O modelo de cor HSV e uma extensao do modelo RGB. O modelo RGB realiza a combina-
cao das cores primarias para a decomposicao de outras cores. O modelo HSV, alem de ter a
matiz de cores (H) como no modelo RGB, utiliza mais dois elementos principais, a saturacao
(S) e a luminosidade (V) (2).
A matiz e o estado puro da cor, e um atributo associado a longitude de onda dominante
na mistura das ondas luminosas. A Figura 6 mostra as cores da matiz com os seus respectivos
angulos no cırculo cromatico.
Figura 6 – Matiz.
A saturacao representa a pureza/intensidade de uma cor em particular. Quando uma cor
pura e misturada a cores neutras o seu grau de saturacao diminui. A Figura 7 mostra a
saturacao da cor vermelha para um valor de V = 1.
Figura 7 – Saturacao da Cor Vermelha.
A luminosidade e o termo utilizado para descrever o tao claro uma cor parece, o termo
refere-se a quantidade de luz percebida. A luminosidade representa o tao claro ou escuro
uma cor esta com relacao a sua cor pura. A Figura 8 mostra a luminosidade para um valor
de S=0.
Figura 8 – Luminosidade.
O modelo HSV e amplamente utilizado em visao computacional devido sua robustez na
identificacao de tonalidade (mistura de uma cor pura com uma cor neutra). Sendo esse
processo impossıvel de ser realizado no modelo RGB. A Figura 9 mostra o modelo de cor
HSV.
Figura 9 – Modelo de Cor HSV.
Para fazer as mascaras de cor, foram determinados valores maximos e mınimos para o H,
S e V. Com isso, somente o intervalo de coloracao desejado e identificado.
Apos o processo de segmentacao, a imagem e binarizada para se aplicar a transformada
circular de Hough. Com a transformada circular de Hough sao identificadas as coordenadas
x(i)I e y
(i)I dos centros dos cırculos.
3.2 Modelo de Camera Pinhole
O modelo de camera pinhole e um dos modelos mais simples e antigo de camera. Ele e
baseado nas cameras fotograficas escuras com um pequeno furo ao lado oposto do filme. a
distancia entre o furo e o filme fotografico e chamado de comprimento focal f , como pode
ser visualizando na Figura 10, o comprimento focal, o angulo do campo de visao da camera
(FOV) e as dimensoes do plano da imagem sao elementos dependentes entre si.
Figura 10 – Elementos das Cameras Escuras – Pinhole.
As figuras 11 e 13 (3) mostram a analise de um ponto i, em dois SCC. SC e o sistema de
coordenadas da camera, onde sua origem se localiza no ponto C (centro da camera), sendo
SC = {XC , YC , ZC}. SI e o sistema de coordenadas da imagem com sua origem no ponto P ,
ponto no qual o eixo principal intercepta o plano da imagem, SI = {XI , YI} . S(i)C sao as
coordenadas {xiC , yi
C , ziC} do ponto i no sistema SCC da camera, e S
(i)I sao as coordenadas
do ponto i no sistema SCC da imagem {xiI , yi
I}.
𝐘𝐂
𝐗𝐂 𝐘𝐈
𝐗𝐈
𝐏 𝐂
𝐙𝐂
𝐒𝐂(𝐢)
𝐩𝐫𝐢𝐧𝐜𝐢𝐩𝐚𝐥 𝐚𝐱𝐢𝐬
𝐢𝐦𝐚𝐠𝐞 𝐩𝐥𝐚𝐧𝐞
𝐒𝐈(𝐢)
𝐜𝐚𝐦𝐞𝐫𝐚 𝐜𝐞𝐧𝐭𝐞𝐫
Figura 11 – Camera Pinhole.
Analisando a Figura 13, e facilmente perceptıvel que ha uma relacao trigonometrica entre
as coordenadas S(i)I e S
(i)C .
Por semelhanca de triangulos chega-se a seguinte relacao entre o comprimento focal f e
𝐘𝐂
𝐙𝐂
𝐢𝐦𝐚𝐠𝐞 𝐩𝐥𝐚𝐧𝐞
𝐏
𝐂
𝐒𝐂(𝐢)
𝐒𝐈(𝐢)
𝐟
𝐲𝐂(𝐢)
𝐳𝐂(𝐢)
𝐟𝐲𝐂(𝐢)
𝐳𝐂(𝐢)
Figura 12 – Comprimento Focal.
as coordenadas nos dois sistemas (3):
x(i)I = fx
x(i)C
z(i)C
(3.1)
e
y(i)I = fy
y(i)C
z(i)C
. (3.2)
3.3 Metodo dos Mınimos Quadrados
Utilizando o processamento de imagens sao obtidas as coordenadas dos centros dos cırculos
(no caso do board de marcas coloridas), ou as coordenadas dos cantos dos quadrados (na chec-
kerboard). De acordo com as equacoes 3.1 e 3.2, adotando como conhecidas as coordenadas
S(i)C e a distancia ZC como um valor fixo. As coordenada x
(i)I e y
(i)I dos pontos i identificado,
onde i = {1, 2, ..., n}, podem ser representadas no seguinte formato matricial
[x
(1)I x
(2)I ... x
(n)I
]T= fx
[x
(1)C
zC
x(2)C
zC...
x(n)C
zC
]T
(3.3)
e
[y
(1)I y
(2)I ... y
(n)I
]T= fy
[y
(1)C
zC
y(2)C
zC...
y(n)C
zC
]T
. (3.4)
Onde as equacoes 3.3 e 3.4 podem ser reescritas como
Λx = fxϕx (3.5)
e
Λy = fyϕy. (3.6)
Usando o metodo dos mınimos quadrados (4) e possıvel encontrar o valor otimo dos
comprimentos focais.
fx ,[
ϕTx ϕx
]−1 [ϕT
x Λx
](3.7)
fy ,[
ϕTy ϕy
]−1 [ϕT
y Λy
]. (3.8)
4 Experimento
Nesse capıtulo sera mostrado o desenvolvimento e funcionalidade do sistema proposto nos
capıtulos anteriores.
4.1 Preparacao e Parametros do Experimento
Para um desempenho correto do sistema, deve-se seguir algumas especificacoes. A board
deve ser posicionada paralela ao plano da imagem, perpendicular ao eixo ZC , e o eixo ZG
coincidente com o eixo ZC(vide Figura 13 ). Os valores das posicoes dos elementos a serem
detectados pelos metodos de processamento de imagem no SCC SG devem ser conhecidos
(sendo SG , {XG, YG, ZG}). Com esses pre-requisitos satisfeitos, as coordenadas dos pontos
de interesse no SCC SC tornam-se iguais as coordenadas no SCC SG (sendo excecao as
coordenadas zi).
𝐂
𝐗𝐂
𝐘𝐂
𝐘𝐈 𝐗𝐈
𝐗𝐆
𝐘𝐆
𝐒𝐈(𝟏)
𝐒𝐈(𝟐)
𝐒𝐈(𝐧)
𝐒𝐂(𝟏)
𝐒𝐂(𝐧)
𝐒𝐂(𝟐)
𝐙𝐂 𝐎
𝐏
Figura 13 – Determinacao do Comprimento Focal.
As boards utilizadas no experimento tem as seguintes caracterısticas:
1 – A checkerboard e um plano com 17 quadrados brancos e 18 quadrados pretos, inter-
calados e com dimensoes 56x56 mm.
2 – A board de marca coloridas e um plano formado por 54 cırculos, sendo 18 vermelhos,
18 azuis e 18 verdes, nao havendo logica em sua distribuicao de cores. O diametro de cada
cırculo tem 19 mm. As distancias entre o centro de um cırculo em relacao ao centro dos
cırculos mais proximos e de 40 mm.
3 – A distancia entre a board e a camera (valor de zC) foi medido com uma trena, e seu
valor medido foi de 715 mm.
4 – Para a evitar interferencia de cores, a board deve estar a frente de um fundo branco.
Para a segmentacao de imagem foram adotados os seguintes parametros:
1 – No modo 1 de identificacao de cırculos, o valor do limiar e de T = 0.37.
2 – No modo 2 de identificacao de cırculos, o intervalo da matiz ficou em 0.060 ≥ H ≥0.868 . O intervalo da saturacao ficou em 1 ≥ S ≥ 0.444. O intervalo da luminosidade ficou
em 1 ≥ V ≥ 0.
3 – No modo 3 de identificacao de cırculos, o intervalo da matiz ficou em 0.533 ≥ H ≥0.147 . O intervalo da saturacao ficou em 1 ≥ S ≥ 0.253 . O intervalo da luminosidade ficou
em 0.923 ≥ V ≥ 0.
4 – No modo 4 de identificacao de cırculos, o intervalo da matiz ficou em 0.756 ≥ H ≥0.449 . O intervalo da saturacao ficou em 1 ≥ S ≥ 0.288. O intervalo da luminosidade ficou
em 1 ≥ V ≥ 0.
Para melhorar a imagem apos a segmentacao, foi utilizado em conjunto os metodos mor-
fologicos erosao e dilatacao.
Os dois layouts possıveis do experimento sao mostrados na Figura 14
Figura 14 – Possıveis Layouts.
4.2 Programa em linguagem MATLAB
Apos a inicializacao do script,conforme pode ser visualizado na Figura 17 ,e mostrado uma
janela com um vıdeo em tempo real da camera para que o usuario possa centralizar a mesma
em relacao a board utilizada.
Apos a camera estar bem centralizada, o programa solicita que seja digitado o valor da
distancia entre a board e a camera (valor de zC).
Figura 15 – Centralizacao da Camera.
Dado o valor de zC , o usuario tem a opcao de escolher entre as marcas coloridas e a
checkerboard. Caso o usuario escolha pela opcao 2 (marcas coloridas), o usuario deve escolher
um entre os quatros metodos de identificacao de cırculos.
Apos o usuario dar todos os dados necessarios, uma nova tela abrira com os pontos
detectados e os valores dos comprimentos focais.
A Figura 16 mostra o fluxograma de funcionamento do programa.
4.3 Resultados
Esta secao ira mostrar as imagens binarias apos a realizacao da segmentacao, e os compri-
mentos focais (em pixel) estimados em cada um dos modos.
A Figura 17 mostra os pontos identificados na checkerboard.
A Figura 18 mostra os circulo identificados pelo primeiro modo de segmentacao com sua
respectiva imagem binaria.
A Figura 18 mostra os circulo identificados pelo segundo modo de segmentacao com sua
respectiva imagem binaria.
A Figura 18 mostra os circulo identificados pelo terceiro modo de segmentacao com sua
respectiva imagem binaria.
A Figura 18 mostra os circulo identificados pelo quarto modo de segmentacao com sua
respectiva imagem binaria.
Os valores otimos calculados dos comprimentos focais sao mostrados na Tabela 1.
Aquisição da Câmera
1–CheckerBoard
2-Color Marks
Carrega as posições reais das
intersecções dos cantos
Detecta as coordenadas das
intersecções dos cantos
Valor de Zc
1
Centralização
da Câmera
Mostra a imagem
com os pontos
encontrados
2
1–Todas; 2- Red;
3-Blue; 4-Green
1
Carrega as posições
reais dos círculos
Transforma imagem
em escala de cinza
Detecta os círculos e
as coordenadas dos
centros
4
Carrega as posições
reais dos círculos
Segmentação e
binarização da
Imagem
Detecta os círculos e
as coordenadas dos
centros
Mostra a
imagem e os
círculos
Calcula ϕx e ϕy
Calcula λx e λy
Calcula fx e fy Mostra fx e fy
2
Carrega as posições
reais dos círculos
Segmentação e
binarização da
Imagem
Detecta os círculos
e as coordenadas
dos centros
3
Carrega as posições
reais dos círculos
Segmentação e
binarização da
Imagem
Detecta os círculos
e as coordenadas
dos centros
Figura 16 – Fluxograma.
Figura 17 – Checkerboard: Cantos Identificados.
Figura 18 – Todos os Cırculos: Imagem binaria e Cırculos Identificados.
Figura 19 – Cırculos Vermelhos: Imagem binaria e Cırculos Identificados.
Figura 20 – Cırculos Verdes: Imagem binaria e Cırculos Identificados.
Figura 21 – Cırculos Azuis: Imagem binaria e Cırculos Identificados.
Tabela 1 – Tabela dos Comprimentos Focais Identificados para Cada Modo.
Modo de Identificacao fx fy
Deteccao de cantos 588 586Segmentacao - 1 585 585Segmentacao - 2 586 586Segmentacao - 3 586 588Segmentacao - 4 586 586
5 Conclusao
O sistema para estimacao dos comprimentos focais utilizou metodos de identificacao de cantos
e segmentacao de imagem para identificar as coordenadas dos pontos de interesse nas imagens
(centro dos cırculos ou cantos dos quadrados). Utilizando o modelo de camera pinhole e
possıvel identificar os comprimentos focais, quando sao conhecidos as coordenadas do objeto
no sistema da imagem e do objeto no sistema da camera. Para a estimacao otima dos
comprimentos focais a partir das coordenadas dos i pontos de interesse foi utilizado o metodo
dos mınimos quadrados.
O processamento de imagem se mostrou robusto para identificacao de cantos e separacao
dos objetos de interesse de outros elementos da imagem. A transformada de Hough identificou
todos os cırculos nas imagens binarias sem problemas.
Nos cinco testes realizados, o sistema mostrou que os valores encontrados do comprimento
focal, para pontos de interesse distintos, ficaram com media 586 pixels e um desvio padrao
de 1 pixel.
Referencias
1 SANTANA, L. M. S. et al. A low-cost position and velocity estimation system formultirotor aerial vehicles using a static kinect sensor. Congresso Brasileiro de Automatica,2016.
2 GONZALEZ, R. C.; RICHARD, E. Digital image processing. ed: Prentice Hall Press,ISBN 0-201-18075-8, 2002.
3 HARTLEY, R.; ZISSERMAN, A. Multiple view geometry in computer vision. ed:Cambridge university press, ISBN 0-521-54051-8, 2003.
4 LJUNG, L. System identification: theory for the user. ed: Pearson Education, ISBN0-132-44053-9, 1998.
6 Anexos
6.1 Anexo A – Instalacao dos Complementos
Esse anexo apresenta o procedimento de instalacao dos Apps necessarios a execucao dos
algoritmos de calibracao de camera com o Maltab. A versao do Matlab utilizada para os
procedimentos descritos nesse relatorio e a R2015a, apresentada na Figura 22.
Figura 22 – MATLAB – versao R2015a.
O processo de calibracao necessita a conexao do MATLAB com cameras USB e um AddOn
de calibracao. A instalacao desses pacotes pode ser feita atraves do download dos respectivos
instaladores, disponıveis no site da MathWorks, desenvolvedora do MATLAB (Figura 23a),
ou por meio do proprio MATLAB, que oferece um mecanismo de busca e instalacao a partir
do ambiente do MATLAB (Figura 23b). Ambas funcionalidades fazem parte dos pacotes
de Processamento de Imagem e Visao Computacional do MATLAB, como apresentado na
Figura 23b.
6.2 Anexo B – Programa de Calibracao das Cameras
Este anexo apresenta o programa de calibracao implementado no Matlab e apresenta uma
breve descricao de seu funcionamento.
(a) (b)
Figura 23 – Opcoes de instalacao dos pacotes para o Matlab de comunicacao com camerasUSB e do sistema
O programa abaixo esta divido em quarto etapas:
1 – Capturar imagem de calibracao.
2 – Escolher metodo a ser utilizado.
3 – Calcular os parametros de calibracao.
4 – Apresentar os resultados em um grafico misto.
A conexao do Matlab com uma camera e efetuada atraves de uma variavel que recebe o
resultado da funcao webcam(1). Essa funcao possuı um parametro que representa o device a
que o Matlab devera ser conectado. Nesse caso o argumento da funcao e 1, e esse argumento
esta relacionado a qual camera voce deseja que o Matlab se conecte, sendo esse numero
variavel para o numero de cameras instaladas no sistema.
Como descrito no corpo deste relatorio, esse programa foi desenvolvido para efetuar o
calculo dos parametros da camera sob duas situacoes. Uma e utilizando uma funcao pronta
do pacote de processamento de imagens e visao computacional, utilizando o dashboard como
ferramenta. A outra e utilizando um conjunto de marcadores e implementando as funcoes de
calculo manualmente.
O procedimento de calculo e efetuado e por fim, o programa apresenta o foco em x e y
calculados.
//
imaqreset; clear; close; clc; warning(’off’)
cam = webcam(1);
cam.FocusMode = ’manual’;
for i = 1:5 pause (0.30) IM = snapshot(cam); end
DlgH = figure; title = title(’Camera Centralization’); set(title,’FontSize’,12); Button =
uicontrol(’Style’, ’PushButton’,’String’, ’OK’, ’Callback’, ’delete(gcbf)’);
hold on
while (ishandle(Button)) IM = snapshot(cam); imshow(IM)
hold on
line([0 640],[240 240],’LineWidth’,2) line([320 320],[0 480],’LineWidth’,2) end
close clear
prompt2 = ’What is the distance (in METERS!) between the Camera and the Calibration
board? ’;
zc = input(prompt2); clc
prompt1 = ’ For Checkerboard Calibration mode, enter 1.For ColorMark Calibration
mode, enter 2: ’; choose = input(prompt1); clc
cam = webcam(1);
cam.FocusMode = ’manual’;
for i = 1:10
pause (0.3)
IM = snapshot(cam);
end
if choose == 1 || choose == 2
if choose == 1
load(’xcCheckerboardcoordinates.mat′)load(’ycCheckerboardcoordinates.mat′)IM = snapshot(cam);
imshow(IM)
hold on
imagePoints = detectCheckerboardPoints(IM);
for j = 1:length(imagePoints)
viscircles(imagePoints(j,:),4,’EdgeColor’,’g’);
hold on
end
title = title(’Identified Points’);
set(title,’FontSize’,14);
else
prompt3 = ’ For Calibration using all ColorMaks, enter 1.For Calibration using Red
ColorMarks, enter 2. For Calibration using Green ColorMarks, enter 3: For Calibration
using Blue ColorMarks, enter 4:’; choosecircle = input(prompt3);clc
if choosecircle == 1load(’xcT otalColorMarks.mat′)load(’ycT otalColorMarks.mat′)IM = snapshot(cam);
imshow(IM)
hold
[BW] = AllMask(IM);
[imagePoints, radii] = imfindcircles(BW,[2, 25],’ObjectPolarity’,’bright’);
run(’OrdenaCirculos.m’)
raio = mean(radii)-3;
end
if choosecircle == 2load(’xcRED.mat′)load(’ycRED.mat′)IM = snapshot(cam); imshow(IM) hold on
BW = RedMask(IM);
[imagePoints, radii] = imfindcircles(BW,[2, 25],’ObjectPolarity’,’bright’);
run(’OrdenaCirculos.m’)
raio = mean(radii)-3;
end
if choosecircle == 3load(’xcGREEN.mat′)load(’ycGREEN.mat′)IM = snapshot(cam);
imshow(IM)
hold on
BW = GreenMask(IM);
[imagePoints, radii] = imfindcircles(BW,[2, 25],’ObjectPolarity’,’bright’);
run(’OrdenaCirculos.m’)
raio = mean(radii)-3;
end
if choosecircle == 4load(’xcBLUE.mat′)load(’ycBLUE.mat′)IM = snapshot(cam);
imshow(IM)
hold on
BW = BlueMask(IM);
[imagePoints, radii] = imfindcircles(BW,[2, 25],’ObjectPolarity’,’bright’);
run(’OrdenaCirculos.m’)
raio = mean(radii)-3;
end
for j = 1:length(imagePoints) viscircles(imagePoints(j,:),raio+4,’EdgeColor’,’black’);
hold on
pause(0.2)
end
title = title(’Identified ColorMarks’); set(title,’FontSize’,14);
end
phix = xc/zc;phiy = yc/zc;xi(:,1) = imagePoints(:,1) - 320*ones(length(imagePoints),1);
yi(:,1) = imagePoints(:,2) - 240*ones(length(imagePoints),1);
Lambdax = round(xi);Lambday = round(yi);fx = abs((phi′x ∗ phix)phi′x ∗ Lambdax));fy = abs((phi′y ∗ phiy)phi′y ∗ Lambday));fprintf(’Focal Length in x (fx):’)
disp(fx)
fprintf(’Focal Length in y (fy):’)
disp(fy)
else
clear ; close;
pause(1)
fprintf(’Calibration Mode not identified !!! ’)
pause(8)
clc;
end
clear cam;
imaqreset;