EXPERIMENTO PARA A
DISCIPLINA MPS-36
MODELAGEM E SIMULA¸C˜AO
DE SISTEMAS DINˆAMICOS
Identifica¸c˜ao dos comprimentos focais de
cˆameras
Luiz Manoel Santos Santana
S˜ao Jos´e dos Campos - SP
26 de Junho de 2016
Sum´ario
Sum´ario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Lista de ilustra¸c˜oes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1 INTRODU¸C˜AO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 COMPONENTES DO EXPERIMENTO . . . . . . . . . . . . . . . . . 5
2.1 Microsoft Lifecam Cinema . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Computador com MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Boards de Identifica¸c˜ao das Posi¸c˜oes . . . . . . . . . . . . . . . . . . . . 6
3 IDENTIFICA¸C˜AO DOS COMPRIMENTOS FOCAIS . . . . . . . . . . 7
3.1 Processamento de Imagem . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.1 Detec¸c˜ao de Cantos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.2 Segmenta¸c˜ao de Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 Modelo de Cˆamera Pinhole . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.3 M´etodo dos M´ınimos Quadrados . . . . . . . . . . . . . . . . . . . . . . . 12
4 EXPERIMENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.1 Prepara¸c˜ao e Parˆametros do Experimento . . . . . . . . . . . . . . . . . 14
4.2 Programa em linguagem MATLAB . . . . . . . . . . . . . . . . . . . . . 15
4.3 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5 CONCLUS˜AO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
REFERˆENCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6 ANEXOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.1 Anexo A – Instala¸c˜ao dos Complementos . . . . . . . . . . . . . . . . . . 22
6.2 Anexo B – Programa de Calibra¸c˜ao das Cˆameras . . . . . . . . . . . . . 22
Lista de ilustra¸c˜oes
Figura 1 – Vis˜ao geral do experimento. . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Figura 2 – Microsoft Lifecam Cinema. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Figura 3 – Boards Utilizadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Figura 4 – M´etodo de Harris para Identifica¸c˜ao de Cantos. . . . . . . . . . . . . . . . 7
Figura 5 – Exemplo de Separa¸c˜ao de Objetos Utilizando Limiariza¸c˜ao. . . . . . . . . . 8
Figura 6 – Matiz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Figura 7 – Satura¸c˜ao 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 – Cˆamera Pinhole. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Figura 12 – Comprimento Focal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Figura 13 – Determina¸c˜ao do Comprimento Focal. . . . . . . . . . . . . . . . . . . . . 14
Figura 14 – Poss´ıveis Layouts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Figura 15 – Centraliza¸c˜ao da Cˆamera. . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Figura 16 – Fluxograma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Figura 17 – Checkerboard: Cantos Identificados. . . . . . . . . . . . . . . . . . . . . . 18
Figura 18 – Todos os C´ırculos: Imagem bin´aria e C´ırculos Identificados. . . . . . . . . 18
Figura 19 – C´ırculos Vermelhos: Imagem bin´aria e C´ırculos Identificados. . . . . . . . . 18
Figura 20 – C´ırculos Verdes: Imagem bin´aria e C´ırculos Identificados. . . . . . . . . . . 19
Figura 21 – C´ırculos Azuis: Imagem bin´aria e C´ırculos Identificados. . . . . . . . . . . 19
Figura 22 – MATLAB – vers˜ao R2015a. . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Figura 23 – Op¸c˜oes de instala¸c˜ao dos pacotes para o Matlab de comunica¸c˜ao com cˆa-
meras USB e do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1 Introdu¸c˜ao
O presente relat´orio tem como objetivo mostrar o desenvolvimento te´orico e pr´atico de um
experimento para a disciplina MPS-36: Modelagem e Simula¸c˜ao de Sistemas Dinˆamicos,
do curso de gradua¸c˜ao em Engenharia Mecˆanica Aeron´autica do Instituto Tecnol´ogico de
Aeron´autica (ITA), sendo o experimento um dos requisitos do est´agio docˆencia da institui¸c˜ao.
O intuito do experimento ´e a identifica¸c˜ao de parˆametros intr´ınsecos de uma cˆamera
(comprimentos focais). Para a identifica¸c˜ao dos mesmos s˜ao utilizados m´etodos de vis˜ao
computacional, processamento de imagem e estima¸c˜ao ´otima de parˆametros.
Os comprimentos focais s˜ao parˆametros importantes para determinar a posi¸c˜ao de um
objeto com utiliza¸c˜ao de cˆameras. Em (1) os comprimentos focais s˜ao utilizados para a
determina¸c˜ao da posi¸c˜ao e velocidade de um robˆo a´ereo multirotor.
Os pr´oximos cap´ıtulos mostrar˜ao a teoria, o desenvolvimento, e o funcionamento do ex-
perimento.
2 Componentes do Experimento
Os trˆes principais componentes utilizados para a realiza¸c˜ao do experimento de estima¸c˜ao
dos comprimentos focais s˜ao: uma webcam microsoft lifecam cinema para a aquisi¸c˜ao das
imagens; um computador com o software MATLAB instalado, sendo o mesmo respons´avel
pelo tratamento da imagem, identifica¸c˜ao das coordenadas e c´alculo dos comprimentos focais;
uma board de identifica¸c˜ao, onde, em um lado h´a marcas coloridas, sendo os centros dessas
marcas posi¸c˜oes bem conhecidas, e do outro lado uma checkerboard com as posi¸c˜oes dos
cantos dos quadrados negros tamb´em bem conhecidas. A Figura 1 ilustra o sistema descrito.
Figura 1 – Vis˜ao geral do experimento.
2.1 Microsoft Lifecam Cinema
A cˆamera utilizada ´e a Microsoft lifecam cinema, essa webcam tem como principais caracte-
r´ısticas um sensor CMOS; uma taxa de aquisi¸c˜ao de imagem de 30 frames por segundo; um
campo de vis˜ao (FOV) em diagonal de 730
; e uma resolu¸c˜ao padr˜ao de imagem de 640x480
pixels. A sua utiliza¸c˜ao 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 cˆamera via interface USB. No software
MATLAB h´a tratamentos distintos para as imagens capturadas na checkerbord das captura-
das na board de marcas coloridas. Na checkerbord ´e utilizado um m´etodo para identifica¸c˜ao
de cantos, j´a a identifica¸c˜ao dos c´ırculos coloridos ´e realizada seguindo os seguintes passos:
segmenta¸c˜ao da cor desejada e a transformada circular de Hough. A partir das coordenadas
xI e yI encontradas, utilizando o modelo de cˆamera pinhole em conjunto com o m´etodo dos
m´ınimos quadrados, s˜ao calculados os valores ´otimos dos comprimentos focais fx e fy .
2.3 Boards de Identifica¸c˜ao das Posi¸c˜oes
A board de identifica¸c˜ao ´e um plano no qual est˜ao os pontos a serem identificados pelos
m´etodos de vis˜ao computacional. Foram utilizadas duas boards no experimento. Uma em
um padr˜ao 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 Identifica¸c˜ao dos Comprimentos Focais
O experimento de identifica¸c˜ao dos comprimentos focais ´e dividido em trˆes partes principais:
processamento de imagem, determina¸c˜ao do comprimento focal a partir do modelo de cˆamera
pinhole e a estima¸c˜ao ´otima com o m´etodo dos m´ınimos quadrados.
3.1 Processamento de Imagem
O processamento de imagem ´e a etapa na qual os elementos de interesse s˜ao separados
computacionalmente de outros elementos da imagem, com o intuito da identifica¸c˜ao de suas
coordenadas x
(i)
I , y
(i)
I em pixel. Foram utilizados m´etodos distintos para a identifica¸c˜ao das
marcas coloridas e do checkerboard. Os principais m´etodos utilizados foram a detec¸c˜ao de
cantos e a segmenta¸c˜ao de cores. No caso dos c´ırculos, para a detec¸c˜ao das coordenadas dos
centros, foi utilizada a transformada circular de Hough.
3.1.1 Detec¸c˜ao de Cantos
O algoritmo para a detec¸c˜ao de cantos ´e baseado no m´etodo Harris corner detector. O m´etodo
de Harris identifica cantos pela varia¸c˜ao do gradiente de intensidade da imagem nas dire¸c˜oes
Xi e Yi. O algoritmo varre todos os pixels da imagem com uma janela n x n pixels. Quando
encontrada uma grande varia¸c˜ao no gradiente da imagem em uma ´unica dire¸c˜ao, isso implica
que foi encontrada uma borda. Quando h´a uma grande varia¸c˜ao do gradiente de intensidade
nas dire¸c˜oes Xi e Yi simultaneamente, isso resulta que um canto foi detectado.
A Figura 4 demonstra os trˆes casos poss´ıveis:
Figura 4 – M´etodo de Harris para Identifica¸c˜ao de Cantos.
1 – Nenhuma grande varia¸c˜ao, em nenhum dos dois sentidos, do gradiente de intensidade
da imagem;
2 – Grande varia¸c˜ao do gradiente de intensidade da imagem em um sentido (borda);
3 – Grande varia¸c˜ao do gradiente de intensidade da imagem nos dois sentidos (canto);
Com os cantos identificados, s˜ao coletadas as suas respectivas coordenadas x
(i)
I e y
(i)
I .
3.1.2 Segmenta¸c˜ao de Cores
Na board de marcas coloridas s˜ao utilizados quatro formas de reconhecimento dos c´ırculos.
1 – Identificar e coletar a posi¸c˜ao de todos os c´ırculos;
2 – Identificar e coletar a posi¸c˜ao dos c´ırculos vermelhos;
3 – Identificar e coletar a posi¸c˜ao dos c´ırculos verdes;
4 – Identificar e coletar a posi¸c˜ao dos c´ırculos azuis.
No caso no
1, ´e utilizado limiariza¸c˜ao na imagem em escala de cinza, para a distin¸c˜ao dos
c´ırculos dentre os outros elementos da imagem.
A limiariza¸c˜ao ´e um m´etodo de segmenta¸c˜ao de imagem onde os elementos da imagem
s˜ao separados pelos seus respectivos n´ıveis de cinza. Adotando um valor para o limiar (T),
os pixels da imagem s˜ao divididos em dois grupos, no qual o valor do limiar ´e o separador
dos grupos. Com isso, a imagem torna-se bin´aria, 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 Separa¸c˜ao de Objetos Utilizando Limiariza¸c˜ao.
Uma imagem limiarizada pode ser representada pela seguinte fun¸c˜ao (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 s˜ao os pixels correspondentes aos elementos desejados. A
Figura 5 mostra um exemplo de limiariza¸c˜ao com trˆes valores distintos de limiar.
Nos casos no
2, 3 e 4 ´e utilizado o mesmo m´etodo de segmenta¸c˜ao. Sendo o mesmo a
segmenta¸c˜ao de cor no modelo HSV.
Para a sintoniza¸c˜ao via histogramas, ´e realizada a convers˜ao da imagem coletada pela
cˆamera no modelo de cor RGB para o modelo de HSV.
O modelo de cor HSV ´e uma extens˜ao do modelo RGB. O modelo RGB realiza a combina-
¸c˜ao das cores prim´arias para a decomposi¸c˜ao de outras cores. O modelo HSV, al´em de ter a
matiz de cores (H) como no modelo RGB, utiliza mais dois elementos principais, a satura¸c˜ao
(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 crom´atico.
Figura 6 – Matiz.
A satura¸c˜ao representa `a pureza/intensidade de uma cor em particular. Quando uma cor
pura ´e misturada `a cores neutras o seu grau de satura¸c˜ao diminui. A Figura 7 mostra a
satura¸c˜ao da cor vermelha para um valor de V = 1.
Figura 7 – Satura¸c˜ao da Cor Vermelha.
A luminosidade ´e o termo utilizado para descrever o t˜ao claro uma cor parece, o termo
refere-se a quantidade de luz percebida. A luminosidade representa o t˜ao claro ou escuro
uma cor est´a com rela¸c˜ao 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 vis˜ao computacional devido sua robustez na
identifica¸c˜ao 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 m´ascaras de cor, foram determinados valores m´aximos e m´ınimos para o H,
S e V. Com isso, somente o intervalo de colora¸c˜ao desejado ´e identificado.
Ap´os o processo de segmenta¸c˜ao, a imagem ´e binarizada para se aplicar a transformada
circular de Hough. Com a transformada circular de Hough s˜ao identificadas as coordenadas
x
(i)
I e y
(i)
I dos centros dos c´ırculos.
3.2 Modelo de Cˆamera Pinhole
O modelo de cˆamera pinhole ´e um dos modelos mais simples e antigo de cˆamera. Ele ´e
baseado nas cˆameras fotogr´aficas escuras com um pequeno furo ao lado oposto do filme. a
distˆancia entre o furo e o filme fotogr´afico ´e chamado de comprimento focal f, como pode
ser visualizando na Figura 10, o comprimento focal, o ˆangulo do campo de vis˜ao da cˆamera
(FOV) e as dimens˜oes do plano da imagem s˜ao elementos dependentes entre si.
Figura 10 – Elementos das Cameras Escuras – Pinhole.
As figuras 11 e 13 (3) mostram a an´alise de um ponto i, em dois SCC. SC ´e o sistema de
coordenadas da cˆamera, onde sua origem se localiza no ponto C (centro da cˆamera), 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 s˜ao as
coordenadas {xi
C, yi
C, zi
C} do ponto i no sistema SCC da cˆamera, e S
(i)
I s˜ao as coordenadas
do ponto i no sistema SCC da imagem {xi
I, yi
I}.
𝐘𝐂
𝐗 𝐂
𝐘𝐈
𝐗 𝐈
𝐏
𝐂
𝐙 𝐂
𝐒 𝐂
(𝐢)
𝐩𝐫𝐢𝐧𝐜𝐢𝐩𝐚𝐥 𝐚𝐱𝐢𝐬
𝐢𝐦𝐚𝐠𝐞 𝐩𝐥𝐚𝐧𝐞
𝐒𝐈
(𝐢)
𝐜𝐚𝐦𝐞𝐫𝐚 𝐜𝐞𝐧𝐭𝐞𝐫
Figura 11 – Cˆamera Pinhole.
Analisando a Figura 13, ´e facilmente percept´ıvel que h´a uma rela¸c˜ao trigonom´etrica entre
as coordenadas S
(i)
I e S
(i)
C .
Por semelhan¸ca de triˆangulos chega-se a seguinte rela¸c˜ao 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 M´etodo dos M´ınimos Quadrados
Utilizando o processamento de imagens s˜ao 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 equa¸c˜oes 3.1 e 3.2, adotando como conhecidas as coordenadas
S
(i)
C e a distˆancia 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 equa¸c˜oes 3.3 e 3.4 podem ser reescritas como
Λx = fxϕx (3.5)
e
Λy = fyϕy. (3.6)
Usando o m´etodo dos m´ınimos quadrados (4) ´e poss´ıvel encontrar o valor ´otimo dos
comprimentos focais.
fx ϕT
x ϕx
−1
ϕT
x Λx (3.7)
fy ϕT
y ϕy
−1
ϕT
y Λy . (3.8)
4 Experimento
Nesse cap´ıtulo ser´a mostrado o desenvolvimento e funcionalidade do sistema proposto nos
cap´ıtulos anteriores.
4.1 Prepara¸c˜ao e Parˆametros do Experimento
Para um desempenho correto do sistema, deve-se seguir algumas especifica¸c˜oes. 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 posi¸c˜oes dos elementos a serem
detectados pelos m´etodos de processamento de imagem no SCC SG devem ser conhecidos
(sendo SG {XG, YG, ZG}). Com esses pr´e-requisitos satisfeitos, as coordenadas dos pontos
de interesse no SCC SC tornam-se iguais as coordenadas no SCC SG (sendo exce¸c˜ao as
coordenadas zi).
𝐂
𝐗 𝐂
𝐘𝐂
𝐘𝐈
𝐗 𝐈
𝐗 𝐆
𝐘 𝐆
𝐒𝐈
(𝟏)
𝐒𝐈
(𝟐) 𝐒𝐈
(𝐧)
𝐒 𝐂
(𝟏)
𝐒 𝐂
(𝐧)
𝐒 𝐂
(𝟐)
𝐙 𝐂 𝐎
𝐏
Figura 13 – Determina¸c˜ao 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 dimens˜oes 56x56 mm.
2 – A board de marca coloridas ´e um plano formado por 54 c´ırculos, sendo 18 vermelhos,
18 azuis e 18 verdes, n˜ao havendo l´ogica em sua distribui¸c˜ao de cores. O diˆametro de cada
c´ırculo tem 19 mm. As distˆancias entre o centro de um c´ırculo em rela¸c˜ao ao centro dos
c´ırculos mais pr´oximos ´e de 40 mm.
3 – A distˆancia entre a board e a cˆamera (valor de zC) foi medido com uma trena, e seu
valor medido foi de 715 mm.
4 – Para a evitar interferˆencia de cores, a board deve estar a frente de um fundo branco.
Para a segmenta¸c˜ao de imagem foram adotados os seguintes parˆametros:
1 – No modo 1 de identifica¸c˜ao de c´ırculos, o valor do limiar ´e de T = 0.37.
2 – No modo 2 de identifica¸c˜ao de c´ırculos, o intervalo da matiz ficou em 0.060 ≥ H ≥
0.868 . O intervalo da satura¸c˜ao ficou em 1 ≥ S ≥ 0.444. O intervalo da luminosidade ficou
em 1 ≥ V ≥ 0.
3 – No modo 3 de identifica¸c˜ao de c´ırculos, o intervalo da matiz ficou em 0.533 ≥ H ≥
0.147 . O intervalo da satura¸c˜ao ficou em 1 ≥ S ≥ 0.253 . O intervalo da luminosidade ficou
em 0.923 ≥ V ≥ 0.
4 – No modo 4 de identifica¸c˜ao de c´ırculos, o intervalo da matiz ficou em 0.756 ≥ H ≥
0.449 . O intervalo da satura¸c˜ao ficou em 1 ≥ S ≥ 0.288. O intervalo da luminosidade ficou
em 1 ≥ V ≥ 0.
Para melhorar a imagem ap´os a segmenta¸c˜ao, foi utilizado em conjunto os m´etodos mor-
fol´ogicos eros˜ao e dilata¸c˜ao.
Os dois layouts poss´ıveis do experimento s˜ao mostrados na Figura 14
Figura 14 – Poss´ıveis Layouts.
4.2 Programa em linguagem MATLAB
Ap´os a inicializa¸c˜ao do script,conforme pode ser visualizado na Figura 17 ,´e mostrado uma
janela com um v´ıdeo em tempo real da cˆamera para que o usu´ario possa centralizar a mesma
em rela¸c˜ao a board utilizada.
Ap´os a cˆamera estar bem centralizada, o programa solicita que seja digitado o valor da
distˆancia entre a board e a cˆamera (valor de zC).
Figura 15 – Centraliza¸c˜ao da Cˆamera.
Dado o valor de zC, o usu´ario tem a op¸c˜ao de escolher entre as marcas coloridas e a
checkerboard. Caso o usu´ario escolha pela op¸c˜ao 2 (marcas coloridas), o usu´ario deve escolher
um entre os quatros m´etodos de identifica¸c˜ao de c´ırculos.
Ap´os o usu´ario dar todos os dados necess´arios, uma nova tela abrir´a com os pontos
detectados e os valores dos comprimentos focais.
A Figura 16 mostra o fluxograma de funcionamento do programa.
4.3 Resultados
Esta se¸c˜ao ir´a mostrar as imagens bin´arias ap´os a realiza¸c˜ao da segmenta¸c˜ao, 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 segmenta¸c˜ao com sua
respectiva imagem bin´aria.
A Figura 18 mostra os circulo identificados pelo segundo modo de segmenta¸c˜ao com sua
respectiva imagem bin´aria.
A Figura 18 mostra os circulo identificados pelo terceiro modo de segmenta¸c˜ao com sua
respectiva imagem bin´aria.
A Figura 18 mostra os circulo identificados pelo quarto modo de segmenta¸c˜ao com sua
respectiva imagem bin´aria.
Os valores ´otimos calculados dos comprimentos focais s˜ao 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 bin´aria e C´ırculos Identificados.
Figura 19 – C´ırculos Vermelhos: Imagem bin´aria e C´ırculos Identificados.
Figura 20 – C´ırculos Verdes: Imagem bin´aria e C´ırculos Identificados.
Figura 21 – C´ırculos Azuis: Imagem bin´aria e C´ırculos Identificados.
Tabela 1 – Tabela dos Comprimentos Focais Identificados para Cada Modo.
Modo de Identifica¸c˜ao fx fy
Detec¸c˜ao de cantos 588 586
Segmenta¸c˜ao - 1 585 585
Segmenta¸c˜ao - 2 586 586
Segmenta¸c˜ao - 3 586 588
Segmenta¸c˜ao - 4 586 586
5 Conclus˜ao
O sistema para estima¸c˜ao dos comprimentos focais utilizou m´etodos de identifica¸c˜ao de cantos
e segmenta¸c˜ao de imagem para identificar as coordenadas dos pontos de interesse nas imagens
(centro dos c´ırculos ou cantos dos quadrados). Utilizando o modelo de cˆamera pinhole ´e
poss´ıvel identificar os comprimentos focais, quando s˜ao conhecidos as coordenadas do objeto
no sistema da imagem e do objeto no sistema da cˆamera. Para a estima¸c˜ao ´otima dos
comprimentos focais a partir das coordenadas dos i pontos de interesse foi utilizado o m´etodo
dos m´ınimos quadrados.
O processamento de imagem se mostrou robusto para identifica¸c˜ao de cantos e separa¸c˜ao
dos objetos de interesse de outros elementos da imagem. A transformada de Hough identificou
todos os c´ırculos nas imagens bin´arias sem problemas.
Nos cinco testes realizados, o sistema mostrou que os valores encontrados do comprimento
focal, para pontos de interesse distintos, ficaram com m´edia 586 pixels e um desvio padr˜ao
de 1 pixel.
Referˆencias
1 SANTANA, L. M. S. et al. A low-cost position and velocity estimation system for
multirotor aerial vehicles using a static kinect sensor. Congresso Brasileiro de Autom´atica,
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, ISBN
0-132-44053-9, 1998.
6 Anexos
6.1 Anexo A – Instala¸c˜ao dos Complementos
Esse anexo apresenta o procedimento de instala¸c˜ao dos Apps necess´arios `a execu¸c˜ao dos
algoritmos de calibra¸c˜ao de cˆamera com o Maltab. A vers˜ao do Matlab utilizada para os
procedimentos descritos nesse relat´orio ´e a R2015a, apresentada na Figura 22.
Figura 22 – MATLAB – vers˜ao R2015a.
O processo de calibra¸c˜ao necessita a conex˜ao do MATLAB com cˆameras USB e um AddOn
de calibra¸c˜ao. A instala¸c˜ao desses pacotes pode ser feita atrav´es do download dos respectivos
instaladores, dispon´ıveis no site da MathWorks, desenvolvedora do MATLAB (Figura 23a),
ou por meio do pr´oprio MATLAB, que oferece um mecanismo de busca e instala¸c˜ao a partir
do ambiente do MATLAB (Figura 23b). Ambas funcionalidades fazem parte dos pacotes
de Processamento de Imagem e Vis˜ao Computacional do MATLAB, como apresentado na
Figura 23b.
6.2 Anexo B – Programa de Calibra¸c˜ao das Cˆameras
Este anexo apresenta o programa de calibra¸c˜ao implementado no Matlab e apresenta uma
breve descri¸c˜ao de seu funcionamento.
(a) (b)
Figura 23 – Op¸c˜oes de instala¸c˜ao dos pacotes para o Matlab de comunica¸c˜ao com cˆameras
USB e do sistema
O programa abaixo est´a divido em quarto etapas:
1 – Capturar imagem de calibra¸c˜ao.
2 – Escolher m´etodo a ser utilizado.
3 – Calcular os parˆametros de calibra¸c˜ao.
4 – Apresentar os resultados em um gr´afico misto.
A conex˜ao do Matlab com uma cˆamera ´e efetuada atrav´es de uma vari´avel que recebe o
resultado da fun¸c˜ao webcam(1). Essa fun¸c˜ao possu´ı um parˆametro que representa o device a
que o Matlab dever´a ser conectado. Nesse caso o argumento da fun¸c˜ao ´e 1, e esse argumento
est´a relacionado `a qual cˆamera vocˆe deseja que o Matlab se conecte, sendo esse n´umero
vari´avel para o n´umero de cˆameras instaladas no sistema.
Como descrito no corpo deste relat´orio, esse programa foi desenvolvido para efetuar o
c´alculo dos parˆametros da cˆamera sob duas situa¸c˜oes. Uma ´e utilizando uma fun¸c˜ao pronta
do pacote de processamento de imagens e vis˜ao computacional, utilizando o dashboard como
ferramenta. A outra ´e utilizando um conjunto de marcadores e implementando as fun¸c˜oes de
c´alculo manualmente.
O procedimento de c´alculo ´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 == 1
load(’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 == 2
load(’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 == 3
load(’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 == 4
load(’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((phix ∗ phix)phix ∗ Lambdax));
fy = abs((phiy ∗ phiy)phiy ∗ 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;

tg

  • 1.
    EXPERIMENTO PARA A DISCIPLINAMPS-36 MODELAGEM E SIMULA¸C˜AO DE SISTEMAS DINˆAMICOS Identifica¸c˜ao dos comprimentos focais de cˆameras Luiz Manoel Santos Santana S˜ao Jos´e dos Campos - SP 26 de Junho de 2016
  • 2.
    Sum´ario Sum´ario . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Lista de ilustra¸c˜oes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1 INTRODU¸C˜AO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 COMPONENTES DO EXPERIMENTO . . . . . . . . . . . . . . . . . 5 2.1 Microsoft Lifecam Cinema . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Computador com MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3 Boards de Identifica¸c˜ao das Posi¸c˜oes . . . . . . . . . . . . . . . . . . . . 6 3 IDENTIFICA¸C˜AO DOS COMPRIMENTOS FOCAIS . . . . . . . . . . 7 3.1 Processamento de Imagem . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.1.1 Detec¸c˜ao de Cantos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.1.2 Segmenta¸c˜ao de Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2 Modelo de Cˆamera Pinhole . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.3 M´etodo dos M´ınimos Quadrados . . . . . . . . . . . . . . . . . . . . . . . 12 4 EXPERIMENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.1 Prepara¸c˜ao e Parˆametros do Experimento . . . . . . . . . . . . . . . . . 14 4.2 Programa em linguagem MATLAB . . . . . . . . . . . . . . . . . . . . . 15 4.3 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5 CONCLUS˜AO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 REFERˆENCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6 ANEXOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.1 Anexo A – Instala¸c˜ao dos Complementos . . . . . . . . . . . . . . . . . . 22 6.2 Anexo B – Programa de Calibra¸c˜ao das Cˆameras . . . . . . . . . . . . . 22
  • 3.
    Lista de ilustra¸c˜oes Figura1 – Vis˜ao geral do experimento. . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Figura 2 – Microsoft Lifecam Cinema. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Figura 3 – Boards Utilizadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Figura 4 – M´etodo de Harris para Identifica¸c˜ao de Cantos. . . . . . . . . . . . . . . . 7 Figura 5 – Exemplo de Separa¸c˜ao de Objetos Utilizando Limiariza¸c˜ao. . . . . . . . . . 8 Figura 6 – Matiz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Figura 7 – Satura¸c˜ao 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 – Cˆamera Pinhole. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Figura 12 – Comprimento Focal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Figura 13 – Determina¸c˜ao do Comprimento Focal. . . . . . . . . . . . . . . . . . . . . 14 Figura 14 – Poss´ıveis Layouts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Figura 15 – Centraliza¸c˜ao da Cˆamera. . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Figura 16 – Fluxograma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Figura 17 – Checkerboard: Cantos Identificados. . . . . . . . . . . . . . . . . . . . . . 18 Figura 18 – Todos os C´ırculos: Imagem bin´aria e C´ırculos Identificados. . . . . . . . . 18 Figura 19 – C´ırculos Vermelhos: Imagem bin´aria e C´ırculos Identificados. . . . . . . . . 18 Figura 20 – C´ırculos Verdes: Imagem bin´aria e C´ırculos Identificados. . . . . . . . . . . 19 Figura 21 – C´ırculos Azuis: Imagem bin´aria e C´ırculos Identificados. . . . . . . . . . . 19 Figura 22 – MATLAB – vers˜ao R2015a. . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Figura 23 – Op¸c˜oes de instala¸c˜ao dos pacotes para o Matlab de comunica¸c˜ao com cˆa- meras USB e do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
  • 4.
    1 Introdu¸c˜ao O presenterelat´orio tem como objetivo mostrar o desenvolvimento te´orico e pr´atico de um experimento para a disciplina MPS-36: Modelagem e Simula¸c˜ao de Sistemas Dinˆamicos, do curso de gradua¸c˜ao em Engenharia Mecˆanica Aeron´autica do Instituto Tecnol´ogico de Aeron´autica (ITA), sendo o experimento um dos requisitos do est´agio docˆencia da institui¸c˜ao. O intuito do experimento ´e a identifica¸c˜ao de parˆametros intr´ınsecos de uma cˆamera (comprimentos focais). Para a identifica¸c˜ao dos mesmos s˜ao utilizados m´etodos de vis˜ao computacional, processamento de imagem e estima¸c˜ao ´otima de parˆametros. Os comprimentos focais s˜ao parˆametros importantes para determinar a posi¸c˜ao de um objeto com utiliza¸c˜ao de cˆameras. Em (1) os comprimentos focais s˜ao utilizados para a determina¸c˜ao da posi¸c˜ao e velocidade de um robˆo a´ereo multirotor. Os pr´oximos cap´ıtulos mostrar˜ao a teoria, o desenvolvimento, e o funcionamento do ex- perimento.
  • 5.
    2 Componentes doExperimento Os trˆes principais componentes utilizados para a realiza¸c˜ao do experimento de estima¸c˜ao dos comprimentos focais s˜ao: uma webcam microsoft lifecam cinema para a aquisi¸c˜ao das imagens; um computador com o software MATLAB instalado, sendo o mesmo respons´avel pelo tratamento da imagem, identifica¸c˜ao das coordenadas e c´alculo dos comprimentos focais; uma board de identifica¸c˜ao, onde, em um lado h´a marcas coloridas, sendo os centros dessas marcas posi¸c˜oes bem conhecidas, e do outro lado uma checkerboard com as posi¸c˜oes dos cantos dos quadrados negros tamb´em bem conhecidas. A Figura 1 ilustra o sistema descrito. Figura 1 – Vis˜ao geral do experimento. 2.1 Microsoft Lifecam Cinema A cˆamera utilizada ´e a Microsoft lifecam cinema, essa webcam tem como principais caracte- r´ısticas um sensor CMOS; uma taxa de aquisi¸c˜ao de imagem de 30 frames por segundo; um campo de vis˜ao (FOV) em diagonal de 730 ; e uma resolu¸c˜ao padr˜ao de imagem de 640x480 pixels. A sua utiliza¸c˜ao 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.
  • 6.
    Figura 2 –Microsoft Lifecam Cinema. 2.2 Computador com MATLAB O microcomputador recebe os dados enviado pela cˆamera via interface USB. No software MATLAB h´a tratamentos distintos para as imagens capturadas na checkerbord das captura- das na board de marcas coloridas. Na checkerbord ´e utilizado um m´etodo para identifica¸c˜ao de cantos, j´a a identifica¸c˜ao dos c´ırculos coloridos ´e realizada seguindo os seguintes passos: segmenta¸c˜ao da cor desejada e a transformada circular de Hough. A partir das coordenadas xI e yI encontradas, utilizando o modelo de cˆamera pinhole em conjunto com o m´etodo dos m´ınimos quadrados, s˜ao calculados os valores ´otimos dos comprimentos focais fx e fy . 2.3 Boards de Identifica¸c˜ao das Posi¸c˜oes A board de identifica¸c˜ao ´e um plano no qual est˜ao os pontos a serem identificados pelos m´etodos de vis˜ao computacional. Foram utilizadas duas boards no experimento. Uma em um padr˜ao quadriculado em preto e branco e a outra com c´ırculos vermelhos, azuis e verdes, conforme ilustrado na Figura 3. Figura 3 – Boards Utilizadas.
  • 7.
    3 Identifica¸c˜ao dosComprimentos Focais O experimento de identifica¸c˜ao dos comprimentos focais ´e dividido em trˆes partes principais: processamento de imagem, determina¸c˜ao do comprimento focal a partir do modelo de cˆamera pinhole e a estima¸c˜ao ´otima com o m´etodo dos m´ınimos quadrados. 3.1 Processamento de Imagem O processamento de imagem ´e a etapa na qual os elementos de interesse s˜ao separados computacionalmente de outros elementos da imagem, com o intuito da identifica¸c˜ao de suas coordenadas x (i) I , y (i) I em pixel. Foram utilizados m´etodos distintos para a identifica¸c˜ao das marcas coloridas e do checkerboard. Os principais m´etodos utilizados foram a detec¸c˜ao de cantos e a segmenta¸c˜ao de cores. No caso dos c´ırculos, para a detec¸c˜ao das coordenadas dos centros, foi utilizada a transformada circular de Hough. 3.1.1 Detec¸c˜ao de Cantos O algoritmo para a detec¸c˜ao de cantos ´e baseado no m´etodo Harris corner detector. O m´etodo de Harris identifica cantos pela varia¸c˜ao do gradiente de intensidade da imagem nas dire¸c˜oes Xi e Yi. O algoritmo varre todos os pixels da imagem com uma janela n x n pixels. Quando encontrada uma grande varia¸c˜ao no gradiente da imagem em uma ´unica dire¸c˜ao, isso implica que foi encontrada uma borda. Quando h´a uma grande varia¸c˜ao do gradiente de intensidade nas dire¸c˜oes Xi e Yi simultaneamente, isso resulta que um canto foi detectado. A Figura 4 demonstra os trˆes casos poss´ıveis: Figura 4 – M´etodo de Harris para Identifica¸c˜ao de Cantos.
  • 8.
    1 – Nenhumagrande varia¸c˜ao, em nenhum dos dois sentidos, do gradiente de intensidade da imagem; 2 – Grande varia¸c˜ao do gradiente de intensidade da imagem em um sentido (borda); 3 – Grande varia¸c˜ao do gradiente de intensidade da imagem nos dois sentidos (canto); Com os cantos identificados, s˜ao coletadas as suas respectivas coordenadas x (i) I e y (i) I . 3.1.2 Segmenta¸c˜ao de Cores Na board de marcas coloridas s˜ao utilizados quatro formas de reconhecimento dos c´ırculos. 1 – Identificar e coletar a posi¸c˜ao de todos os c´ırculos; 2 – Identificar e coletar a posi¸c˜ao dos c´ırculos vermelhos; 3 – Identificar e coletar a posi¸c˜ao dos c´ırculos verdes; 4 – Identificar e coletar a posi¸c˜ao dos c´ırculos azuis. No caso no 1, ´e utilizado limiariza¸c˜ao na imagem em escala de cinza, para a distin¸c˜ao dos c´ırculos dentre os outros elementos da imagem. A limiariza¸c˜ao ´e um m´etodo de segmenta¸c˜ao de imagem onde os elementos da imagem s˜ao separados pelos seus respectivos n´ıveis de cinza. Adotando um valor para o limiar (T), os pixels da imagem s˜ao divididos em dois grupos, no qual o valor do limiar ´e o separador dos grupos. Com isso, a imagem torna-se bin´aria, 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 Separa¸c˜ao de Objetos Utilizando Limiariza¸c˜ao.
  • 9.
    Uma imagem limiarizadapode ser representada pela seguinte fun¸c˜ao (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 s˜ao os pixels correspondentes aos elementos desejados. A Figura 5 mostra um exemplo de limiariza¸c˜ao com trˆes valores distintos de limiar. Nos casos no 2, 3 e 4 ´e utilizado o mesmo m´etodo de segmenta¸c˜ao. Sendo o mesmo a segmenta¸c˜ao de cor no modelo HSV. Para a sintoniza¸c˜ao via histogramas, ´e realizada a convers˜ao da imagem coletada pela cˆamera no modelo de cor RGB para o modelo de HSV. O modelo de cor HSV ´e uma extens˜ao do modelo RGB. O modelo RGB realiza a combina- ¸c˜ao das cores prim´arias para a decomposi¸c˜ao de outras cores. O modelo HSV, al´em de ter a matiz de cores (H) como no modelo RGB, utiliza mais dois elementos principais, a satura¸c˜ao (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 crom´atico. Figura 6 – Matiz. A satura¸c˜ao representa `a pureza/intensidade de uma cor em particular. Quando uma cor pura ´e misturada `a cores neutras o seu grau de satura¸c˜ao diminui. A Figura 7 mostra a satura¸c˜ao da cor vermelha para um valor de V = 1. Figura 7 – Satura¸c˜ao da Cor Vermelha. A luminosidade ´e o termo utilizado para descrever o t˜ao claro uma cor parece, o termo refere-se a quantidade de luz percebida. A luminosidade representa o t˜ao claro ou escuro uma cor est´a com rela¸c˜ao a sua cor pura. A Figura 8 mostra a luminosidade para um valor de S=0.
  • 10.
    Figura 8 –Luminosidade. O modelo HSV ´e amplamente utilizado em vis˜ao computacional devido sua robustez na identifica¸c˜ao 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 m´ascaras de cor, foram determinados valores m´aximos e m´ınimos para o H, S e V. Com isso, somente o intervalo de colora¸c˜ao desejado ´e identificado. Ap´os o processo de segmenta¸c˜ao, a imagem ´e binarizada para se aplicar a transformada circular de Hough. Com a transformada circular de Hough s˜ao identificadas as coordenadas x (i) I e y (i) I dos centros dos c´ırculos. 3.2 Modelo de Cˆamera Pinhole O modelo de cˆamera pinhole ´e um dos modelos mais simples e antigo de cˆamera. Ele ´e baseado nas cˆameras fotogr´aficas escuras com um pequeno furo ao lado oposto do filme. a distˆancia entre o furo e o filme fotogr´afico ´e chamado de comprimento focal f, como pode ser visualizando na Figura 10, o comprimento focal, o ˆangulo do campo de vis˜ao da cˆamera (FOV) e as dimens˜oes do plano da imagem s˜ao elementos dependentes entre si.
  • 11.
    Figura 10 –Elementos das Cameras Escuras – Pinhole. As figuras 11 e 13 (3) mostram a an´alise de um ponto i, em dois SCC. SC ´e o sistema de coordenadas da cˆamera, onde sua origem se localiza no ponto C (centro da cˆamera), 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 s˜ao as coordenadas {xi C, yi C, zi C} do ponto i no sistema SCC da cˆamera, e S (i) I s˜ao as coordenadas do ponto i no sistema SCC da imagem {xi I, yi I}. 𝐘𝐂 𝐗 𝐂 𝐘𝐈 𝐗 𝐈 𝐏 𝐂 𝐙 𝐂 𝐒 𝐂 (𝐢) 𝐩𝐫𝐢𝐧𝐜𝐢𝐩𝐚𝐥 𝐚𝐱𝐢𝐬 𝐢𝐦𝐚𝐠𝐞 𝐩𝐥𝐚𝐧𝐞 𝐒𝐈 (𝐢) 𝐜𝐚𝐦𝐞𝐫𝐚 𝐜𝐞𝐧𝐭𝐞𝐫 Figura 11 – Cˆamera Pinhole. Analisando a Figura 13, ´e facilmente percept´ıvel que h´a uma rela¸c˜ao trigonom´etrica entre as coordenadas S (i) I e S (i) C . Por semelhan¸ca de triˆangulos chega-se a seguinte rela¸c˜ao entre o comprimento focal f e
  • 12.
    𝐘𝐂 𝐙 𝐂 𝐢𝐦𝐚𝐠𝐞 𝐩𝐥𝐚𝐧𝐞 𝐏 𝐂 𝐒𝐂 (𝐢) 𝐒𝐈 (𝐢) 𝐟 𝐲 𝐂 (𝐢) 𝐳 𝐂 (𝐢) 𝐟 𝐲 𝐂 (𝐢) 𝐳 𝐂 (𝐢) 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 M´etodo dos M´ınimos Quadrados Utilizando o processamento de imagens s˜ao 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 equa¸c˜oes 3.1 e 3.2, adotando como conhecidas as coordenadas S (i) C e a distˆancia 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)
  • 13.
    Onde as equa¸c˜oes3.3 e 3.4 podem ser reescritas como Λx = fxϕx (3.5) e Λy = fyϕy. (3.6) Usando o m´etodo dos m´ınimos quadrados (4) ´e poss´ıvel encontrar o valor ´otimo dos comprimentos focais. fx ϕT x ϕx −1 ϕT x Λx (3.7) fy ϕT y ϕy −1 ϕT y Λy . (3.8)
  • 14.
    4 Experimento Nesse cap´ıtuloser´a mostrado o desenvolvimento e funcionalidade do sistema proposto nos cap´ıtulos anteriores. 4.1 Prepara¸c˜ao e Parˆametros do Experimento Para um desempenho correto do sistema, deve-se seguir algumas especifica¸c˜oes. 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 posi¸c˜oes dos elementos a serem detectados pelos m´etodos de processamento de imagem no SCC SG devem ser conhecidos (sendo SG {XG, YG, ZG}). Com esses pr´e-requisitos satisfeitos, as coordenadas dos pontos de interesse no SCC SC tornam-se iguais as coordenadas no SCC SG (sendo exce¸c˜ao as coordenadas zi). 𝐂 𝐗 𝐂 𝐘𝐂 𝐘𝐈 𝐗 𝐈 𝐗 𝐆 𝐘 𝐆 𝐒𝐈 (𝟏) 𝐒𝐈 (𝟐) 𝐒𝐈 (𝐧) 𝐒 𝐂 (𝟏) 𝐒 𝐂 (𝐧) 𝐒 𝐂 (𝟐) 𝐙 𝐂 𝐎 𝐏 Figura 13 – Determina¸c˜ao 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 dimens˜oes 56x56 mm. 2 – A board de marca coloridas ´e um plano formado por 54 c´ırculos, sendo 18 vermelhos, 18 azuis e 18 verdes, n˜ao havendo l´ogica em sua distribui¸c˜ao de cores. O diˆametro de cada c´ırculo tem 19 mm. As distˆancias entre o centro de um c´ırculo em rela¸c˜ao ao centro dos c´ırculos mais pr´oximos ´e de 40 mm.
  • 15.
    3 – Adistˆancia entre a board e a cˆamera (valor de zC) foi medido com uma trena, e seu valor medido foi de 715 mm. 4 – Para a evitar interferˆencia de cores, a board deve estar a frente de um fundo branco. Para a segmenta¸c˜ao de imagem foram adotados os seguintes parˆametros: 1 – No modo 1 de identifica¸c˜ao de c´ırculos, o valor do limiar ´e de T = 0.37. 2 – No modo 2 de identifica¸c˜ao de c´ırculos, o intervalo da matiz ficou em 0.060 ≥ H ≥ 0.868 . O intervalo da satura¸c˜ao ficou em 1 ≥ S ≥ 0.444. O intervalo da luminosidade ficou em 1 ≥ V ≥ 0. 3 – No modo 3 de identifica¸c˜ao de c´ırculos, o intervalo da matiz ficou em 0.533 ≥ H ≥ 0.147 . O intervalo da satura¸c˜ao ficou em 1 ≥ S ≥ 0.253 . O intervalo da luminosidade ficou em 0.923 ≥ V ≥ 0. 4 – No modo 4 de identifica¸c˜ao de c´ırculos, o intervalo da matiz ficou em 0.756 ≥ H ≥ 0.449 . O intervalo da satura¸c˜ao ficou em 1 ≥ S ≥ 0.288. O intervalo da luminosidade ficou em 1 ≥ V ≥ 0. Para melhorar a imagem ap´os a segmenta¸c˜ao, foi utilizado em conjunto os m´etodos mor- fol´ogicos eros˜ao e dilata¸c˜ao. Os dois layouts poss´ıveis do experimento s˜ao mostrados na Figura 14 Figura 14 – Poss´ıveis Layouts. 4.2 Programa em linguagem MATLAB Ap´os a inicializa¸c˜ao do script,conforme pode ser visualizado na Figura 17 ,´e mostrado uma janela com um v´ıdeo em tempo real da cˆamera para que o usu´ario possa centralizar a mesma em rela¸c˜ao a board utilizada. Ap´os a cˆamera estar bem centralizada, o programa solicita que seja digitado o valor da distˆancia entre a board e a cˆamera (valor de zC).
  • 16.
    Figura 15 –Centraliza¸c˜ao da Cˆamera. Dado o valor de zC, o usu´ario tem a op¸c˜ao de escolher entre as marcas coloridas e a checkerboard. Caso o usu´ario escolha pela op¸c˜ao 2 (marcas coloridas), o usu´ario deve escolher um entre os quatros m´etodos de identifica¸c˜ao de c´ırculos. Ap´os o usu´ario dar todos os dados necess´arios, uma nova tela abrir´a com os pontos detectados e os valores dos comprimentos focais. A Figura 16 mostra o fluxograma de funcionamento do programa. 4.3 Resultados Esta se¸c˜ao ir´a mostrar as imagens bin´arias ap´os a realiza¸c˜ao da segmenta¸c˜ao, 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 segmenta¸c˜ao com sua respectiva imagem bin´aria. A Figura 18 mostra os circulo identificados pelo segundo modo de segmenta¸c˜ao com sua respectiva imagem bin´aria. A Figura 18 mostra os circulo identificados pelo terceiro modo de segmenta¸c˜ao com sua respectiva imagem bin´aria. A Figura 18 mostra os circulo identificados pelo quarto modo de segmenta¸c˜ao com sua respectiva imagem bin´aria. Os valores ´otimos calculados dos comprimentos focais s˜ao mostrados na Tabela 1.
  • 17.
    Aquisição da Câmera 1–CheckerBoard 2-ColorMarks 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.
  • 18.
    Figura 17 –Checkerboard: Cantos Identificados. Figura 18 – Todos os C´ırculos: Imagem bin´aria e C´ırculos Identificados. Figura 19 – C´ırculos Vermelhos: Imagem bin´aria e C´ırculos Identificados.
  • 19.
    Figura 20 –C´ırculos Verdes: Imagem bin´aria e C´ırculos Identificados. Figura 21 – C´ırculos Azuis: Imagem bin´aria e C´ırculos Identificados. Tabela 1 – Tabela dos Comprimentos Focais Identificados para Cada Modo. Modo de Identifica¸c˜ao fx fy Detec¸c˜ao de cantos 588 586 Segmenta¸c˜ao - 1 585 585 Segmenta¸c˜ao - 2 586 586 Segmenta¸c˜ao - 3 586 588 Segmenta¸c˜ao - 4 586 586
  • 20.
    5 Conclus˜ao O sistemapara estima¸c˜ao dos comprimentos focais utilizou m´etodos de identifica¸c˜ao de cantos e segmenta¸c˜ao de imagem para identificar as coordenadas dos pontos de interesse nas imagens (centro dos c´ırculos ou cantos dos quadrados). Utilizando o modelo de cˆamera pinhole ´e poss´ıvel identificar os comprimentos focais, quando s˜ao conhecidos as coordenadas do objeto no sistema da imagem e do objeto no sistema da cˆamera. Para a estima¸c˜ao ´otima dos comprimentos focais a partir das coordenadas dos i pontos de interesse foi utilizado o m´etodo dos m´ınimos quadrados. O processamento de imagem se mostrou robusto para identifica¸c˜ao de cantos e separa¸c˜ao dos objetos de interesse de outros elementos da imagem. A transformada de Hough identificou todos os c´ırculos nas imagens bin´arias sem problemas. Nos cinco testes realizados, o sistema mostrou que os valores encontrados do comprimento focal, para pontos de interesse distintos, ficaram com m´edia 586 pixels e um desvio padr˜ao de 1 pixel.
  • 21.
    Referˆencias 1 SANTANA, L.M. S. et al. A low-cost position and velocity estimation system for multirotor aerial vehicles using a static kinect sensor. Congresso Brasileiro de Autom´atica, 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, ISBN 0-132-44053-9, 1998.
  • 22.
    6 Anexos 6.1 AnexoA – Instala¸c˜ao dos Complementos Esse anexo apresenta o procedimento de instala¸c˜ao dos Apps necess´arios `a execu¸c˜ao dos algoritmos de calibra¸c˜ao de cˆamera com o Maltab. A vers˜ao do Matlab utilizada para os procedimentos descritos nesse relat´orio ´e a R2015a, apresentada na Figura 22. Figura 22 – MATLAB – vers˜ao R2015a. O processo de calibra¸c˜ao necessita a conex˜ao do MATLAB com cˆameras USB e um AddOn de calibra¸c˜ao. A instala¸c˜ao desses pacotes pode ser feita atrav´es do download dos respectivos instaladores, dispon´ıveis no site da MathWorks, desenvolvedora do MATLAB (Figura 23a), ou por meio do pr´oprio MATLAB, que oferece um mecanismo de busca e instala¸c˜ao a partir do ambiente do MATLAB (Figura 23b). Ambas funcionalidades fazem parte dos pacotes de Processamento de Imagem e Vis˜ao Computacional do MATLAB, como apresentado na Figura 23b. 6.2 Anexo B – Programa de Calibra¸c˜ao das Cˆameras Este anexo apresenta o programa de calibra¸c˜ao implementado no Matlab e apresenta uma breve descri¸c˜ao de seu funcionamento.
  • 23.
    (a) (b) Figura 23– Op¸c˜oes de instala¸c˜ao dos pacotes para o Matlab de comunica¸c˜ao com cˆameras USB e do sistema O programa abaixo est´a divido em quarto etapas: 1 – Capturar imagem de calibra¸c˜ao. 2 – Escolher m´etodo a ser utilizado. 3 – Calcular os parˆametros de calibra¸c˜ao. 4 – Apresentar os resultados em um gr´afico misto. A conex˜ao do Matlab com uma cˆamera ´e efetuada atrav´es de uma vari´avel que recebe o resultado da fun¸c˜ao webcam(1). Essa fun¸c˜ao possu´ı um parˆametro que representa o device a que o Matlab dever´a ser conectado. Nesse caso o argumento da fun¸c˜ao ´e 1, e esse argumento est´a relacionado `a qual cˆamera vocˆe deseja que o Matlab se conecte, sendo esse n´umero vari´avel para o n´umero de cˆameras instaladas no sistema. Como descrito no corpo deste relat´orio, esse programa foi desenvolvido para efetuar o c´alculo dos parˆametros da cˆamera sob duas situa¸c˜oes. Uma ´e utilizando uma fun¸c˜ao pronta do pacote de processamento de imagens e vis˜ao computacional, utilizando o dashboard como ferramenta. A outra ´e utilizando um conjunto de marcadores e implementando as fun¸c˜oes de c´alculo manualmente. O procedimento de c´alculo ´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)
  • 24.
    hold on line([0 640],[240240],’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 == 1 load(’xcT otalColorMarks.mat ) load(’ycT otalColorMarks.mat ) IM = snapshot(cam);
  • 25.
    imshow(IM) hold [BW] = AllMask(IM); [imagePoints,radii] = imfindcircles(BW,[2, 25],’ObjectPolarity’,’bright’); run(’OrdenaCirculos.m’) raio = mean(radii)-3; end if choosecircle == 2 load(’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 == 3 load(’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 == 4 load(’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;
  • 26.
    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((phix ∗ phix)phix ∗ Lambdax)); fy = abs((phiy ∗ phiy)phiy ∗ 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;