LuisEnriqueOrtizFernandez DISSERT

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 74

U NIVERSIDADE F EDERAL DO R IO G RANDE DO N ORTE

C ENTRO DE T ECNOLOGIA
PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA
UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE

MECATRÔNICA

Método Genérico para Estimação e Modelagem


do Erro RMS em Dados de Profundidade de
Sensores para Visão 3D

Luis Enrique Ortiz Fernandez

Orientador: Prof. Dr. Luiz Marcos Garcia Gonçalves

Dissertação de Mestrado apresentada ao


Programa de Pós-Graduação em Engenharia
Mecatrônica da UFRN (área de concentra-
ção: Sistemas Mecatrônicos) como parte dos
requisitos para obtenção do título de Mestre
em Ciências.

Número de ordem PEM: M009


Natal, RN, julho de 2017
Universidade Federal do Rio Grande do Norte - UFRN
Sistema de Bibliotecas - SISBI
Catalogação de Publicação na Fonte. UFRN - Biblioteca Central Zila Mamede

Ortiz, Luis Enrique Fernandez.


Método genérico para estimação e modelagem do erro RMS em
dados de profundidade de sensores para visão 3D / Luis Enrique
Ortiz Fernandez. - 2017.
62 f.: il.

Dissertação (mestrado) - Universidade Federal do Rio Grande


do Norte, Departamento de Engenharia de Computação e Automação,
Pós-Graduação em Engenharia Mecatrônica. Natal, RN, 2017.
Orientador: Prof. Dr. Luiz Marcos Garcia Gonçalves.

1. Sensores 3D - Dissertação. 2. Visão computacional -


Dissertação. 3. Mapa de profundidade - Dissertação. 4. Erro RMS
- Dissertação. 5. Sistema embarcado - Dissertação. I. Gonçalves,
Luiz Marcos Garcia. II. Título.

RN/UF/BCZM CDU 681.586:004


A minha mãe, Gloria F.
Agradecimentos

A Deus, por me dar a vida e a oportunidade de me desenvolver como ser humano e


profissional.

A minha tia, Teresa, por sempre me ajudar e apoiar a alcançar meus sonhos.

A Viviana, por seu amor, paciência, compreensão e apoio, mesmo nos momentos mais
difíceis.

Ao professor Luiz Marcos, por sua orientação e amizade.

Aos colegas do Laboratório NatalNet, pelas ideias e sugestões.

À CAPES, pelo apoio financeiro.


Resumo

Na visão artificial usam-se vários dispositivos como o MS Kinect v1/v2, as câmeras


estéreo PG Bumblebee XB3 e a Stereolabs ZED, entre outros. Como todos são dispositi-
vos que estimam dados de profundidade, podem conter erros. Neste trabalho, apresenta-se
o projeto e implementação de um método genérico para a estimação do erro RMS em da-
dos de profundidade fornecidos por qualquer dispositivo, capaz de gerar dados do tipo
RGB-D, isto é, uma imagem e um mapa de profundidade ao mesmo tempo. Para verifi-
cação do método foi construído um sistema embarcado baseado na placa NVIDIA Jetson
TK1 e três sensores, as duas versões do MS Kinect e a câmera estéreo ZED. No momento
da coleta de dados foram estabelecidos os modelos matemáticos do erro RMS para cada
dispositivo e, ao final, foi feita uma análise da exatidão de cada um.
Palavras-chave: Visão computacional, sensores 3D, mapa de profundidade, erro
RMS, sistema embarcado.
Abstract

In the artificial vision are used several devices like MS Kinect v1 / v2, the stereo
cameras PG Bumblebee XB3 and Stereolabs ZED, among others. Because they are all
devices that estimate depth data, they may contain errors. In this work, we present the
design and implementation of a generic method for estimating the RMS error in depth
data provided by any device, capable of generating data of type RGB-D, that is, an image
and a depth map Same time. To verify the method was built an embedded system based
on the NVIDIA Jetson TK1 and three sensors, the two versions of MS Kinect and the
ZED stereo camera. At the moment of the data collection, the mathematical models of
the RMS error were established for each device and, at the end, an analysis was made of
the accuracy of each one.
Keywords: Computer vision, 3D sensors, depth map, RMS error, embedded system.
Sumário

Sumário i

Lista de Figuras iii

Lista de Tabelas iv

Lista de Símbolos e Abreviaturas v

1 Introdução 1
1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Contribuições e aplicações . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Organização do Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Fundamentação Teórica 5
2.1 Imagens: Formação e modelo matemático . . . . . . . . . . . . . . . . . 5
2.2 Geometria do sistema de aquisição da imagem . . . . . . . . . . . . . . . 6
2.2.1 Transformação projetiva e o modelo Pinhole . . . . . . . . . . . 6
2.3 Processamento de imagens: Detecção de cantos . . . . . . . . . . . . . . 8
2.4 Visão estereoscópica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4.1 Disparidade e profundidade . . . . . . . . . . . . . . . . . . . . 11
2.4.2 Nuvens de pontos 3D . . . . . . . . . . . . . . . . . . . . . . . . 12
2.5 Análise do erro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5.1 Exatidão e precisão . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5.2 Erro absoluto, relativo e RMS . . . . . . . . . . . . . . . . . . . 15
2.6 Ajuste de curva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.6.1 Regressão por mínimos quadrados . . . . . . . . . . . . . . . . . 16
2.6.2 Análise do melhor ajuste . . . . . . . . . . . . . . . . . . . . . . 17

3 Trabalhos relacionados 19
3.1 Análise e comparação dos sensores 3D . . . . . . . . . . . . . . . . . . . 19
3.1.1 Sensores RGB-D . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.2 Sensores que usam visão estéreo . . . . . . . . . . . . . . . . . . 20
3.1.3 Comparação entre sensores . . . . . . . . . . . . . . . . . . . . . 20
3.2 Metodologias de estimação do erro . . . . . . . . . . . . . . . . . . . . . 21
3.3 Aplicações usando dados de profundidade e visão 3D . . . . . . . . . . . 22

i
4 Problema 24
4.1 Formalismo matemático do problema . . . . . . . . . . . . . . . . . . . 24
4.1.1 Captura de dados . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.1.2 Padrão e detecção de cantos . . . . . . . . . . . . . . . . . . . . 25
4.1.3 Registro e alinhamento de nuvens de pontos . . . . . . . . . . . . 26
4.1.4 Estimativa do erro RMS e modelagem matemática . . . . . . . . 27
4.2 Método proposto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5 Implementação 30
5.1 Captura: Imagem RGB e mapa de profundidade . . . . . . . . . . . . . . 30
5.2 Processamento 2D: Detecção de cantos . . . . . . . . . . . . . . . . . . 31
5.3 Processamento 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.3.1 Projeção 2D a 3D de cantos . . . . . . . . . . . . . . . . . . . . 32
5.3.2 Registro e alinhamento . . . . . . . . . . . . . . . . . . . . . . . 33
5.4 Estimação do erro RMS . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.5 Modelagem matemática do erro RMS . . . . . . . . . . . . . . . . . . . 35
5.6 Sistema embarcado para testar o método . . . . . . . . . . . . . . . . . . 36
5.6.1 Placa NVIDIA Jetson TK1 . . . . . . . . . . . . . . . . . . . . . 36
5.6.2 Câmera Stereo ZED . . . . . . . . . . . . . . . . . . . . . . . . 37
5.6.3 Sensor RGB-D (luz estruturada) MS Kinect v1 . . . . . . . . . . 37
5.6.4 Sensor RGB-D (time-of-flight) MS Kinect v2 . . . . . . . . . . . 38

6 Experimentos e Resultados 41
6.1 Determinação do erro RMS: Câmera ZED . . . . . . . . . . . . . . . . . 41
6.1.1 Cálculo do erro . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
6.2 Determinação do erro RMS: Comparação entre sensores . . . . . . . . . 43
6.2.1 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.3 Análise do tempo de processamento . . . . . . . . . . . . . . . . . . . . 52

7 Conclusão 54

Referências bibliográficas 57

A Informações adicionais 61
Lista de Figuras

2.1 Modelo Pinhole: Projeção ideal de um objeto 3D em uma imagem 2D. . . 7


2.2 Detecção de cantos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 Geometria epipolar da câmera estéreo. . . . . . . . . . . . . . . . . . . . 12
2.4 Transformação rígida entre duas nuvens de pontos. . . . . . . . . . . . . 13
2.5 A equação exponencial (a) e sua versão linearizada (b). . . . . . . . . . . 17

4.1 Relação entre uma imagem RGB e seu mapa de profundidade . . . . . . . 25


4.2 Exemplo do padrão usado para a detecção de cantos. . . . . . . . . . . . 26
4.3 Fluxograma do algoritmo para o registro e alinhamento. . . . . . . . . . . 27
4.4 Processo do cálculo do erro RMS em nuvens de pontos. . . . . . . . . . . 28
4.5 Diagrama do método proposto para estimação do erro RMS. . . . . . . . 29

5.1 Exemplo de imagem RGB e mapa de profundidade. . . . . . . . . . . . . 31


5.2 Detecção e ordenamento dos cantos nos três planos do padrão. . . . . . . 32
5.3 Determinação dos cantos ideais e reais. . . . . . . . . . . . . . . . . . . 33
5.4 Resultado do registro das nuvens de pontos ideal e estimada. . . . . . . . 34
5.5 Diagrama do sistema embarcado para testar o método. . . . . . . . . . . 37
5.6 Câmera ZED: (a) aspecto físico e (b) dimensões em milímetros. . . . . . 39
5.7 Estimação de dados de profundidade pela câmera ZED. . . . . . . . . . . 39
5.8 Sensores RGB-D: (a) MS Kinect v1 e (b) v2. . . . . . . . . . . . . . . . 39

6.1 Processo dos experimentos para determinação do erro RMS na câmera. . 42


6.2 Dimensões em milímetros de um padrão com dois planos. . . . . . . . . . 42
6.3 Resultados dos processos para determinar o erro RMS na câmera ZED. . 44
6.4 Curvas ajustadas para o erro RMS nos dados de profundidade . . . . . . . 46
6.5 Erro RMS para cada resolução da câmera ZED, de 1 até 20m. . . . . . . . 46
6.6 Erro RMS em escala logarítmica para cada resolução da câmera ZED, de
1 até 20m. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
6.7 Dimensões em milímetros de um padrão com três planos. . . . . . . . . . 48
6.8 Processo de captura de dados para determinação do erro RMS. . . . . . . 48
6.9 Resultados da captura até a representação 3D dos cantos. . . . . . . . . . 49
6.10 Curvas ajustadas para os valores de erro RMS. . . . . . . . . . . . . . . . 51
6.11 Curvas do erro RMS para MS Kinect v1/v2 e Stereolabs ZED de 1 até 3m. 52
6.12 Curvas do erro RMS em escala logarítmica para MS Kinect v1/v2 e Ste-
reolabs ZED de 1 até 3m. . . . . . . . . . . . . . . . . . . . . . . . . . . 52

iii
Lista de Tabelas

3.1 Comparação das diferentes metodologias usadas para estimação do erro. . 23

5.1 Características relevantes da câmera ZED. . . . . . . . . . . . . . . . . . 38


5.2 Comparativa das características dos sensores MS Kinect v1 e v2. . . . . . 40
5.3 Parâmetros intrínsecos e coeficientes de distorção radial de cada sensor 3D. 40

6.1 Análise numérica do ajuste para os dados de erro RMS da câmera ZED. . 47
6.2 Média e variância das curvas do erro RMS na câmera ZED. . . . . . . . . 48
6.3 Coeficientes e análise numérica das curvas ajustadas. . . . . . . . . . . . 50
6.4 Média e variância de cada curva de erro RMS. . . . . . . . . . . . . . . . 50
6.5 Tempo de processamento para os dispositivos 3D. . . . . . . . . . . . . . 53

iv
Lista de Símbolos e Abreviaturas

CCD: Charge Coupled Device

CMOS: Complementary Metal Oxide Semiconductor

FAST: Features from Accelerated Segment Test

FPGA: Field Programmable Gate Array

GPU: Graphics Processor Unit

PTZ: Pan Tilt Zoom

RGB-D: Red-Green-Blue-Depth

RMS: Root Mean Squared

RMSE: Root Mean Square Error

SDK: Kit de Desenvolvimento de So f tware

SSE: Sum of Squares due to Error

SUSAN: Smallest Univalue Segment Assimilating Nucleus

SVD: Singular Value Decomposition

UAV: Unmanned Aerial Vehicle

v
Capítulo 1

Introdução

Sistemas de visão artificial procuram simular a visão humana mediante o uso de dis-
positivos, tais como: câmeras estéreo e sensores RGB-D (Red-Green-Blue-Depth) que
capturam dados (2D ou 3D) do ambiente. Estes dados são geralmente processados através
de técnicas de visão computacional, fazendo com que sistemas artificiais embarcados em
robôs, por exemplo, possam perceber o ambiente e responder autonomamente a determi-
nadas situações. Uma etapa normalmente incluída no processamento dos dados refere-se
ao uso de métodos para geração de modelos 3D a partir de imagens 2D, determinando
assim, a profundidade dos objetos em uma cena.
Existem vários dispositivos, com seus softwares associados, que podem ser usados
para determinar a profundidade de objetos, como o MS Kinect v1/v21 , Asus Xtion Pro2 ,
PrimeSense Carmine3 , as câmeras estéreo PG Bumblebee XB34 , Stereolabs ZED5 , Mi-
noru 3D6 , entre outros. Como todos são dispositivos que estimam medidas de profun-
didade, é normal que tais estimações da profundidade contenham um certo erro, as-
sociado ou não ao tipo de dispositivo que esteja sendo usado. Dos trabalhos existen-
tes (Zhao e Nandhakumar 1996, Blostein e Huang 1987, Chang e Chatterjee 1992, Xiong
e Matthies 1997) e a partir de testes que realizamos em laboratório, é possível noticiar que,
no caso das câmeras estéreo, os erros são causados pelo uso de lentes com alta distorção,
disposição inadequada das câmeras, captura de imagens com baixa resolução, problemas
de iluminação e calibração com alto erro de reprojeção. Conforme estudos encontrados
na literatura a respeito (Yang e Wang 1996, Maimone e Fuchs 2012, Sansoni et al. 2000),
no MS Kinect e outros dispositivos semelhantes, os erros aparecem principalmente de-
vido à baixa taxa de captura e de resolução. Isso deve-se principalmente ao fato de os
mesmos terem sido projetados para entretenimento, e não para desenvolvimento de apli-
cações científicas e/ou tarefas de alta precisão. Mas, nota-se que, apesar das limitações,
os dispositivos acima citados têm servido de base para muitos projetos de pesquisa em vi-
são computacional e robótica (Kuzuhara et al. 2015, Galna et al. 2014, Cloix et al. 2016),
principalmente por causa do baixo custo e precisão relativamente aceitáveis.
1 https://developer.microsoft.com/en-us/windows/kinect/
2 https://www.asus.com/3D-Sensor/
3 http://openni.ru/rd1-08-specifications/index.html
4 https://www.ptgrey.com/stereo-vision-cameras-systems
5 https://www.stereolabs.com/
6 http://www.minoru3d.com/
CAPÍTULO 1. INTRODUÇÃO 2

Um dos problemas que foi identificado em relação aos dispositivos acima é a carência
de dados confiáveis de seu erro. Isto é, justamente por serem dispositivos ainda recentes,
há uma carência de métricas para mensurar a raiz do valor quadrático médio do erro, tam-
bém denominado de erro RMS, inerente à determinação da profundidade que os sensores
conseguem retornar.
Assim, por não haver encontrado na literatura trabalhos a respeito, propomos neste
trabalho um método genérico para a estimação do erro RMS nos dados de profundidade
que sejam fornecidos por qualquer dispositivo capaz de gerar uma imagem e um mapa de
profundidade ao mesmo tempo. Além disso, introduzimos também uma metodologia para
obtenção do modelo matemático para o erro RMS fornecido pelos sensores MS Kinect v1,
v2 e da câmera ZED, visando determinar melhor sua precisão.

1.1 Motivação
A motivação para este trabalho decorre da necessidade de um método de avaliação do
erro associado ao uso de dispositivos de captura 3D, existentes em qualquer laboratório
de visão computacional ou robótica.
Em várias aplicações, o erro inerente ao sensor 3D usado é raramente considerado.
Isso acontece devido ao fato de que as aplicações desenvolvidas usando este critério são
do tipo não crítico. Ou seja, seu mal funcionamento não compromete a vida de nenhum
ser vivo e/ou não causa danos materiais com custo significativo. Todavia, em várias outras
aplicações, é necessário desenvolver uma aplicação com reduzida margem de falhas. Para
isso, o erro associado ao sensor 3D certamente deve ser considerado.
A partir de pesquisas que realizamos na literatura a respeito, noticiamos que têm sido
realizadas análises de erros, mas apenas para sensores 3D especificamente usado nas apli-
cações vistas. Esse tipo de análise não é a mais adequada por várias razões; a mais impor-
tante delas é que, o tempo de desenvolvimento aumenta a partir do momento em que se
usa mais de um sensor. Observada essa necessidade, propomos um método genérico para
analisar o erro RMS em dados de profundidade fornecidos por qualquer dispositivo 3D,
seja existente no mercado ou até mesmo construído de forma artesanal em laboratório.
Como restrição do método, é necessário, apenas que o dispositivo forneça uma imagem
de intensidade (RGB) e um mapa de profundidade com padrão conhecido, que pode ser
obtido pelo uso de uma biblioteca de software (SDK) que geralmente é fornecida com o
dispositivo, ou que pode ser calculado por algum método de reconstrução do tipo Shape
from X (Trucco e Verri 1998). Com o método proposto, pode-se conseguir informações
valiosas para melhorar o desempenho do aplicativo e reduzir ao máximo as falhas do
sistema de visão computacional.

1.2 Metodologia
Para a determinação do erro RMS (Root Mean Squared) nos sensores 3D (estéreo e
RGB-D) é necessário o uso de uma imagem e de um mapa de profundidade. Ambos de-
vem ser de um padrão formado por um ou vários tabuleiros de xadrez (em duas ou três
CAPÍTULO 1. INTRODUÇÃO 3

dimensões). Se o dispositivo for do tipo estéreo, a imagem deverá ser a fornecida pela
pela câmera esquerda. Após a detecção de estruturas do tipo canto no padrão, equações
de reprojeção e um mapa de profundidade são usados para criar duas nuvens de pontos.
Uma das nuvens contém as coordenadas reais dos cantos detectados e outra contém as co-
ordenadas ideais para cada canto, dadas pelo SDK do dispositivo ou calculada. Depois do
registro e alinhamento dessas duas nuvens de pontos usando o método de decomposição
por valores singulares (ou SVD) é realizado o cálculo do erro RMS. Usamos um sistema
embarcado baseado na placa NVIDIA Jetson TK1 7 para implementar o algoritmo para o
método e testamos o mesmo com três sensores RBG-D: MS Kinect v1, MS Kinect v2 e a
câmera estéreo ZED.
O embasamento teórico necessário para o desenvolvimento do trabalho envolve ele-
mentos da Matemática e técnicas Visão Computacional, tais como formação de imagens e
mapas de profundidade; detecção de cantos, matrizes de transformação para conversão de
sistemas de coordenadas, formação e registro de nuvens de pontos, cálculo do erro RMS
e ajuste de curvas.

1.3 Contribuições e aplicações


A principal contribuição deste trabalho é o fornecimento, aos desenvolvedores de apli-
cações de visão computacional e visão robótica, de um ferramental capaz de expor o erro
associado ao uso do sensor para visão 3D e que, permita também, dimensionar o erro
de sua aplicação. Por ser genérico, o método proposto pode ser usado para determinar
o erro RMS nos dados de profundidade de qualquer dispositivo capaz de fornecer dados
RGB-D. O algoritmo proposto pode ser implementado em placas de desenvolvimento ou
computadores e, como padrão de testes, pode-se usar um tabuleiro de xadrez de duas ou
três dimensões.
Os artigos consultados fornecem uma análise exata para dispositivos RGB-D, então,
há pouca ou nenhuma informação sobre o erro de dispositivos estéreo, por isso, uma nova
técnica de análise destes sensores é oferecida.
Como contribuição adicional, apresentamos uma análise completa da câmera ZED.
Por ser um dispositivo relativamente novo, o erro RMS na estimativa de profundidade
usando esta câmera ainda não foi avaliado em nenhum trabalho anterior na literatura. Ao
contrário dos trabalhos relacionados a este, é demonstrado de forma matemática e expe-
rimental o erro da câmera em todos os eixos coordenados, assim como, são fornecidas
as curvas que modelam o erro RMS e o tempo de processamento para cada resolução da
câmera.
O presente trabalho constitui uma excelente ferramenta para o teste de novos algo-
ritmos de cálculo de disparidade, profundidade e construção de dispositivos para visão
3D. Aplicações com esses sensores de profundidade, montados sobre robôs aéreos, ter-
restres e aquáticos, que necessitam de uma estimação do erro podem usar do método.
Um exemplo imediato de aplicação é o uso de robótica probabilística para localização e
mapeamento. Outras tarefas como monitoramento ambiental, manutenção de obras de en-
7 http://www.nvidia.com/object/jetson-tk1-embedded-dev-kit.html
CAPÍTULO 1. INTRODUÇÃO 4

genharia e segurança pública podem contar com esta abordagem para obter informações
do erro RMS.

1.4 Organização do Texto


Os capítulos subsequentes estão organizados da seguinte forma: No Capítulo 2, são
abordados os conceitos sobre a formação e modelo matemático das imagens, geometria
e aquisição; técnicas para a detecção de cantos, visão 3D e análise do erro. Por fim, é
descrito o ajuste de curva para os dados de erro RMS. O Capítulo 3 apresenta os métodos
já existentes para encontrar o erro na estimação de profundidade em dispositivos como o
MS Kinect. No Capítulo 4, apresenta-se o cálculo para a estimação do erro RMS usando
uma imagem de um padrão e seu mapa de profundidade. No Capítulo 5, mostra-se o passo
a passo da implementação do método genérico e o projeto do sistema embarcado onde são
montados a câmera ZED o MS Kinect v1 e v2. No Capítulo 6 são apresentados os testes
usando o sistema embarcado, e os resultados obtidos. Cada teste consiste em determinar
o erro da localização dos cantos de um padrão colocado a várias distâncias do sensor 3D.
Por fim, no Capítulo 7, são apresentadas as considerações finais e trabalhos futuros.
Capítulo 2

Fundamentação Teórica

Neste capítulo são tratados os aspectos teóricos mais relevantes para entender o pro-
blema em foco (determinação do erro RMS de sensores 3D), incluindo o processo de
formação da imagem e seu modelo matemático, a geometria básica associada às câme-
ras, os modelos de câmeras e seus parâmetros, além das equações de projeção para a
conversão entre sistemas de coordenadas. São descritos, também, os algoritmos para de-
tecção de cantos, a teoria básica sobre visão estéreo, e o processo de geração de mapas
de profundidade e suas relações com as nuvens de pontos. Por fim, apresentamos a teoria
mais relevante do tratamento de dados e análise do erro, além de técnicas para o ajuste de
curvas usando o método de regressão polinomial por mínimos quadrados.

2.1 Imagens: Formação e modelo matemático


O processo de formação da imagem digital inicia-se com a emissão ou reflexão natural
da luz incidente (energia eletromagnética) pelos objetos de uma cena e termina quando
a luz atravessa a lente da câmera, sendo medida a sua intensidade por algum sensor que
converte a energia luminosa em voltagem, com posterior discretização em valores bi-
nários (bits). Uma imagem pode ser representada por uma função bivariada espacial
f (x) = f (x, y), onde f (x, y) representa a intensidade da luz (ou nível de cinza) em uma po-
sição cujo vetor de coordenadas espacial é dado por (x, y). Uma imagem multi-espectral
fk (x, y) é uma função vetorial com componentes ( f1 (x, y), ..., fn (x, y)), sendo cada uma
delas uma imagem de intensidade (função bivariada espacialmente distribuída). Ou seja,
uma imagem multi-espectral espacial é a representação natural de uma imagem em cores,
na qual os componentes fR , fG e fB medem os valores de intensidade em cada um dos
três comprimentos de onda (R, G, B). Neste caso, temos uma imagem colorida f (x) que
passa a ser representada matematicamente pela Equação 2.1 (Ballard e Brown 1982):

f (x) = { fR , fG , fB } (2.1)
Uma parte importante do processo de formação é a conversão da representação de
imagem de uma função contínua para uma função discreta. A ferramenta matemática
usada para descrever as imagens como amostras em pontos discretas é a função delta.
Uma propriedade útil da função δ(x) é da filtragem representada na Equação 2.2, onde
CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 6

f (x) é uma imagem, δ(x − a) é um pende de Dirac e f (a) é o resultado da amostragem.


� ∞
f (x)δ(x − a)dx = f (a) (2.2)
−∞

2.2 Geometria do sistema de aquisição da imagem


Nesta seção, apresentamos uma ideia geral da geometria de um sistema de aquisição
de uma imagem (usando uma câmera). Mais especificamente, explicamos as transfor-
mações projetivas, com a matemática que descreve esse processo. Para isso, usamos o
modelo de câmera conhecido como Pinhole, sendo este o modelo mais simples de câ-
mera (Trucco e Verri 1998). Por fim, apresentamos e discutimos os parâmetros extrínse-
cos e intrínsecos que serão usados durante este trabalho.

2.2.1 Transformação projetiva e o modelo Pinhole


O processo de formação de uma imagem pode ser interpretado matematicamente
como sendo uma transformação do espaço 3D em um espaço 2D (uma projeção). Na-
turalmente, cada sistema de aquisição de imagem, seja o sistema visual humano ou de
uma câmera, realiza esta transformação. Se pensamos no processo inverso, encontrar os
parâmetros dessa transformação é fundamental, visando descrever a matemática do sis-
tema de aquisição. Para a maioria das câmeras, o modelo que descreve a transformação
espacial que executam é baseado em dois modelos de projeção, o modelo perspectivo
(ou radial) e o paralelo (mais usado em telescópios). Neste trabalho, adotamos o modelo
perspectivo, então devemos obter uma abordagem para descrever o comportamento de
sistemas ópticos reais usando a transformação projetiva perspectiva, que pode ser des-
crita por uma equação linear, desde que usado um espaço de dimensão mais elevada que
usando as coordenadas homogêneas convencionais. Além disso, ao descrever elementos
ópticos reais, torna-se necessário aumentar a transformação projetiva simples com termos
não-lineares para que os parâmetros físicos sejam considerados (Cyganek e Siebert 2009).
Com o modelo de câmera Pinhole obtém-se uma representação geométrica da proje-
ção de um ponto 3D (sistema de coordenadas de mundo) em uma imagem 2D (sistema de
coordenadas de pixel) e vice-versa. Este modelo considera quatro sistemas de coordena-
das: pixel, imagem, câmera e mundo. Na Figura 2.1, a distância entre o plano da imagem
e o centro de projeção (Xc ,Yc , Zc ) é chamado distância focal f e o ponto (Cx ,Cy ) é onde o
raio principal atravessa o plano da imagem.
Da Figura 2.1, pode-se obter por triangulação a Equação 2.3 que é usada para a con-
versão do sistema de coordenadas da câmera para o de coordenadas da imagem. O ponto
L é representado em coordenadas homogêneas (xi �, yi �, zi �).
 �    
xi fx 0 Cx 0 Xc
 y�i  =  0 fy Cy 0  Yc  (2.3)
z�i 0 0 1 0 Zc
Da Equação 2.3 obtém-se as equações 2.4 e 2.5, usadas para a conversão de sistemas
CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 7

Figura 2.1: Modelo Pinhole: Projeção ideal de um objeto 3D em uma imagem 2D.

de coordenadas da imagem (xi , yi ) em sistemas de coordenadas de pixel (u, v).


Xc Yc
xi = fx yi = fy (2.4)
Zc Zc
xi� Xc y�i Yc
u= � = fx +Cx v= � = fy +Cy (2.5)
zi Zc zi Zc

Parâmetros extrínsecos
Os parâmetros extrínsecos representam a posição relativa da câmera (Xc ,Yc , Zc ) em
relação ao sistema de coordenadas de mundo (Xw ,Yw , Zw ). Neste sistema de coorde-
nadas, a câmera pode estar rotacionada, R = [r11 , r12 , r13 , ..., r31 , r32 , r33 ], e possuir um
deslocamento t = [tx ,ty ,tz ]. Estes dois tipos de transformações estão representadas na
Equação 2.6.
    
Xc r11 r12 r13 tx Xw
 Yc  r21 r22 r23 ty   Yw 
     (2.6)
 Zc  = r31 r32 r33 tz   Zw 
1 0 0 0 1 1
CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 8

Parâmetros intrínsecos
Os parâmetros intrínsecos de uma câmera podem ser encontrados por meio do pro-
cesso de calibração ou da informação do fabricante.
Juntando as equações 2.3 e 2.6 pode-se obter a Equação 2.7, conhecida como a trans-
formação projetiva que relaciona os parâmetros intrínsecos e extrínsecos de uma câmera,
e que ajuda a converter um ponto que está em um sistema de coordenadas de pixel em
outro que esteja em coordenadas de mundo.
  
 �    r11 r12 r13 tx Xw
xi fx 0 Cx 0   
 y�i  =  0 fy Cy 0 r21 r22 r23 ty   Yw  (2.7)

r31 r32 r33 tz   Zw 
zi 0 0 1 0
0 0 0 1 1

Parâmetros de uma câmera real


Para que uma câmera produza imagens precisará de uma lente que concentre uma
grande quantidade de luz em um único ponto, porém causará distorções. As duas prin-
cipais distorções são a radial, resultado da forma da lente, e a tangencial que provém do
processo de montagem da câmera (Trucco e Verri 1998). Na prática, a distorção radial
pode ser caracterizada pelos primeiros termos de uma expansão da série de Taylor. Para
câmeras de baixo custo, usa-se K1 e K2 que são os coeficientes de distorção radial nos
lentes. Nas câmeras altamente distorcidas, como lentes olho de peixe, pode-se usar um
terceiro termo, o K3 . Em geral, um ponto sobre o plano imagem será reposicionado de
acordo com a Equação 2.8 onde, xi e yi são a localização original do ponto com distorção
radial, xiund e yiund são a nova localização resultante da correção, com r2 = xi2 + y2i .

xiund = xi (1 + K1 r2 + K2 r4 + K3 r6 )
(2.8)
yiund = yi (1 + K1 r2 + K2 r4 + K3 r6 )
As distorções tangenciais podem ser caracterizadas usando os coeficientes dos lentes
p1 e p2 na Equação 2.9.

xiund = xi + [2p1 xi yi + p2 (r2 + 2xi2 )]


(2.9)
yiund = yi + [2p2 xi yi + p1 (r2 + 2y2i )]

2.3 Processamento de imagens: Detecção de cantos


Podemos entender um canto como uma estrutura que ocorre quando existe uma inter-
seção (corte) de duas bordas (variação acentuada da função de intensidade em uma ima-
gem). Os cantos geralmente fazem parte do grupo de f eatures presentes em uma imagem,
e são uma das estruturas mais usadas em algoritmos de detecção ou realce de f eatures
nem visão computacional. A determinação de cantos é feita em detecção de movimento,
rastreamento de vídeo, construção de imagens panorâmicas, modelagem 3D e reconhe-
cimento de objetos, entre outros. Existem vários algoritmos que podem ser usados para
extrair ou realçar os cantos, por exemplo: Harris e Stephens (1988), Shi e Tomasi (1994),
CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 9

SUSAN (Smallest Univalue Segment Assimilating Nucleus) (Smith e Brady 1997), FAST
(Features from Accelerated Segment Test) (Trajković e Hedley 1998), etc.
Nesta seção, o foco é analisar a proposta de Geiger et al. (2012), na qual é apresentado
um algoritmo que extrai cantos com precisão sub-pixel, e sendo eficiente em distâncias
grandes. Para localizar os cantos numa imagem I (Figura 2.2a), calcula-se a probabili-
dade para cada pixel, usando dois protótipos de cantos diferentes (n × n): um para cantos
alinhados com os eixos (Figura 2.2b) e outro para cantos que são rotacionados a 45◦ (Fi-
gura 2.2c). Cada protótipo é composto por quatro máscaras (kernels) de filtros [A, B,C, D],
realizando-se a operação de convolução dos mesmos com a imagem de entrada I.
Formalmente, a formulação do método é dada como a seguir. Seja fXi a resposta ao
filtro com kernel X e do protótipo i para um pixel particular. A probabilidade de ocorrer
um canto c neste pixel é definida tomando o valor máximo sobre todas as combinações de
protótipos e movimentos, o que é dado pela Equação 2.10:

c = max(s11 , s12 , s21 , s22 )


si1 = min(min( fAi , fBi ) − µ, µ − min( fCi , fDi ))
(2.10)
si2 = min(µ − min( fAi , fBi ), min( fCi , fDi ) − µ)
µ = 0.25( fAi + fBi + fCi + fDi )
Na Equação 2.10, si1 e si2 denotam a probabilidade de dois movimentos possíveis para
o protótipo i. Calculando essa probabilidade para cada pixel na imagem, obtém-se um
mapa de probabilidade do canto C, Figura 2.2d. Nota-se que a definição acima leva a
uma baixa probabilidade c, quando qualquer uma das quatro máscaras de filtro responde
fracamente. Essa observação é importante para que seja possível remover o maior número
de cantos que não pertençam ao tabuleiro.
Para produzir uma lista de candidatos a canto, aplica-se a supressão não máxima
(Trucco e Verri 1998) (com parâmetros nnms e τnms ) em C, seguida da verificação dos
candidatos analisando uma estatística do gradiente em um conjunto local de pixels vizi-
nhos (n × n). Conforme ilustrado na Figura 2.2e, calcula-se um histograma de orientação
ponderado a partir das respostas ao filtro de Sobel e encontram-se as duas direções do-
minantes (auto-valores) α1 e α2 usando o deslocamento médio. Na figura, o símbolo “*”
descreve o operador de correlação cruzada normalizada.
Com base nas orientações das bordas, constrói-se um modelo T esperado para o gra-
diente � �I �2 . O produto de T∗ � �I �2 e a probabilidade de ser um canto dada pela
Equação 2.10 fornece a pontuação de um canto com limiar τcorner , para obter uma lista
final de candidatos a serem cantos, conforme mostrado na Figura 2.2f.
Para a localização de cantos com precisão sub-pixel, fazemos uso do fato de que, em
uma localização de canto (c ∈ R2 ), o gradiente da imagem (gp ∈ R2 ) em um pixel vizinho
(p ∈ R2 ) deve ser aproximadamente ortogonal à (p−c), conforme mostra a Equação 2.11.

c = arg mimc� ∑ � (gTp (p − c�))2 (2.11)


p∈NI (c )

onde NI é a vizinhança de (11 × 11) pixeis ao redor do pixel candidato a canto. Os pixeis
vizinhos são automaticamente ponderados pela magnitude do gradiente. Este problema
pode ser resolvido usando a solução dada pela Equação 2.12.
CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 10

(a) (b) (c)

(d) (e) (f)

Figura 2.2: Detecção de cantos. A imagem de entrada I (a) é filtrada usando os protótipos
de canto (b) e (c), logo é aplicada uma supressão na probabilidade de canto resultante C
(d), depois são verificados os cantos por sua distribuição de gradiente (e) e, finalmente
são obtidos os melhores cantos (f).

� �−1
c= ∑ (gpgTp ) ∑ (gpgTp )p (2.12)
p∈NI p∈NI

Seja o conjunto de candidatos a canto X = {c1 , .., cN } e seja Y = {y1 , .., yN } o conjunto
correspondente de rótulos. A expressão, y ∈ {℘}∪N2 representa uma detecção de valores
abertos (℘) ou a linha/coluna (N2 ) dentro do tabuleiro de xadrez. Para os tabuleiros de
xadrez presentes na imagem, é recuperado um Y para cada X. Para isso, é necessário
minimizar a função de energia dada pela Equação 2.13:

E(X, Y) = Ecantos (Y) + Eestrutura (X, Y) (2.13)


sujeito à restrição de que dois rótulos não podem explicitar o mesmo canto num tabuleiro
de xadrez. Para explicitar os vários cantos, usamos um elemento regular estruturado (o
tabuleiro de xadrez) dado por: Ecantos (Y) = −|{y|y �= ℘}|. Isto é, por esta expressão
é tomado o número negativo de cantos explicitados num tabuleiro de xadrez e Eestrutura
CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 11

mede o quão bem dois cantos vizinhos i e j são capazes de prever um terceiro, o k,
ponderada pelo número de cantos explicitados, conforme a Equação 2.14.

� ci + ck − 2c j �2
Eestrutura (X, Y) = |{y|y �= ℘}| max (2.14)
(i, j,k)∈τ � ci − ck �2
Nesta equação, τ denota o conjunto de todos os triplos (grupo de três cantos), fila e
coluna da configuração atual do tabuleiro de xadrez induzido por Y . No total, tem-se
|τ| = m(n − 2) + n(m − 2), sendo m e n o número de linhas e colunas respectivamente.
O conjunto de estados Y pode ser exponencialmente grande em N, e a procura de
cantos usando força bruta pode ser exaustiva e complexa. Em vez disso, empregamos um
esquema de otimização discreta simples. Dado um canto semente, procura-se seus vizi-
nhos mais próximos na direção de suas bordas e1 e e2 , produzindo uma hipótese de xadrez
inicial de (2 × 2) com um valor de energia associado E(X,Y ). Para otimizar E(X,Y ), são
realizados movimentos em Y , que expandem qualquer uma das bordas de xadrez por uma
única linha ou coluna. O procedimento acima resolve o problema de detecção dos cantos
a nível subpixel, com o gradiente ortogonal.

2.4 Visão estereoscópica


Os seres humanos percebem o mundo tridimensional através de diferenças observadas
em imagens fornecidas pelos olhos e há evidências de certos processos desenvolvidos em
torno da informação que os olhos recebem do exterior (Marr 2010). Devido à posição
dos olhos e à forma de movê-los, as imagens enviadas ao cérebro, por cada um deles,
são semelhantes, mas com uma diferença mínima na posição dos objetos. Devido a esta
diferença, o cérebro é capaz de discernir a distância (profundidade) em que os objetos
estão do observador. Essa capacidade de perceber uma cena em 3D com base em duas
ou mais imagens é conhecida como visão estéreo. O embasamento matemático moderno
visando modelar o problema de visão estéreo e sua solução encontra-se bem definido,
sendo bastante difundido na literatura incluindo livros textos (Marr 2010, Trucco e Verri
1998). O processo pode ser resolvido por triangulação, tendo como base a disparidade,
como explicado a seguir.

2.4.1 Disparidade e profundidade


Considerando duas câmeras co-planares, sem distorções, alinhadas, com eixos ópticos
paralelos e com igual distância focal f l = f r, a profundidade Z pode ser encontrada por
triângulos semelhantes (ver Figura 2.3) de acordo com os seguintes passos:

• Captura: é feita de forma síncrona (imagem esquerda e direita ao mesmo tempo).


As duas câmeras estão estrategicamente separadas por B de seus centros Ol e Or ;
• Calibração e retificação: consiste em encontrar os parâmetros intrínsecos e extrín-
secos que permitem eliminar distorções e alinhar as imagens esquerda e direita com
os centros (Cxl ,Cyl ) e (Cxr ,Cyr ) respectivamente;
CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 12

• Correspondência estéreo: são encontradas características semelhantes e determina-


dos os pontos homólogos entre as duas imagens. A partir de então são calculadas
as diferenças, xil e xir , entre a localização (coordenadas) desses pontos. O cálculo
da disparidade é dado por d = xil − xir ;
• Profundidade: o valor Z de cada ponto L é calculado por semelhança de triângulos.

Figura 2.3: Geometria epipolar da câmera estéreo.

A profundidade é inversamente proporcional à disparidade, como pode-se notar nas


equações 2.15 e 2.16. B é a distância entre as duas câmeras, também conhecida como
linha de base, equivalente à distância inter-pupilar em um ser humano.

d = xil − xir (2.15)

B − (xil − xir ) B fB
= ⇒ Z= (2.16)
Z− f Z xil − xir

2.4.2 Nuvens de pontos 3D


Uma nuvem de pontos é um conjunto de vetores (ou pontos) que representam a su-
perfície exterior de um objeto referenciados em relação a um sistema de coordenadas 3D
(X,Y, Z). Nuvens de pontos podem ser criadas de diversas maneiras, por exemplo usando
um escâner infravermelho ou câmeras estéreo. Na prática, o resultado é uma nuvem de
pontos cada um deles contendo representações para as posições espaciais e os valores
RGB dos pontos na cena que os originaram, medidos pelo dispositivo.
CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 13

Registo e transformação rígida


As nuvens de pontos podem sofrer mudanças em sua posição e iluminação através
da aplicação de transformações geométricas que podem ser rígidas ou não rígidas. Uma
transformação rígida ou euclidiana é aquela que realiza uma modificação apenas de trans-
lação e de rotação em uma nuvem de pontos, todavia preservando a escala e o tamanho
e as distâncias entre os pontos. As transformações são aplicadas quando se deseja fazer
o registro de nuvens de pontos supostamente obtidas a partir da mesma cena. O pro-
cesso de registro de uma nuvem de pontos origem e uma destino com correspondências
conhecidas, consiste em:

• Determinar correspondências (pontos similares) entre as duas nuvens;


• Estimar uma transformação que minimiza a distância (erro de alinhamento) entre
pontos correspondentes;
• Considerar o registro completo quando os erros de alinhamento ficarem abaixo de
um determinado limiar;
• Aplicar a transformação rígida para alinhar a nuvem origem com a nuvem destino.

O algoritmo de Arun et al. (1987) é importante no presente trabalho por estimar uma
transformação para alinhar duas nuvens de pontos, minimizando as distâncias entre as
correspondências, segue a explicação do algoritmo usando a Figura 2.4:

Figura 2.4: Transformação rígida entre duas nuvens de pontos.

� � �
• Com as nuvens de pontos pi e pi , calcular os centroides p, p e obter qi e qi (distan-
cia entre de cada ponto de uma nuvem e seu centroide), para 1 ≤ i ≤ n, usando as
equações 2.17, 2.18 e 2.19, onde R e T são a matriz de rotação (3x3) e o vetor de
translação (3x1) iniciais, e Ni é o vetor de ruído.

1 n
p= ∑ pi
n i=1
⇒ qi = pi − p (2.17)
CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 14


pi = Rpi + T + Ni onde i = 1, 2, ..n (2.18)

1 n �
∑ pi
� � � �
p = ⇒ qi = pi − p (2.19)
n i=1
• Calcular a matriz H de tamanho (3x3) usando a Equação 2.20.
n
�t
H = ∑ qi qi (2.20)
i=1
• Encontrar SVD de H. SVD é a fatoração de uma matriz real ou complexa.

H = UAV t (2.21)

• Calcular X = VU t .

• Calcular o determinante de X, det(x). Se este for igual a (+1), então R = X onde,
� �
R é a matriz de rotação com o valor mínimo quadrado para chegar de pi a pi .
� � �
• Calcular, T = p − R p.

O algoritmo para estimar a transformação rígida pode ser usado em qualquer conjunto
de dados com tamanho de no mínimo três pontos. Quando há mais de três pontos obtém-
se uma solução de mínimos quadrados, na qual o erro quadrático ∑2 da distância entre os
pontos dos dois conjuntos de dados é minimizado (Equação 2.22). Aqui, o operador � .. �
é a distância euclidiana entre os dois vetores.
n
2
∑ = ∑ � pi − (R pi + T ) �2
� � �
(2.22)
i=1

2.5 Análise do erro


Ao utilizar dispositivos de medição ou fórmulas matemáticas para estimar dados de
magnitudes físicas, ocorrem erros numéricos devido aos problemas inerentes ao uso de
cada método. Nesta seção, são descritos os conceitos básicos da teoria e análise de erros
em dados estimados (calculados ou medidos).

2.5.1 Exatidão e precisão


A exatidão e a precisão são conceitos frequentemente confundidos. O primeiro refere-
se a quão próximo está um valor estimado em relação ao valor verdadeiro. Já o segundo
refere-se a quão próximo está um valor individual estimado com respeito aos outros. Des-
ses dois conceitos, deriva-se as definições de inexatidão e frouxidão. O primeiro define-se
como sendo o afastamento sistêmico da verdade; o segundo refere-se à magnitude do es-
palhamento dos valores. Em geral, para qualquer tipo de erro, a relação entre o valor real
vr e o valor estimado ve é dada pela Equação 2.23.
CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 15

e = ve − vr (2.23)
Em uma medida direta, fornecida por um dispositivo; ou indireta, obtida através de
uma fórmula, há vários tipos de erros, entre os mais importantes: absoluto, relativo e
RMS.

2.5.2 Erro absoluto, relativo e RMS


O valor da diferença entre o valor estimado e o valor tomado como real é conhecido
como erro absoluto (Equação 2.24). Ele tem as mesmas unidades da magnitude analisada,
e o erro absoluto quantifica o desvio do valor real em termos absolutos.

ea = |ve − vr | (2.24)

Por outro lado, o erro relativo é a divisão entre o erro absoluto e o valor real (Equa-
ção 2.25). Se o valor for multiplicado por 100, o erro percentual é obtido. O erro relativo
não tem unidades.
|ve − vr |
er = × 100%, se vr �= 0 (2.25)
vr
Em geral, o erro médio quadrático ou RMS é uma medida que representa o desvio
padrão das diferenças entre os valores estimados e os valores reais observados. Estas
diferenças individuais são chamadas de resíduos. O erro RMS é uma boa medida de
exatidão, pois mede a diferença entre dois conjuntos de dados e amplifica os grandes
resíduos. A Equação 2.26 mostra como calcular o erro RMS, onde vir é o valor real para a
observação de ordem i até n e vie é o valor estimado correspondente. Os resíduos podem
ser positivos ou negativos dependendo se o valor estimado for inferior ou superior ao valor
real observado (Taylor 1997).

∑ni=1 (vie − vir )2
eRMS = (2.26)
n

2.6 Ajuste de curva


Nesta seção são descritas técnicas de ajuste de curvas para um conjunto de dados.
Dentre os métodos, destacamos dois aqui descritos para o ajuste de curvas, que diferem
um do outro se considerarmos a quantidade do erro associado aos dados. No primeiro
método, se os dados apresentam um grau significativo de erro, a estratégia é a obtenção
de uma única curva que representa a tendência geral dos dados. Como qualquer dado
individual pode conter erros, procura-se não unir todos os pontos. Em vez disso, constrói-
se uma curva para seguir a mesma distribuição dos dados. Este processo é conhecido
como regressão por mínimos quadrados. No segundo, sabe-se que os dados são muito
precisos. O procedimento para o ajuste é colocar uma curva ou uma série de curvas
que passam diretamente por cada um dos pontos. A estimação de valores entre pontos
discretos, bem conhecidos, é chamada de interpolação (Chapra et al. 2006).
CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 16

Os dados obtidos experimentalmente, geralmente, tem erro significativo, por este mo-
tivo, é de particular interesse estudar a regressão por mínimos quadrados.

2.6.1 Regressão por mínimos quadrados


A maioria dos experimentos usualmente geram dados do tipo (x1 , y1 ), ..., (xi , yi ), onde
xi define um ponto amostral e yi é o valor (ou valores) que são amostrados neste ponto,
podendo ser um vetor de amostras com altos índices de erro. Neste caso, uma estratégia
adequada para prever valores intermediários é a obtenção de uma função de aproximação
y = f (x), que se ajusta a forma ou a tendência geral dos dados, sem coincidir, necessaria-
mente, em todos os pontos. Geralmente, as variáveis x e y estão previamente estabelecidas
e a análise concentra-se em encontrar os coeficientes da função para minimizar a discre-
pância entre os dados e o ajuste.
Existem várias funções (linear, exponencial, polinomial, etc.) que podem ser usadas
para o ajuste de curvas. Muitas vezes, há um modelo matemático associado à situação
física que é estudada. Se a relação entre xi e yi para 1 ≤ i ≤ n, for linear, então a função
que melhor ajusta-se aos dados é uma reta da forma y = a0 + a1 x + e, onde a1 e a0 são
coeficientes que representam a inclinação e interseção com o eixo y, equações 2.27 e 2.28
respectivamente. Nestas ultima equação, ȳ e x̄ são os valores médios de y e x. O erro ou a
diferença entre o valor real y e o valor estimado é calculado com a Equação 2.29 (Chapra
et al. 2006).
n ∑ xi yi − ∑ xi ∑ yi
a1 = , para 1 ≤ i ≤ n (2.27)
n ∑ xi2 − (∑ xi )2

a0 = ȳ − a1 x̄ (2.28)

e = y − a0 − a1 x (2.29)
Em muitos casos, os dados obtidos a partir de testes experimentais não são lineares,
por isso é necessário ajustá-los a uma função que não seja um polinômio de primeiro grau.
Às vezes, é conveniente assumir que os dados têm uma relação exponencial. Por isso, a
função de aproximação deve ter a forma da Equação 2.30.

y = α1 eβ1 x . (2.30)
É possível encontrar equações normais para uma função exponencial, semelhante ao
processo desenvolvido para uma linha reta. Tais equações não-lineares são mais difíceis
de resolver do que equações lineares. Por isso, um método usado quando há a suspeita
de que os dados têm uma relação exponencial é calcular o logaritmo da equação lineal
aproximada, ficando a Equação 2.31. Nesta equação, ln α1 é a intersecção (m) entre o
eixo ln y e o eixo x, e β1 é a inclinação (δ) da reta (ver Figura 2.5).

ln y = ln α1 + β1 x (2.31)
CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 17

Figura 2.5: A equação exponencial (a) e sua versão linearizada (b).

Os coeficientes α1 e β1 podem ser computados usando a Equação 2.32 e 2.33, respeti-


vamente. Nestas equações, (x1 , ln y1 ) e (x2 , ln y2 ) são os valores mínimos e máximos dos
dados obtidos experimentalmente nos eixos x e ln y.
� �
ln y2 − ln y1
β1 = (2.32)
x2 − x1

α1 = ln y1 − β1 x1 (2.33)
As equações 2.32 e 2.33 permitem calcular o valor estimado de α1 e β1 isto é, os co-
eficientes da função de regressão para um conjunto de dados. No entanto, essas fórmulas
não dizem o quão preciso as estimativas são, ou seja, o quanto os estimadores α1 e β1
variam de amostra para amostra para um tamanho especifico. Para isto foram concebidos
os chamados limites de confiança que servem para dar um conjunto plausível de valores
que as estimativas podem ter se um experimento for repetido várias vezes.

2.6.2 Análise do melhor ajuste


Depois de ajustar os dados de modelos linear, polinomial, exponencial, ou outros,
é necessário avaliar o ajuste usando análises gráfica e numérica. Na análise gráfica é
realizada uma inspeção dos valores residuais, do ajustamento e dos limites de predição.
A análise numérica é feita usando o cálculo dos valores estatísticos como:

• Soma de Quadrados devido ao Erro (SSE): Esta é uma medida da diferença entre os
dados e um modelo de ajuste. Na Equação 2.34, yi é o valor de dados observados,
ŷi é o valor previsto do ajuste e wi é a ponderação aplicada a cada ponto de dados.
n
SSE = ∑ wi (yi − ŷi )2 (2.34)
i=1
CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 18

• R-quadrado: mede o quão bem sucedido é o ajuste para explicar a variação dos
dados. Na Equação 2.35, ȳi é a média dos dados observados.

∑ni=1 wi (yi − ŷi )2


Rquadrado = 1 − (2.35)
∑ni=1 wi (yi − ȳi )2
• Raíz do Erro Quadrático Médio (RMSE): É uma estimativa do desvio padrão da
componente aleatória nos dados. O RMSE é definido pela Equação 2.36, onde n é
o número de valores de resposta e m é o número de coeficientes estimados a partir
dos valores de resposta.
� � 12
∑ni=1 wi (yi − ŷi )2
RMSE = (2.36)
n−m

Um ajuste de curva usando regressão por mínimos quadrados, considera-se o melhor


ajuste quando o SSE e o RMSE são próximos a zero, e o Rquadrado tem um valor perto de
um.
Capítulo 3

Trabalhos relacionados

Com o surgimento dos sensores 3D, as análises de seu desempenho tem sido um tó-
pico de pesquisa amplamente estudado devido as constantes inovações tecnológicas que
melhoram sua exatidão e precisão. Neste capítulo, analisamos os trabalhos da literatura
segundo os aspectos mais relevantes para o presente trabalho. Para isso, a informação
pesquisada será disposta em três seções. Na secção 3.1 junta-se os trabalhos que fazem
uma comparação ou análise individual entre sensores que usam tecnologias RGB-D (com
luz infravermelha ou time − o f − f light) e visão estéreo. São definidas, também, as prin-
cipais vantagens e desvantagens entre eles. Na seção 3.2 apresenta-se as metodologias
existentes para avaliar e quantificar o erro nos dados fornecidos por alguns dos disposi-
tivos anteriormente mencionados. Finalmente, na seção 3.3 pode-se ver a importância
da exatidão e precisão dos sensores 3D em algumas aplicações da medicina, pecuária,
robótica, etc.

3.1 Análise e comparação dos sensores 3D


No mercado há vários dispositivos para desenvolvimento de aplicações 3D, que estão
divididos em dois grandes grupos de acordo com a tecnologia que usam: RGB-D (luz
infravermelha estruturada ou time − o f − f light) e visão estereoscópica. No primeiro
grupo estão, por exemplo, o MS Kinect v1/v2, Asus Xtion Pro, PrimeSense Carmine; no
segundo, a câmera PG Bumblebee, Stereolabs ZED, Minoru 3D, entre outros.

3.1.1 Sensores RGB-D


Várias pesquisas anteriores estudam o desempenho e funcionalidade dos dispositi-
vos RGB-D. Nesta direção, o trabalho de Kolb et al. (2009) descreve análises realizadas
sobre os problemas dos sensores que usam a tecnologia de time − o f − f light como: a
intensidade de iluminação, erros de distância, perda de pixeis no voo e ruído do sensor.
No trabalho de Gokturk et al. (2004) são apresentados alguns dados experimentais
sobre um novo sensor de profundidade de time − o f − f light baseado em CMOS (Com-
plementary Metal Oxide Semiconductor). No artigo, afirma-se que o chip tem alta taxa de
quadros, custo efetivo e uma drástica redução no processamento necessário para construir
os mapas de profundidade. Foix et al. (2011) revisa vários aspectos sobre as câmeras de
CAPÍTULO 3. TRABALHOS RELACIONADOS 20

time−o f − f light, concluindo que os dados de profundidade e intensidade são registrados


com uma maior taxa de quadros em relação a outros dispositivos.
Finalmente no trabalho de Zhang (2012), é feito um estudo do MS Kinect v1. Este
artigo centra no aspecto da visão do sensor e seu impacto para além da indústria de jogos.

3.1.2 Sensores que usam visão estéreo


Os dispositivos que usam visão estéreo tem melhor resolução em ambientes exter-
nos com pouca iluminação. Esse e outros aspectos são analisados em trabalhos como o
de Wan e Zhou (2008), onde é proposto um novo sistema estéreo baseado em câmeras es-
táticas PTZ (Pan Tilt Zoom). No trabalho em questão, analisa-se também a inconsistência
das intensidades em duas imagens da câmera, que é causada pelo autoajuste em diferentes
condições de iluminação e diferentes campos de visão.
A fim de acelerar o processamento de imagens usando sensores estéreo, estes são
utilizados em conjunto com uma GPU (Graphics Processor Unit) ou FPGA (Field Pro-
grammable Gate Array) tal qual no trabalho de Kalarot e Morris (2010). Este último
conclui que a GPU tem uma velocidade alta de processamento em comparação com a
FPGA para vários tamanhos de imagem.
Até o momento, das pesquisas existentes, noticiamos que os sensores do tipo estéreo
são melhores para aplicações onde for necessária a estimação de profundidade em dis-
tâncias mais longas e com iluminação variável. Porém, esses apresentam alguns desafios
principalmente no seu no projeto de hardware, nos algoritmos de cálculo de correspon-
dência, na calibração e no tempo de processamento.

3.1.3 Comparação entre sensores


O trabalho de Diaz et al. (2015) apresenta uma comparação entre as duas gerações
de sensores RGB-D, avaliando o Asus Xtion Pro e o MS Kinect v2. Os resultados con-
firmam que este último tem maior precisão e menos ruído quando está sob iluminação
controlada. De modo similar, Samir et al. (2015) avalia o MS Kinect v1 e v2 para rastrear
o movimento respiratório em seres humanos. Os resultados mostram que a precisão do
dispositivo v2 é ligeiramente melhor do que o v1, e que dentro dos termos de precisão
estática, seu erro é estável, a partir de 5 cm até uma distância de 4.5 m.
Ainda, na literatura são feitas comparações entre a câmera PG Bumblebee XB3 e o
MS Kinect v2, como o trabalho Kazmi et al. (2014). Conclui-se que as câmeras que usam
a tecnologia de time − o f − f light são sensíveis à luz ambiente do que as câmeras estéreo.
A visão estéreo é relativamente mais eficiente para a iluminação ao ar livre e tem melhor
resolução.
Nos trabalhos de Sabattini et al. (2012) e Beltran e Basañez (2014) foram testadas a
PG Bumblebee XB3 e o MS Kinect v1. A partir desses testes, conclui-se que a câmera
estéreo tem melhor desempenho na localização de um robô móvel devido à sua resolução
ser melhor.
Noticiamos que existem vários trabalhos comparando os sensores para visão 3D, en-
tretanto novos dispositivos são criados e, é necessário testá-los para definir seu desempe-
CAPÍTULO 3. TRABALHOS RELACIONADOS 21

nho e utilidade no desenvolvimento de aplicações robóticas. Conforme analisado nesta


seção, a maioria dos trabalhos apresentados não faz uma análise completa do erro RMS
do sensor usado nas aplicações.

3.2 Metodologias de estimação do erro


O MS Kinect é frequentemente utilizado para o desenvolvimento de aplicações em
visão computacional, principalmente, por causa do seu custo relativamente baixo, do SDK
e do desempenho aceitável na captura de dados de profundidade. No entanto, ele tem
limitações definidas em vários trabalhos como, por exemplo, o de Khoshelham (2011),
onde é determinado matematicamente e, de forma empírica, que o erro nas medições de
profundidade aumenta de forma quadrática com o aumento da distância entre o sensor
e o alvo. Para aplicações de mapeamento, recomenda-se que os dados sejam obtidos a
uma distância de 1 até 3 m do sensor. Também é proposto um modelo matemático para
calcular o erro a uma determinada distância.
Ao fazer uma análise empírica da precisão do MS Kinect e o Asus Xtion Pro, no
trabalho de Haggag et al. (2013), foi estabelecido que o MS Kinect é mais sensível aos
objetos que refletem iluminação. O trabalho conclui, também, que a luz infravermelha
emitida pelo sensor afeta a precisão da profundidade de um outro sensor quando estes se
juntam para capturar a mesma cena sem a separação suficiente.
Devido aos erros dos dispositivos RGB-D em longas distâncias, alguns trabalhos
como o de Yang et al. (2015) propõem juntar dois ou mais sensores para melhorar a
precisão dos dados de profundidade na captura de objetos a uma distância maior que 4m.
Concluiu-se que, um objeto coberto de materiais que absorvem a luz pode gerar menos
luz infravermelha refletida de volta para o MS Kinect e, portanto, dados de profundidade
errados. Outros fatores, tais como, o consumo de energia, fiação complexa e alto uso dos
recursos do computador portátil também limitam o uso do sensor.
O trabalho de Choo et al. (2014) analisa o erro do ponto de vista estatístico e apresenta
informação estocástica para cada direção do eixo, sendo o erro de profundidade medido
utilizando um tabuleiro de xadrez 3D. De acordo com os resultados, para todos os três ei-
xos, o erro deve ser considerado de forma independente. Song et al. (2014) propõem uma
abordagem através da aprendizagem supervisionada e do uso da inteligência artificial,
para gerar uma medida de confiança por pixel para cada mapa de profundidade capturado
pelo MS Kinect em ambientes interiores.
O artigo de Aguilar et al. (1996) avalia as câmeras estéreo CCD (Charge Coupled
Device). Para verificar sua precisão, são usados alguns objetos de calibração como grades,
placas, esferas e etc. Assim, são determinados os limites do erro em certas condições de
operações específicas.
No trabalho de Luo e Liou (1998) é calculado o erro médio e o desvio padrão na
reconstrução da superfície de um corpo, usando uma câmera estéreo. Neste trabalho, é
apresentada uma abordagem matemática usando a equação da superfície cilíndrica para
obter o raio do cilindro e compará-lo com o valor medido pelo dispositivo. Os resultados
indicam que a visão estéreo pode medir com precisão a superfície em várias curvaturas.
CAPÍTULO 3. TRABALHOS RELACIONADOS 22

Na literatura existem outras abordagens para determinação do erro nos dados de pro-
fundidade de sensores 3D, como os métodos estatísticos (Chang et al. 1994), geométri-
cos e probabilísticos (Blostein e Huang 1987), empíricos (Kytö et al. 2011, Hussmann
et al. 2008), entre outros. A Tabela 3.1 apresentada uma síntese dos métodos existentes,
incluindo o método proposto neste trabalho que usa o erro RMS, diferentemente dos de-
mais. Note que a contribuição a mais deste trabalho é justamente permitir que a mesma
métrica (erro RMS) possa ser usada em todos os dispositivos.

3.3 Aplicações usando dados de profundidade e visão 3D


A grande quantidade de dispositivos para captura de profundidade e reconstrução 3D
tem contribuído para o aumento das aplicações no campo da robótica, agricultura, pe-
cuária, medicina, entre outras. Algumas aplicações usam o Asus Xtion Pro para testar a
condição e peso corporal nos bovinos leiteiros (Kuzuhara et al. 2015). Na medicina, o MS
Kinect é usado para medir os movimentos em pessoas com Parkinson utilizando dados de
profundidade (Galna et al. 2014).
Outros pesquisadores tem usado a câmera PG Bumblebee XB3 e o Asus Xtion Pro
com a finalidade de criar um dispositivo de apoio para melhorar a mobilidade das pessoas
com deficiência e aumentar a sua independência, bem como seu acesso à vida em soci-
edade (Cloix et al. 2016). Também é proposto um algoritmo de reconhecimento de face
com dados de baixa resolução (Li et al. 2016). Em outra aplicação é proposto um novo
método para reconhecimento de gestos da mão a partir de imagens de profundidade em
tempo real (Qin et al. 2014).
Um estudo em Fisioterapia associado à visão computacional propõe um novo método
probabilístico para aumentar a precisão na captura e reconstrução das posturas do corpo
humano em tempo real (Liu et al. 2016). Do mesmo modo, em outra pesquisa, Wei et al.
(2016) desenvolvem um sistema para reconstrução de movimento humano em 3D, com
base na informação de profundidade fornecida pelo MS Kinect v2. No trabalho de Maier
et al. (2012), são construídos sistemas para a localização de um robô, mapeamento de
obstáculos e planejamento de trajetória em ambientes 3D.
Na maioria dos trabalhos citados, nota-se que a precisão de um dispositivo fornecedor
de dados de profundidade e geração 3D é crucial para o desempenho ótimo das aplica-
ções desenvolvidas. Todos os estudos foram feitos com base na análise do desempenho
do dispositivo usado sem, no entanto, proporcionar um método genérico para estimar a
precisão ou exatidão de outros sensores.
CAPÍTULO 3. TRABALHOS RELACIONADOS 23

Trabalho Método de avaliação Sensor Erro RMS


Modelagem matemática usando
triangulação. Comparação de
(Khoshelham 2011) MS Kinect v1 Não
dados: FARO LS MS 880 (ideal)
e o MS Kinect v1 (testada).
Regressão forçada aleatória e
(Song et al. 2014) MS Kinect v1 Não
aprendizagem de máquina.
Comparação de distâncias: Laser
(Yang et al. 2015) AGPtek (ideal) e MS Kinect v2 MS Kinect v2 Não
(testada).
Vários testes colocando o sensor
MS Kinect v1
(Haggag et al. 2013) a diferentes distâncias de Não
Asus Xtion Pro
uma superfície plana.
Vários testes usando uma
(Choo et al. 2014) superfície plana e um tabuleiro MS Kinect v1 Não
de xadrez 3D com relevo.
Análise estatística. As fórmulas
para o erro absoluto, erro relativo, Genérico
(Chang et al. 1994) Não
limites inferiores e superiores do Visão Estéreo
erro de profundidade são obtidas.
Usa-se triangulação e modelo de
câmera Pinhole. Supõe-se que
a posição ideal do ponto 3D é
Genérico
(Blostein e Huang 1987) uniformemente distribuída. Não
Visão Estéreo
O erro é modelado como a
quantização do plano de
imagem espacial.
Abordagem matemática usando
a equação da superfície cilíndrica Visão Estéreo
(Luo e Liou 1998) para obter o raio de um cilindro (SONY Não
e compará-lo com o valor medido CCD XC-77)
pelo dispositivo.
É usado um tabuleiro de xadrez em
Visão Estéreo
2D. Medições feitas em diferentes
(Kytö et al. 2011) (Videology Não
distâncias (0,7 m a 5,8 m).
24B1.3XUSB-C)
Iluminação de 1000 lux.
São usados objetos, tais Visão Estéreo
(Aguilar et al. 1996) Não
como, grades, placas, esferas e etc. Câmeras CCD
Usa-se a imagem (RGB) e o
Genérico
mapa de profundidade de um
(Sensores
tabuleiro de xadrez 2D ou 3D.
Proposto RGB-D Sim
Técnicas de ajustes de curvas
e de Visão
são usados para a modelagem
Estéreo)
do erro.

Tabela 3.1: Comparação das diferentes metodologias e técnicas usadas para estimação do
erro, precisão ou confidência nos dados de profundidade fornecidos por sensores 3D.
Capítulo 4

Problema

A partir de uma análise da teoria e dos trabalhos expostos nos Capítulos 2 e 3, nota-
se que os erros na estimação de profundidade produzidos por sensores 3D são causados
principalmente devido ao uso de lentes com alta distorção, má calibração, forma e ilumi-
nação do objeto capturado, entre outros. A partir dessa constatação, surge a necessidade
de determinar que erro é esse para poder melhor tratá-lo nas aplicações onde seu trata-
mento é essencial. Por exemplo, o procedimento de determinação do erro é essencial em
aplicações de robótica probabilística, tal como na localização de veículos aéreos autôno-
mos (UAV - Unmanned Aerial Vehicle), onde é essencial que se tenha valores corretos de
profundidade principalmente para o pouso.
Também, os dados de profundidade do ambiente são aspectos prioritários para a aero-
nave não bater nos objetos naturais ou artificiais presentes no ambiente. Outra aplicação
é a reconstrução 3D, pois nela busca-se gerar objetos com medidas próximas das reais e
com o menor erro possível. Nesta perspectiva, neste Capítulo 4 é feita uma apresentação
do problema de estimação do erro, de forma genérica, fechando com a obtenção de um
modelo matemático do erro RMS para determinar quão exatos são realmente os sensores
usados em visão computacional e robótica.

4.1 Formalismo matemático do problema


O problema de determinação do erro a ser modelado matematicamente neste trabalho
pode ser formalizado simplesmente como:

Dado dois conjuntos de estruturas do tipo canto, um ideal pi (obtido de um padrão


manualmente) com coordenadas referenciadas ao sistema de câmera (Xc pi ,Y c pi ,

Zc pi ), e outro medido (estimado) a partir do sensor 3D (ou do seu SDK) pi com co-
ordenadas no sistema de pixeis dadas por (u p� , v p� ) e com coordenadas no sistema
i i

de câmera dadas por (Xc p� ,Y c p� , Zc p� ), qual é o erro RMS entre pi e pi ?
i i i

Notadamente, este problema da estimação do erro RMS, em qualquer sensor 3D, su-
põe algumas dificuldades (ou passos para ser realizado) tais como: a captura de imagens
RGB que devem estar alinhadas com o mapa de profundidade; a detecção de cantos para
o alcance do sensor analisado; o registro e alinhamento das nuvens de pontos usando as
CAPÍTULO 4. PROBLEMA 25

coordenadas 3D ideais e reais; e por fim a modelagem matemática do erro RMS. Esses


passos serão tratados a seguir, separadamente.

4.1.1 Captura de dados


O propósito deste trabalho é avaliar de forma global (hardware e algoritmos usados
para a geração de dados de profundidade) os dispositivos. Para que o problema seja
solucionado é fundamental que alguns aspectos (ou restrições) sejam pré-estabelecidos.
Como restrições fundamentais podemos citar:

• Os parâmetros intrínsecos e extrínsecos do dispositivo analisado devem ser conhe-


cidos;
• O dispositivo de captura deve ser previamente calibrado para que forneça imagens
e mapas de profundidade retificados, ou seja, sem distorções radial e tangencial.
• Deve-se alinhar a imagem RGB com o mapa de profundidade para que possa existir
uma relação entre cada pixel (u p� , v p� ) e sua respectiva profundidade Zc p� , como
i i i
mostrado na Figura 4.1.

Essas restrições são facilmente implementáveis usando o SDK do dispositivo ou mes-


mo usando métodos das bibliotecas mais comuns de visão computacional, tal como a
OpenCV (Bradski 2000).

Figura 4.1: Relação entre uma imagem RGB e seu mapa de profundidade

4.1.2 Padrão e detecção de cantos


Para estimar o erro RMS, são necessários os dados ideais, que irão servir como base
para a comparação com os dados estimados (calculados ou medidos). Esses dados podem
ser obtidos manualmente a partir de um padrão de fácil construção e com baixo custo,
como os tabuleiros de xadrez usados comumente neste tipo de abordagem. Em visão
computacional, estes tabuleiros são amplamente usados, pois seus cantos são de fácil de-
tecção quando comparados com outros padrões. O principal problema que encontramos
ao usá-los inicialmente foi na detecção de seus cantos a longas distâncias, ou seja, em
nosso problema, os algoritmos de detecção e ordenação devem ser eficazes para atingir o
CAPÍTULO 4. PROBLEMA 26

alcance máximo do sensor analisado. Os algoritmos tradicionais foram desenvolvidos na


literatura, em sua maioria, para dispositivos RGB-D que tem curto alcance, mais especifi-
camente para distâncias que vão desde 1 até 10 m. Nas câmeras estéreo atuais este alcance
pode ser duplicado, para 20 m ou mais, e para que o método funcione sem ambiguidades,
a detecção deve ser de múltiplos padrões (com pontos distribuídos em uma configuração
3D sem serem coplanares). Ainda, pela questão da distância, é necessário que se tenha
padrões de vários tamanhos, como mostrado na Figura 4.2. Note que, na proposta deste
trabalho, a ideia é analisar o erro RMS nos eixos (X,Y, Z), fornecendo uma métrica em
3D.

Figura 4.2: Exemplo do padrão usado para a detecção de cantos.

4.1.3 Registro e alinhamento de nuvens de pontos


Choo et al. (2014) afirma que o melhor método para estimar o erro nos dados de
profundidade é analisá-lo nas coordenadas (X,Y, Z). Uma das formas de se realizar esta
análise é projetar em um espaço 3D os cantos de um padrão usando a Equação 4.1, obtida
a partir da Equação 2.5. Dessa maneira, obtém-se as coordenadas 3D ideais (do padrão)
e as estimadas (medida pelo dispositivo) dos cantos e pode-se representar esses cantos
ideais e estimados como duas nuvens de pontos. As coordenadas ideais servem como
base para o cálculo do erro RMS das outras coordenadas, estimadas pelos dispositivos
testados.
u p� −Cx v p� −Cy
Xc p� = i
Zc p� Y c p� = i
Zc p� (4.1)
i fx i i fy i

Antes de calcular o erro RMS, as nuvens de pontos ideal e estimada devem ser re-
gistradas e alinhadas. Inicialmente, a primeira está representada em um sistema de coor-
denadas mundo e a segunda no sistema de câmera. O objetivo é encontrar as posições e
orientações das nuvens de pontos em uma estrutura de coordenadas globais, de modo que
ambas nuvens tenham o mesmo f rame de referencia. O fluxograma básico do algoritmo
para realizar o registro entre nuvens de pontos pode ser visualizado na Figura 4.3. Em
nosso caso, as duas nuvens têm índices ou correspondências conhecidas, têm o mesmo
CAPÍTULO 4. PROBLEMA 27

número de pontos, e cada ponto em uma nuvem tem seu correspondente na outra. Então o
objetivo final é obter uma matriz de transformação rígida (4 × 4) que representa a rotação
e translação de uma nuvem com respeito a outra.

Fornecer:
-Nuvem estimada (obtida com o sensor 3D)
-Nuvem ideal (obtida por medição direta).

Estabelecer correspondências
de forma manual.

Usar SVD para determinar [R|t].

Aplicar [R|t] a nuvem estimada.

Alinhar as duas nuvens

Figura 4.3: Fluxograma do algoritmo para o registro e alinhamento de duas nuvens de


pontos.

4.1.4 Estimativa do erro RMS e modelagem matemática


Após o registro, surge o problema de juntar todos os erros individuais das coordenadas
de cada canto em apenas uma métrica. Uma das melhores formas para fazer isso é usar o
valor RMS, já que é uma boa medida de exatidão, pois quantifica a diferença entre dois
conjuntos de dados e amplia os grandes erros, considerando valores negativos e positivos.
O erro quadrático ∑2 é calculado usando a Equação 2.22, onde simplesmente realiza-
se a soma das distâncias euclidianas |e1 |, |e2 |, | . . . |, |en | medidas entre cada canto ideal
� � �
(p1 , p2 , . . . , pi ) até cada canto estimado (p1 , p2 , . . . , pi ), tal como ilustrado na Figura 4.4.
O erro RMS é obtido a partir da Equação 4.2. Neste processo, é necessário otimizar o
tempo de processamento, já que envolve uma grande quantidade de cálculos.

∑2
eRMS = (4.2)
n
Após o cálculo dos valores de erro RMS obtém-se uma representação matemática que
possa ser usada em outras aplicações de visão robótica. Para isso, é usada a regressão por
mínimos quadrados com a função exponencial da Equação 4.3, onde Z j é a distância entre
o padrão e o sensor 3D testado. O ajuste de curva é avaliado nas equações 2.34, 2.35, 2.36.

eRMS = f (Z j ) = aebZ j (4.3)


CAPÍTULO 4. PROBLEMA 28

Figura 4.4: Processo do cálculo do erro RMS em nuvens de pontos.

4.2 Método proposto


Após analisar os problemas inerentes à determinação e representação do erro RMS
em dados de profundidade, o método que se propõe para resolvê-los é:

• Capturar, com o sensor que se deseja testar, uma imagem RGB (sem distorções) de
um padrão 3D (um tabuleiro de xadrez) e obter seu mapa de profundidade;
• Detectar os cantos internos do padrão 3D e encontrar suas coordenadas (u p� , v p� )
i i
em pixels. Fazendo uso dessas coordenadas, pesquisar no interior do mapa o valor
de profundidade correspondente;
• Encontrar as coordenadas (Xc p� ,Y c p� , Zc p� ) de cada canto usando as equações de
i i i
projeção 2D-3D. Em outras palavras, deve-se converter as coordenadas imagem de
cada canto em coordenadas câmera;
• Criar uma nuvem de pontos com as coordenadas ideais (em milímetros)
(Xc pi ,Y c pi , Zc pi ) de cada canto no padrão 3D;
• Utilizar as coordenadas (Xc p� ,Y c p� , Zc p� ) para formar uma nuvem de pontos com
i i i
coordenadas reais (em mm).
• Registar e alinhar (os sistemas de coordenadas câmera e mundo) as nuvens pontos
reais e ideais e encontrar a matriz de transformação;
• Calcular a diferença entre as coordenadas ideais e reais de cada canto e obter o valor
de erro RMS global;
• Depois de realizar as etapas mencionadas anteriormente para diferentes distâncias
entre o sensor e o padrão, é possível encontrar o modelo matemático do erro RMS
para cada sensor testado, usando técnicas de ajuste de curvas.

Na Figura 4.5 é mostrado um diagrama geral com cada processo do método proposto.
No capítulo seguinte, é descrito como foi implementado cada um destes processos.
CAPÍTULO 4. PROBLEMA 29

Início

–Configuração Sensor
Captura –Padrão:
-Imagem RGB
-Mapa de Profundidade

–Detecção Cantos (reais)


-Obtenção de (u p� , v p� )
i i

Processamento 2D -Com (u p� , v p� ) procurar Zc pi


i i
(Cantos do Padrão) no mapa de profundidade
-Transformação (u p� , v p� ) à
i i
(Xc pi ,Y c pi , Zc pi )

–Criando Nuvens Pontos:


-Real: Cantos (Xc p� ,Y c p� , Zc p� ) em (mm)
i i i

Processamento 3D -Ideal: Com as medidas em (mm)


(Nuvens Ideal-Real) dos cantos do padrão (Xc pi ,Y c pi , Zc pi )
–Registro Nuvem Ideal e Real:
-Encontre o [R|t] entre a nuvem
Ideal e Real

–Distância euclidiana entre os dois vetores:


Estimação do erro Ideal – Real de cada canto 3D
RMS ∑2 ←� (Xc p� ,Y c p� , Zc p� )−(R∗(Xc pi ,Y c pi , Zc pi )+t) �2
i i i

–Função que relaciona o erro RMS com a


Modelo Matemático profundidade (ou distância padrão-sensor)
do erro RMS
f (Z j ) ← aebZ j

Stop

Figura 4.5: Diagrama do método proposto para estimação do erro RMS nos dados de
profundidade de sensores 3D.
Capítulo 5

Implementação

Os processos envolvidos na implementação do método genérico para encontrar o erro


RMS nos dados de profundidade dos sensores 3D são apresentados neste capitulo, para
concretizar o formalismo discutido no Capítulo 4. Toda a implementação foi concebida
usando o ambiente C++/Linux, e com a biblioteca OpenCV. A biblioteca OpenCV8 tem
mais de 2500 algoritmos otimizados, com interfaces de C++, MATLAB entre outros e su-
porta o Linux. Ainda, usamos a biblioteca PCL9 que é resultado de um projeto de código
aberto para o processamento em grande escala de nuvens de pontos. A PCL contém vá-
rios algoritmos distribuídos em módulos: f eatures, registo, segmentação, input/out put,
visualização, entre outros. É compatível com Linux e executa em sistemas embarcados
como a placa NVIDA Jetson usada neste trabalho.
O método consta de vários processos: captura de dados, processamento 2D, proces-
samento 3D, estimação e modelagem matemática do erro RMS. Também é apresentado
o sistema embarcado para comprovação do método e coleta de dados que permitam mo-
delar o erro RMS dos sensores 3D (MS Kinect v1, v2 e câmera Stereolabs ZED). As
implementações desses, em módulos, serão discutidas a seguir.

5.1 Captura: Imagem RGB e mapa de profundidade


Considerando os aspectos discutidos na Subseção 4.1.1, referentes à configuração do
dispositivo testado e descrito na Subseção 4.1.2 para o padrão de estimação do erro RMS,
foi escolhido o tabuleiro de xadrez 3D, como mostrado na Figura 5.1a. Note que o tabu-
leiro possui as seguintes características:

• Cada plano contém um xadrez.


• Cada xadrez tem um número diferente de cantos internos (exemplo 6 × 4, 7 × 6,
7 × 5, etc).
• O numero mínimo de cantos internos tem de ser (3 × 4) ou (4 × 3).
• Os tamanhos de todos os quadrados pretos e brancos são iguais.
• Cada xadrez tem um espaço em branco na sua fronteira para fazer a detecção dos
cantos mais eficiente em ambientes com iluminação diferente.
8 Mais detalhes em:www.opencv.org
9 Mais detalhes em:www.pointclouds.org
CAPÍTULO 5. IMPLEMENTAÇÃO 31

• Todos os planos são ortogonais.


• É construído de um material rígido.

(a) (b)

Figura 5.1: Exemplo de uma imagem RGB do padrão (a) e seu mapa de profundidade (b)
correspondente para análise do erro RMS.

No caso das câmeras estéreo, a captura é realizada pela câmera de referência para o
cálculo de profundidade. Estabelecemos esta câmera como sendo aquela que está à es-
querda com o propósito de que a imagem e o mapa de profundidade fiquem coerentes.
Quanto aos sensores RGB-D, a maioria (exceto o MS Kinect v2) já realiza o alinhamento,
não sendo ele foco do presente trabalho, uma vez que o escopo do mesmo é avaliar o
dispositivo de forma global, ou seja, os algoritmos e hardware que os fabricantes e de-
senvolvedores usam para o cálculo de dados de profundidade. Então, as entradas de nosso
método são imagens, mapas de profundidade já alinhados e sem distorções, e com os pa-
râmetros intrínsecos e extrínsecos do dispositivo testado.

5.2 Processamento 2D: Detecção de cantos


Para implementar uma solução do problema descrito na Secção 4.1, são necessários
dois conjuntos de cantos. O primeiro é composto por cantos ideais pi , obtidos a partir da

medição empírica de suas coordenadas. O segundo conjunto pi é obtido a partir da detec-
ção e ordenamento dos cantos na imagem RGB do tabuleiro e de acordo com o esquema
mostrado na Figura 5.2. Usando o Algoritmo 1, explicado na Secção 2.3, consegue-se
obter as coordenadas em pixels (u p� , v p� ) de todos os cantos presentes no padrão. Neste
i i
algoritmo as funções retrieveImage(), retrieveMeasure(), getParameters() e f ce() não
são abordadas. Os vetores c1 , c2 e c3 são as coordenadas (u p� , v p� ) dos cantos em cada
i i
tabuleiro de xadrez.
CAPÍTULO 5. IMPLEMENTAÇÃO 32

Figura 5.2: Detecção e ordenamento dos cantos nos três planos do padrão.

Algoritmo 1: Algoritmo para obter as coordenadas em pixels (reais) (u p� , v p� ), dos


i i
cantos do padrão 3D.
Entrada: sensor: Dispositivo testado
Saída: (u p� , v p� ): Coordenadas em pixels (reais)
i i
1 f lag ← true;
2 enquanto f lag faça
3 se sensor = true então
4 src ← retrieveImage(imageRGB);
5 depthMap ← retrieveMeasure(Depth);
6 intrinsics ← getParameters(sensor);
7 [c1, xySize, c2, yzSize, c3, xzSize] = f ce(src);
8 se c1 e c2 e c3 então
9 f lag ← f alse;
10 senão
11 f lag ← true;
12 fim
13 fim
14 fim
15 (u p� , v p� ) ← [c1, c2, c3];
i i
16 retorna (u p� , v p� );
i i

5.3 Processamento 3D
Para conseguir uma análise em (X,Y, Z) do erro RMS nos dados de profundidade é
preciso levar as coordenadas dos cantos obtidos de forma “ideal” e real a um espaço 3D.

5.3.1 Projeção 2D a 3D de cantos


No caso dos cantos ideais pi suas coordenadas (Xc pi ,Y c pi , Zc pi ) são obtidas por me-
dição direta da localização de cada um, no tabuleiro 3D, como se mostra na Figura 5.3a.
Com estas coordenadas cria-se uma nuvem de pontos ideal, usando o Algoritmo 2, Fi-
CAPÍTULO 5. IMPLEMENTAÇÃO 33

gura 5.3b.
Os cantos estimados (que são obtidos através do dispositivo testado Figura 5.3c) com
as coordenadas em pixeis (u p� , v p� ), as coordenadas (Xc p� ,Y c p� , Zc p� ) são obtidas com a
i i i i i
Equação 4.1. Depois da reprojeção 2D-3D, de cada canto, pode-se criar uma nuvem de
pontos real como da Figura 5.3d usando o Algoritmo 3.

(a) (b)

(c) (d)

Figura 5.3: Determinação dos cantos ideais e reais. Obtenção das coordenadas ideais (a)
e reais (c) dos cantos do padrão e sua representação em 3D (b) e (d), respectivamente.

5.3.2 Registro e alinhamento


O processo seguinte foi deixar as nuvens de pontos ideal e medida em um mesmo
sistema de coordenadas. Usando o Algoritmo 4, descrito na Subsecção 2.4.2, pode-se
registrar e alinhar (obter a matriz [R|t]) as duas nuvens, obtendo-se uma nuvem como da
Figura 5.4 que contém a representação 3D dos cantos ideais (pretos) e estimados (ver-
melhos). O registro e alinhamento são feitos sobre duas nuvens com índices e corres-
pondências conhecidas. O erro deste processo é praticamente zero, dessa forma, não é
considerado para o erro final das análises.
CAPÍTULO 5. IMPLEMENTAÇÃO 34

Algoritmo 2: Algoritmo para obter a nuvem de pontos ideal (coordenadas ideais)


(Xc pi ,Y c pi , Zc pi ) em (mm) dos cantos do padrão 3D.
Entrada: l: Largura de cada quadrado;
xySize: # de cantos no plano X-Y;
yzSize: # de cantos no plano Y-Z;
xzSize: # de cantos no plano X-Z
Saída: (Xc pi ,Y c pi , Zc pi ): Nuvem ideal
/* Plano XY */
1 para y = 1 : 1 : xySize.height faça
2 para x = 1 : 1 : xySize.width faça
3 (Xc pi ,Y c pi , Zc pi ) ← (x ∗ l, y ∗ l, 0);
4 fim
5 fim
/* Plano YZ */
6 para z = 1 : 1 : yzSize.height faça
7 para y = 1 : 1 : yzSize.width faça
8 (Xc pi ,Y c pi , Zc pi ) ← (0, y ∗ l, z ∗ l);
9 fim
10 fim
/* Plano XZ */
11 para z = 1 : 1 : xzSize.height faça
12 para x = 1 : 1 : x < xzSize.width faça
13 (Xc pi ,Y c pi , Zc pi ) ← (x ∗ l, 0, z ∗ l);
14 fim
15 fim
16 retorna (Xc pi ,Y c pi , Zc pi );

Figura 5.4: Resultado do registro das nuvens de pontos ideal (preta) e estimada (verme-
lha).
CAPÍTULO 5. IMPLEMENTAÇÃO 35

Algoritmo 3: Algoritmo para obter a nuvem de pontos estimada (coordenadas me-


didas pelo sensor) (Xc p� ,Y c p� , Zc p� ) em (mm) dos cantos do padrão 3D.
i i i
Entrada: (u p� , v p� ): Coordenadas (pixels);
i i
depthMap: Mapa de profundidade
Saída: (Xc p� ,Y c p� , Zc p� ): Nuvem real
i i i
1 para i = 0 : 1 : i < (u p� , v p� ).size() faça
i i
2 Zc p� ← depthMap((u p� , v p� ).y, (u p� , v p� ).x);
i � i i i i �


u � −Cx
pi
v p
� −Cy
3 pi ← Zc p� , i Zc p� , Zc p� ;
fx i fy i i

4 (Xc p� ,Y c p� , Zc p� ) ← pi ;
i i i
5 fim
6 retorna (Xc p� ,Y c p� , Zc p� );
i i i

5.4 Estimação do erro RMS


Com as duas nuvens registradas, o próximo passo é calcular o erro RMS entre as
coordenadas 3D (ideal e real) para cada canto no tabuleiro de xadrez 3D. Para isto é usada
a Equação 4.2.

Algoritmo 4: Algoritmo para obter a transformação rígida entre a nuvem ideal e


real, e o cálculo do erro RMS dos dados de profundidade.
Entrada: (Xc pi ,Y c pi , Zc pi ): Nuvem de pontos ideal;
(Xc p� ,Y c p� , Zc p� ): Nuvem de pontos real
i i i
Saída: erroRMS : Erro nos dados de profundidade
1 [R|t] ← registration((Xc � ,Y c � , Zc � ), (Xc pi ,Y c pi , Zc pi ));
p p p i i i
2 para i = 0 : 1 : i < (Xc p� ,Y c p� , Zc p� ).size() faça
i i i
3 ∑2 ←� (Xc p� ,Y c p� , Zc p� ) − (R ∗ (Xc pi ,Y c pi , Zc pi ) + t) �2 ;
i i i
4 fim

∑2
5 erroRMS =
(Xc p� ,Y c p� , Zc p� ).size()
i i i
6 retorna erroRMS ;

5.5 Modelagem matemática do erro RMS


Se o cálculo do erro RMS é realizado várias vezes para diversas distâncias Z j entre
o sensor testado e o padrão 3D, pode-se obter um conjunto de valores de erro. Com
estes dados pode-se obter um modelo matemático do erro RMS que serve para estimar
CAPÍTULO 5. IMPLEMENTAÇÃO 36

valores intermediários e que pode ser a entrada de outro sistema (robótico, deep learning,
controle, etc.). Como será demonstrado no Capítulo 6, estes dados seguem uma tendência
de tipo exponencial, por isso sua regressão é feita usando a Equação 4.3 e implementada
com o Algoritmo 5.
Em geral, o Algoritmo 6 apresentado no Apêndice A contem todas as etapas do mé-
todo proposto e pode ser usado para encontrar o erro RMS nos dados de profundidade de
um sensor 3D, capaz de fornecer uma imagem RGB e um mapa de profundidade de um
tabuleiro de xadrez 3D. Além de obter a função que relaciona o erro eRMS com a profun-
didade (ou distância padrão-sensor) Z j . Observe que o algoritmo é genérico e pode ser
usado em dados provenientes de qualquer dispositivo. A única restrição é o uso de um
padrão 3D (ou um similarmente construído) a partir do qual o algoritmo irá calcular os
pontos 3D, a fim de formar as nuvens de pontos.

Algoritmo 5: Algoritmo para obter o modelo matemático que relaciona o erro RMS
com a profundidade fornecida pelo sensor 3D.
Entrada: erroRMS : Erro RMS a uma distância Z j ;
Z j : Distância padrão-sensor
Saída: f (Z j ): erroRMS em função de Z j
1 para j = 0 : 1 : Z j faça
2 f (Z j ) ← aebZ j ;
3 fim
4 retorna f (Z j );

5.6 Sistema embarcado para testar o método


Para verificar e validar o método proposto, foi construído o sistema embarcado mos-
trado na Figura 5.5. Basicamente, o hardware do sistema é composto por uma placa
NVIDIA Jetson TK1 e três sensores 3D. Nesta plataforma de processamento gráfico são
implementados os algoritmos 1, 2, 3, 4 e 5.

5.6.1 Placa NVIDIA Jetson TK1


A placa de desenvolvimento Jetson é baseada em uma GPU, para criar aplicativos,
permitindo que os dados sejam processados mais rapidamente do que os processadores
convencionais. Possui suporte para bibliotecas como CUDA, OpenCV, PCL e outros.
Algumas de suas características físicas são:

• Tegra K1 SOC:
– GPU com 192 CUDA Cores
– CPU Quad-Core ARM�Cortex
R TM -A15

• Memória de 2 GB x 16;
• Memória eMMC de 16 GB 4,51;
CAPÍTULO 5. IMPLEMENTAÇÃO 37

• Uma porta SD/MMC;


• Uma porta HDMI;
• Um USB 3, A;
• Energia: 12 VDC, 5 watts.

Figura 5.5: Diagrama do sistema embarcado para testar o método para a estimativa do
erro RMS em dados de profundidade

5.6.2 Câmera Stereo ZED


Um dos sensores usados nesta dissertação é a câmera estero ZED. É formada por
duas câmeras de alta resolução que capturam imagens (esquerda e direita) ao mesmo
tempo e transmite-as para um dispositivo de processamento que pode ser um PC ou outro
dispositivo com USB 3.0 e potência computacional necessária. As características mais
importantes das câmeras ZED são descritas na Tabela 5.1.
A câmera ZED é um dispositivo do tipo passivo, ou seja, ela precisa de um dispositivo
adicional para fornecer energia e para o processamento dos dados capturados. Observe na
Figura 5.6 que ela tem um tamanho reduzido em comparação com outros sensores para
visão 3D.
A Figura 5.7 mostra um exemplo de dados adquiridos pelas câmeras ZED, onde Z é
a profundidade, f é a distância focal e B é a separação entre duas câmeras. Como dito
acima, câmera esquerda é a base para o cálculo da profundidade, ao contrário de outros
dispositivos como o MS Kinect v2, onde a imagem RGB não está condizente com o mapa
de profundidade.

5.6.3 Sensor RGB-D (luz estruturada) MS Kinect v1


O MS Kinect v1 da Figura 5.8a é um dispositivo periférico criado para jogos de vídeo,
mas também é usado em pesquisa em áreas como visão computacional e robótica. Ele
CAPÍTULO 5. IMPLEMENTAÇÃO 38

Dimensões:
Tamanho e peso 175x30x33 mm
Peso: 159 g
2208x1242 (15 fps)
Imagem individual 1920x1080 (30 fps)
e resolução de profundidade (px) 1280x720 (60 fps)
672x376 (100 fps)
Alcance: 0,7-20 m
Profundidade Formato: 32 bits
Linha de base: 120 mm
Campo de visão: 110 ◦
Lentes
f /2,0 abertura
Tamanho: 1/3”
Sensores Formato: 16:9
Tamanho do Pixel: 2-u px
USB 3,0 (5 V / 380 mA)
Conectividade
0◦ C to +45◦ C
Windows ou Linux
SDK-Requisitos Dual-core 2,3 GHz
do sistema 4 GB RAM
Nvidia GPU

Tabela 5.1: Características relevantes da câmera ZED.

consiste em uma câmera RGB, um sensor de profundidade 3D (câmera e emissores IR),


um microfone e um motor na base para mudar a inclinação vertical.
O MS Kinect v1 mede a profundidade com o princípio de luz estruturada, no qual um
padrão infravermelho conhecido e projetado (pelo emissor) em uma cena e seu retorno e
registrado por um sensor de profundidade (receptor).

5.6.4 Sensor RGB-D (time-of-flight) MS Kinect v2


O MS Kinect v2 contém uma câmera infravermelha e uma RGB (Figura 5.8b). Este
sensor utiliza a técnica de cálculo do tempo de retorno da luz e a profundidade é deter-
minada por medição do tempo que a luz infravermelha demora em sair da câmera, reflete
em um objeto e retorna de novo ao sensor. Portanto, ele emite luz infravermelha com
ondas moduladas constantemente e detecta o deslocamento de fase da luz de retorno. A
Tabela 5.2 apresenta as principais características dos sensores RGB-D, usados neste tra-
balho.
Finalmente, na Tabela 5.3, são apresentados os parâmetros intrínsecos e coeficientes
de distorção radial de cada sensor usados neste trabalho. Estes parâmetros foram forneci-
dos pelos fabricantes dos dispositivos.
CAPÍTULO 5. IMPLEMENTAÇÃO 39

(a)

(b)

Figura 5.6: Câmera ZED: (a) aspecto físico e (b) dimensões em milímetros.

Figura 5.7: Estimação de dados de profundidade pela câmera ZED.

(a) (b)

Figura 5.8: Sensores RGB-D: (a) MS Kinect v1 e (b) v2.


CAPÍTULO 5. IMPLEMENTAÇÃO 40

MS Kinect v1 MS Kinect v2
Modelo 1414 1520
RGB: 640x480 (30 fps) 1920x1080 (30 fps)
Resolução Profundidade: 640x480 512x424
IR: 640x480 512x424
57◦ H 70◦ H
Campo de visão
43◦ V 60◦ V
Alcance de
0,4 - 3,5 m 0,4 - 4,5 m
Profundidade
Dimensões: 27,9cmx6,3cmx3,8cm 24,9cmx6,6cmx6,7cm
Aspectos Físicos Peso: 1,36 kg 1,4 kg

Temperatura: 5 a 35 C 5 a 35◦ C
Dados: USB 2 USB 3
Conexão e Energia
12 V - 1,08 A 12 V - 2,67 A
Acompanhamento Pessoas: 2 6
Corporal Juntas: 20 25

Tabela 5.2: Comparativa das características dos sensores MS Kinect v1 e v2.

MS MS ZED ZED ZED ZED


Kinect v1 Kinect v2 (2208x1242) (1920x1080) (1280x720) (672x376)
fx 522,9552 367,7365 1.399,83 1.399,83 699,917 349,957
fy 523,8785 367,4986 1.399,83 1.399,83 699,917 349,957
Cx 329,0866 264,4096 1.081,55 937,545 627,273 328,638
Cy 254,7133 201,5598 613,695 532,695 354,847 184,424
K1 0,2955 0,2287 -0,173731 -0,173731 -0,173731 -0,173731
K2 -1,0314 -0,6675 0,0270773 0,0270773 0,0270773 0,0270773

Tabela 5.3: Parâmetros intrínsecos e coeficientes de distorção radial de cada sensor 3D.
Capítulo 6

Experimentos e Resultados

A contribuição deste trabalho consiste na determinação do erro RMS nos dados de


profundidade fornecidos por qualquer sensor 3D. Para verificar e testar o método pro-
posto, é usado o sistema embarcado cuja montagem foi descrita no Capítulo 5 (Ortiz
et al. 2016). Ele é composto por uma placa NVIDIA Jetson TK1, os MS Kinect’s v1,
v2 e a câmera Stereolabs ZED. Também são usados padrões (tabuleiros de xadrez) com
dois e três planos. São feitos dois tipos de testes, um para obter o erro RMS de todos os
dispositivos mencionados acima, e outro para determinar apenas o erro RMS da câmera
ZED para cada uma de suas resoluções de captura ( f rames individuais de “2208×1242
px”, “1920×1080 px”, “1280×720 px” e “672×376 px”). Após a coleta de dados, foi
realizado um ajuste de curva para obter a equação que relaciona o erro RMS e a distân-
cia entre o padrão e o sensor (profundidade). Os resultados são mostrados nas seções
subsequentes.

6.1 Determinação do erro RMS: Câmera ZED


Com o propósito de determinar a exatidão dos dados de profundidade da câmera ZED,
em todas as suas resoluções de captura, foi realizado o processo ilustrado na Figura 6.1.
Um padrão com dois tabuleiros de xadrez ortogonais um ao outro (Figura 6.2) foi usado
e cada um deles tem (3 × 4) cantos internos. O método foi testado para verificar se era
compatível com este tipo de padrão.
Para conseguir uma detecção correta dos cantos a longas distâncias, foi determinado
empiricamente o tamanho dos quadrados pretos e brancos de 20 cm. Usando esse padrão
em cada experimento, obtém-se um conjunto de amostras (nuvens de pontos) com vinte
e quatro valores de profundidade e seus respectivos erros. O processo é repetido a várias
distâncias entre o padrão e a câmera Z j , na faixa de 1 até 20 m. Assim, foram realiza-
dos 20 repetições (testes) do mesmo experimento, uma para cada resolução da câmera,
totalizando em 80 repetições.
Cada teste fornece um valor de erro RMS para cada Z j . Estes testes foram realizados
em locais fechados e com luz artificial, para que a câmera tivesse um melhor desempenho.
No entanto, observa-se que a visão estéreo funciona melhor para cenas em locais abertos,
com mais textura. Não obstante, note que os resultados dessa abordagem podem ser
usados com outras cenas.
CAPÍTULO 6. EXPERIMENTOS E RESULTADOS 42

Figura 6.1: Processo dos experimentos para determinação do erro RMS na câmera ZED,
usando um padrão com dois planos.

Figura 6.2: Dimensões em milímetros de um padrão com dois planos.

Uma ferramenta útil da câmera ZED é o seu SDK (Kit de Desenvolvimento de So f t−


ware), que permite ao desenvolvedor usar funções otimizadas para obter o máximo de-
sempenho do dispositivo. Com esta ferramenta, é possível capturar imagens retificadas e
mapas de profundidade alinhados.
O SDK da câmera ZED possui um sistema de autocalibração. Cada vez que ela é ini-
cializada, os parâmetros de calibração são otimizados de acordo com a luz ambiente e sua
posição. O SDK da câmera permite ligar ou desligar esta propriedade. Mas, para os testes
realizados e aqui apresentados, a câmera permaneceu ligada em todo o processo, uma vez
que, pretende-se usá-la em sua capacidade máxima para obter dados mais confiáveis do
erro.
Para os testes, a câmera ZED foi configurada no modo STANDARD, que é geralmente
usado para aplicações de detecção de obstáculos e reconstrução 3D. Também foi usado o
modo de qualidade máxima da câmera (QUALITY ) que fornece dados de profundidade
CAPÍTULO 6. EXPERIMENTOS E RESULTADOS 43

mais precisos do que outros.

6.1.1 Cálculo do erro


Um exemplo dos resultados para os processos de captura da imagem RGB, mapa
de profundidade, detecção de cantos, projeção 2D-3D e registro das nuvens de pontos
ideal e estimada é mostrado na Figura 6.3. Pode-se ver que para uma distância Z j = 8m,
o mapa de profundidade com a maior resolução, “2208×1242 px” (Figura 6.3d), tem
menos ruído do que as outras resoluções “1920×1080 px” (Figura 6.3a), “1280×720 px”
(Figura 6.3b) e “672×376 px” (Figura 6.3c). No geral, de todos os resultados obtidos
nestes primeiros testes, pode-se dizer que, quanto maior a resolução da câmera ZED,
melhor será a qualidade do mapa de profundidade, que possuirá uma maior quantidade
de informação. Como será visto a seguir, a maior quantidade de dados de profundidade
influencia diretamente no valor do erro RMS.
Depois de obter 80 valores do erro RMS, 20 para cada resolução, foi preciso definir
as equações matemáticas para representá-lo e encontrar uma equação que o relacione
com a distância Z j . Para isto, foram feitos ajustes de dados usando modelos lineares,
exponenciais e polinomiais. Depois de avaliar os ajustes gráficos e numéricos usando
as equações 2.34, 2.35, 2.36, foi determinado, empiricamente, que o melhor ajuste para
os dados é o exponencial (Equação 4.3) (Figura 6.4) com os parâmetros mostrados na
Tabela 6.1. Pode-se notar que para cada resolução o modelo tem um componente de um
pequeno erro aleatório (SSE próximo a zero), que o ajuste, em cada caso, explica entre
96% e 97% da variação total dos dados na média (valores R-quadrados próximos de um).
Os valores anteriores, além dos valores de RMSE próximos a zero, justificam o fato de
que o ajuste obtido é mais útil para a previsão de dados. Em resumo, a Equação 4.3 com
os respectivos coeficientes a e b da Tabela 6.1 pode ser usada para calcular o erro RMS
para qualquer profundidade Z j , em qualquer resolução da câmera ZED.
Ao comparar as 4 curvas apresentadas nas Figuras 6.5 e 6.6, pode-se ver que o sistema
não apresenta uma variação elevada na amplitude do erro RMS para distâncias de até 7
metros. A partir dos 8 metros, pode-se ver um rápido aumento na amplitude das curvas
“632x376 px” e “1280×720 px”. Isto deve-se ao fato de a câmera deixar de fornecer
dados de profundidade para estas resoluções a uma distância maior. Por outro lado, as
curvas “1920×1080 px” e “2208×1242 px” permanecem com um mínimo de variação
de amplitude (até 13 metros) entre elas. Finalmente, é calculado a média e variância dos
valores de erro RMS obtidos com os experimentos, a Tabela 6.2 mostra os valores obtidos
para cada curva da câmara ZED. Esses valores representam o comportamento de erro
global nos três eixos coordenados (X,Y, Z).

6.2 Determinação do erro RMS: Comparação entre sen-


sores
Neste segundo grupo de experimentos, captura-se com cada sensor uma imagem RGB
e o mapa de profundidade do padrão que contém três tabuleiros de xadrez (ortogonais) da
CAPÍTULO 6. EXPERIMENTOS E RESULTADOS 44

Figura 6.7. Este processo é repetido colocando o padrão a várias distâncias de cada sensor
(até 3 m), como mostra-se na Figura 6.8. As imagens são capturadas com as resoluções
máximas de cada dispositivo utilizado, o MS Kinect v1 “640×480 px”, o MS kinect v2
“512×424 px” e a câmera ZED “2208×1242 px”. Com o uso destas resoluções é possível

(a)

(b)

(c)

(d)

Figura 6.3: Resultados dos processos para determinar o erro RMS na câmera ZED, para
uma distância Z j = 8m, nas resoluções (a) “2208×1242 px”, (b) “1920×1080 px”, (c)
“1280×720 px” e (d) “672×376 px”
CAPÍTULO 6. EXPERIMENTOS E RESULTADOS 45

avaliar cada dispositivo em suas capacidades máximas. Os três sensores são testados no
mesmo local, fechado e com luz artificial, para obter bons dados de profundidade dos
sensores RGB-D, já que eles são mais sensíveis à luz natural.

0.35
Valores de erro RMS
Curva Ajustada
Limites de previsão
0.3

0.25

0.2
Erro RMS (m)

0.15

0.1

0.05

-0.05
0 5 10 15
Profundidade (m)

(a)
0.35
Valores de erro RMS
Curva Ajustada
Limites de previsão
0.3

0.25

0.2
Erro RMS (m)

0.15

0.1

0.05

-0.05
0 5 10 15
Profundidade (m)

(b)
0.45
Valores de erro RMS
Curva Ajustada
0.4 Limites de previsão

0.35

0.3

0.25
Erro RMS (m)

0.2

0.15

0.1

0.05

-0.05
0 5 10 15
Profundidade (m)

(c)
CAPÍTULO 6. EXPERIMENTOS E RESULTADOS 46

0.18
Valores de erro RMS
Curva Ajustada
0.16 Limites de previsão

0.14

0.12

0.1
Erro RMS (m)

0.08

0.06

0.04

0.02

-0.02
0 1 2 3 4 5 6 7 8 9
Profundidade (m)

(d)

Figura 6.4: Curvas ajustadas para o erro RMS nos dados de profundidade da câmera
ZED, para as resoluções (a) “2208×1242 px” (b) “1920×1080 px” (c) “1280×720 px”
e (d) “672×376 px”. As linhas pontilhadas representam os limites de previsão de dados
com até 95% de confiança. Cada um dos dados de erro RMS tem uma cor específica
de acordo com a distância Z j . Na distância menor os dados têm uma cor azulada e, no
oposto, uma cor amarelada.

4.5
(2208x1242 px)
(1920x1080 px)
4 (1280x720 px)
(672x376 px)

3.5

3
Erro RMS (m)

2.5

1.5

0.5

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Profundidade (m)

Figura 6.5: Erro RMS para cada resolução da câmera ZED, de 1 até 20m.

Em cada teste, são realizadas cento e uma medições de profundidade (devido ao nú-
mero de cantos internos) do padrão 3D . Assim, é possível garantir um cálculo confiável
do valor do erro RMS.
CAPÍTULO 6. EXPERIMENTOS E RESULTADOS 47

Coeficientes
(Limites
Resolução (px) SSE R-quadrado RMSE
de confiança
com 95%)
a=0,01805
(0,0084; 0,0276)
“2208×1242” 0,0026 0,9688 0,0172
b=0,1746
(0,1306; 0,2187)
a=0,0106
(0,0043; 0,0170)
“1920×1080” 0,0031 0,9604 0,0177
b=0,2215
(0,1762; 0,2669)
a=0,0184
(0,0104; 0,0265)
“1280×720” 0,0044 0,9649 0,0211
b=0,2106
(0,1764; 0,2449)
a=0,0115
(0,0068; 0,0161)
“672×376” 0,0004 0,9759 0,0077
b=0,2986
(0,2446; 0,3526)

Tabela 6.1: Análise numérica do ajuste para os dados de erro RMS da câmera ZED.

101
(2208x1242 px)
(1920x1080 px)
(1280x720 px)
(672x376 px)

100
Erro RMS (m)

10-1

10-2
0 2 4 6 8 10 12 14 16 18 20
Profundidade (m)

Figura 6.6: Erro RMS em escala logarítmica para cada resolução da câmera ZED, de 1
até 20m.
CAPÍTULO 6. EXPERIMENTOS E RESULTADOS 48

Curva de erro RMS µ[m] σ2 [m]


“2208×1242 px” 0,1718 0,0286
“1920×1080 px” 0,2128 0,0647
“1280×720 px” 0,3093 0,1263
“672×376 px” 0,8309 1,5403

Tabela 6.2: Média e variância das curvas do erro RMS na câmera ZED.

Figura 6.7: Dimensões em milímetros de um padrão com três planos.

Figura 6.8: Processo de captura de dados para determinação do erro RMS no MS Kinect
v1, v2 e a câmera ZED.

6.2.1 Resultados
Os resultados da captura e representação 3D dos cantos são mostrados na Figura 6.9,
mostra-se a imagem RGB, o mapa de profundidade e o registro das nuvens de pontos
CAPÍTULO 6. EXPERIMENTOS E RESULTADOS 49

(ideal e real) para uma distância Z j = 3. Pode-se ver que os dados capturados com a
câmera ZED são menos ruidosos se comparado ao MS Kinect v1 e v2, Figura 6.9a e
Figura 6.9b respectivamente. Igualmente aos resultados da Subseção 6.1.1, a maior re-
solução da câmera ZED permite uma melhor representação dos cantos no espaço 3D
(Figura 6.9c). Isto é refletido diretamente na diminuição do erro RMS.

(a)

(b)

(c)

Figura 6.9: Resultados da captura até a representação 3D dos cantos para uma distância
Z j = 3m, usando os sensores (a) MS Kinect v1, (b) v2 e (c) câmera ZED.

Com os valores do erro RMS e profundidade, os modelos matemáticos para o MS


Kinect v1 (640×480 px), v2 (512×424 px) e a câmera Stereolabs ZED (2208×1242 px)
são obtidos. A Figuras 6.10 representa o ajuste dos dados de erro a uma curva, usando o
modelo de regressão por mínimos quadrados.
O uso do ajuste de tipo exponencial é justificado pela correlação e tendência que têm
os dados. No caso do MS Kinect v1 os valores de erro RMS e profundidade têm uma
correlação de 0, 92; para o MS Kinect v2 é de 0, 95 e na câmera Stereolabs ZED é de
CAPÍTULO 6. EXPERIMENTOS E RESULTADOS 50

0, 98. A Tabela 6.3 lista os coeficientes a e b para a Equação 4.3, além dos valores SSE,
R-quadrado, RMSE que determinam a qualidade do ajuste.

Coeficientes
Sensor (Limites de SSE R-quadrado RMSE
confiança com 95%)
a=0,002002
(0,000984; 0,00302)
MS Kinect v1 1,144e-05 0,9825 0,001513
b=0,9603
(0,7695; 1,151)
a=0,001224
(-0,008982; 0,01143)
MS Kinect v2 3.562e-06 0,9903 0,001887
b=1,074
(-1,847; 3,995)
a=0,003049
(0,0022; 0,003898)
Stereolabs ZED 1,829e-06 0,9866 0,0006762
b=0,6242
(0,513; 0,7353)

Tabela 6.3: Coeficientes e análise numérica das curvas ajustadas.

Comparando as três curvas apresentadas na Figuras 6.11 e 6.12, pode-se ver que
a amplitude do erro RMS em “Kinect v2 (512×424 px)” é menor do que em “ZED
(2208×1242 px)” e “Kinect v1 (640×480 px)” até 2 m. A partir dos 3 m, o erro RMS
da ZED é menor que do os dois kinects, devido ao fato de seu mapa de profundidade ser
de melhor resolução em comparação com outros dispositivos. Enquanto a curva do erro
do Kinect v1 a partir de 1,3 m mantém um aumento de amplitude maior do que as outras
curvas. No caso do MS Kinect v1 e v2 o aumento do erro é rápido quando a distância for
maior que 3 m, pois os dois sensores deixam de fornecer dados de profundidade quando
estão a grandes distâncias.
Na Tabela 6.4 mostra-se a média e os valores de variância para as curvas de erro RMS
da Figura 6.11. Esses valores representam o comportamento do erro global nos três eixos
de coordenadas (X,Y, Z) para cada sensor 3D.

Curva do erro RMS µ[m] σ2 [m]


“Kinect v1 (640×480 px)” 0,011 0,0097
“Kinect v2 (512×424 px)” 0,0093 0,0084
“ZED (2208×1242 px)” 0,0090 0,0049

Tabela 6.4: Média e variância de cada curva de erro RMS.


CAPÍTULO 6. EXPERIMENTOS E RESULTADOS 51

0.035
Valores de erro RMS
Dados Excluídos
Curva Ajustada
0.03

0.025
Erro RMS (m)

0.02

0.015

0.01

0.005

0
1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3
Profundidade (m)

(a)
0.035
Valores de erro RMS
Dados Excluídos
Curva Ajustada
0.03

0.025
Erro RMS (m)

0.02

0.015

0.01

0.005

0
1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3
Profundidade (m)

(b)
0.024
Valores de erro RMS
Dados Excluídos
0.022 Curva Ajustada

0.02

0.018

0.016
Erro RMS (m)

0.014

0.012

0.01

0.008

0.006

0.004
0.5 1 1.5 2 2.5 3
Profundidade (m)

(c)

Figura 6.10: Curvas ajustadas para os valores de erro RMS do (a) MS Kinect v1, (b) MS
Kinect v2 e (c) Stereolabs ZED.
CAPÍTULO 6. EXPERIMENTOS E RESULTADOS 52

Kinect v2 (512x424 px)


Kinect v1 (640x480 px)
ZED (2208x1242 px)

0.03
Erro RMS (m)

0.02

0.01

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3
Profundidade (m)

Figura 6.11: Curvas do erro RMS para MS Kinect v1/v2 e Stereolabs ZED de 1 até 3m.

-1
10
Kinect v2 (512x424 px)
Kinect v1 (640x480 px)
ZED (2208x1242 px)
Erro RMS (m)

10-2

10-3
0 0.5 1 1.5 2 2.5 3
Profundidade (m)

Figura 6.12: Curvas do erro RMS em escala logarítmica para MS Kinect v1/v2 e Stereo-
labs ZED de 1 até 3m.

6.3 Análise do tempo de processamento


Para avaliar o tempo de processamento dos sensores 3D, foi realizado um experimento
que tinha por objetivo capturar com cada dispositivo (MS Kinect v1 e v2) vinte imagens
e seus respectivos mapas de profundidade, totalizando quarenta capturas. No caso da
câmera Stereolabs ZED foram realizadas 40 capturas para cada resolução, contabilizado
120.
O tempo de processamento para cada dispositivo foi obtido a partir do cálculo da
CAPÍTULO 6. EXPERIMENTOS E RESULTADOS 53

média entre os tempos individuais de cada captura. Como pode-se ver na Tabela 6.5, o
tempo mínimo é obtido quando a menor resolução de um dispositivo é usada.

Dispositivo Resolução (px) Tempo-Imagem (ms) Tempo-Profundidade (ms)


MS Kinect v1 640×480 12,45 10,79
MS Kinect v2 512×424 9,26 8,32
Stereolabs ZED 2208×1242 129,35 96,45
1920×1080 119,9 87,1
1280×720 51,75 45,05
672×376 13,75 12,35

Tabela 6.5: Tempo de processamento para os dispositivos 3D.


Capítulo 7

Conclusão

Nesta dissertação, propomos um método genérico para a estimação do erro RMS nos
dados de profundidade fornecidos por qualquer dispositivo capaz de capturar uma imagem
RGB e gerar um mapa de profundidade de uma mesma cena, ao mesmo tempo. Uma série
de cantos extraídos de um tabuleiro de xadrez são usadas para encontrar uma nuvem de
pontos estimada que é comparada com outra nuvem chamada de ideal, representando os
valores verdadeiros (ground truth). Usando inicialmente um procedimento de registro
3D, a estimação do erro RMS é realizada depois.
Após obtidos os valores de erro RMS para várias distâncias entre um padrão e o sensor
testado, é realizado um ajuste de curva a fim de adquirir a relação matemática entre o erro
e a profundidade. Esse tipo de abordagem é extremamente importante em aplicações
que dependem do erro do dispositivo para ter melhor desempenho como, por exemplo,
os métodos 3D em computação gráfica, realidade virtual e robótica probabilística (para
mapeamento e SLAM visual).
O método propõe que um padrão multiplano seja usado para estimar o erro do sensor
3D. A construção do tabuleiro constitui um desafio à parte, uma vez que para obter re-
sultados mais precisos do erro RMS é preciso que o padrão tenha planos completamente
ortogonais e sua superfície seja complemente lisa. A principal vantagem de usar um ta-
buleiro de xadrez está na sua capacidade de quantificar os erros na resolução espacial e de
profundidade. Nos experimentos, os valores mais confiáveis do erro RMS foram obtidos
usando padrões de dois e três planos, pois o erro é analisado de forma separada e em dois
e três eixos respectivamente. Os testes foram realizados com o uso de padrões do tipo
tabuleiros de xadrez por serem de fácil construção, custo reduzido e, seus cantos são bem
definidos facilitando detecção a longas distâncias.
Para verificar e validar o método desenvolvido foi construído um sistema embarcado
baseado na placa NVIDIA Jetson TK1 e usados sensores 3D (Ortiz et al. 2016). Com este
sistema, foram obtidas as curvas de erro RMS do MS Kinect v1, v2 e a câmera Stereolabs
ZED, e realizada uma comparação entre eles. Nesta plataforma foram programados os
algoritmos dos processos do método proposto. O algoritmo é genérico e pode ser progra-
mado em qualquer placa de desenvolvimento ou computador.
Nos testes, foram usadas imagens RGB retificadas (sem distorção) e dispositivos con-
figurados a sua melhor configuração para que forneçam dados de profundidade de alta
qualidade. O problema da calibração dos sensores 3D não é abordado neste trabalho, pois
existe uma ampla quantidade de informação sobre como realizar este processo de forma
CAPÍTULO 7. CONCLUSÃO 55

adequada e como obter os parâmetros intrínsecos e extrínsecos.


Outro aspecto relevante é o erro no processo do registro. Este erro não foi considerado
nas análises realizas devido ao valor obtido ser muito pequeno, pois trata-se do registro
de duas nuvens com índices e correspondências conhecidas e com um numero reduzido
de pontos.
Dos experimentos feitos, conclui-se que a estimação do erro RMS nos dados de pro-
fundidade da ZED está diretamente relacionada à resolução da câmera. Quando esta re-
solução é baixa, a distância de captura de profundidade é pequena e o erro RMS é maior.
Também poderia se pensar que a detecção de cantos contribui com um erro adicional para
o erro RMS final. No entanto, através dos testes realizados é possível verificar e afirmar
que o algoritmo de detecção é eficiente e localiza cantos a longas distâncias resultando
em um erro de detecção insignificante. O algoritmo de detecção de cantos pode fornecer
dados com um alcance de 0,5 até 22 m para imagens com alta resolução (2208×1242 px).
Diferente dos outros algoritmos de detecção de cantos, o algoritmo implementado
neste trabalho não necessita, como entrada, do número de cantos internos do xadrez. Fun-
ciona, também, em ambientes abertos ou fechados, sob várias condições de iluminação e
ainda detecta diversos tabuleiros de xadrez ao mesmo tempo em uma mesma imagem.
Observa-se que em todas as resoluções analisadas, a partir de 15 metros, a câmera
ZED começa a fornecer alguns dados de profundidade NaN para determinados setores do
padrão. A falta de dados de profundidade se reflete diretamente do fato de que a grandes
distâncias entre o padrão e a câmera, o valor do erro RMS vai rapidamente para o infinito.
De fato, em uma breve análise a partir dessas experiências, concluímos que a câmera
ZED pode ser usada com boa exatidão em uma distância de até 16 metros. Em distâncias
superiores a esta, as curvas mostram erros que podem não ser aceitáveis dependendo da
aplicação. Para a robótica terrestre, por exemplo, isso seria considerado uma distância
de trabalho muito boa, no entanto, para a robótica aérea, essa distância pode precisar ser
aumentada principalmente para robôs aéreos de asa fixa.
A resolução da operação para a qual a ZED tem menor erro RMS é 2208×1242 px.
No entanto, devido seu grande tamanho, o tempo de processamento nessas imagens é
maior. Depois de analisar o erro RMS nas quatro resoluções, pode-se concluir que para
uma aplicação onde se procura capturar dados de profundidade de até treze metros, uma
resolução de captura de 1280×720 px é melhor, pois não há variação drástica do erro
RMS e há menor tempo de processamento em relação à resolução 2208×1242 px. Da
mesma forma, no caso de aplicações em que se pretende utilizar dados de profundidade
de até sete metros, pode-se notar que a resolução mais adequada é 672×376 px devido à
pequena variação na amplitude do erro e ao baixo tempo de processamento em relação a
outras resoluções.
Da comparação entre os sensores 3D, pode-se dizer que para aplicações nas quais se
pretende utilizar dados de profundidade de até 2 m é preferível usar o MS kinect v2, pois
seu erro RMS é menor do que a ZED e o Kinect v1. Para distâncias superiores a esta
pode-se usar a ZED para obter aplicações com o menor erro RMS, porém com alto custo
de processamento. O MS Kinect v2 com um mapa de profundidade de 512×424 px tem
menor erro RMS do que o Kinect v1, até os 3 m, superior a essa distância, seu erro é
maior do que na ZED.
CAPÍTULO 7. CONCLUSÃO 56

A partir dos experimentos feitos, nota-se que o método proposto é eficaz, propiciando
estimar de forma correta o erro RMS nos dados de profundidade. Assim, este trabalho de-
verá se tornar uma contribuição importante para outros trabalhos futuros que necessitem,
como parâmetro útil, da exatidão dos dados de profundidade fornecidos pelos sensores
3D.
Referências Bibliográficas

Aguilar, J.J., F. Torres e M.A. Lope (1996), ‘Stereo vision for 3D measurement: accuracy
analysis, calibration and industrial applications’, Measurement 18(4), 193–200.

Arun, K. S., T. S. Huang e S. D. Blostein (1987), ‘Least-Squares Fitting of Two 3-


D Point Sets’, IEEE Transactions on Pattern Analysis and Machine Intelligence
PAMI-9(5), 698–700.

Ballard, Dana Harry e Christopher M. Brown (1982), Computer Vision, 1sta edição, Pren-
tice Hall Professional Technical Reference.

Beltran, Diana e Luis Basañez (2014), ‘A Comparison between Active and Passive 3D
Vision Sensors: BumblebeeXB3 and Microsoft Kinect’, pp. 725–734.

Blostein, S. D. e T. S. Huang (1987), ‘Error Analysis in Stereo Determination of 3-D


Point Positions’, IEEE Transactions on Pattern Analysis and Machine Intelligence
PAMI-9(6), 752–765.

Bradski, Gary (2000), ‘The OpenCV Library’, Dr. Dobbs J. Softw. Tools Prof. Program
1, 1–6.

Chang, C. e S. Chatterjee (1992), Quantization error analysis in stereo vision, em ‘Confe-


rence Record of the Twenty-Sixth Asilomar Conference on Signals, Systems Com-
puters’, pp. 1037–1041 vol.2.

Chang, Chienchung, S. Chatterjee e P. R. Kube (1994), A quantization error analysis


for convergent stereo, em ‘Proceedings of 1st International Conference on Image
Processing’, Vol. 2, pp. 735–739 vol.2.

Chapra, Steven C Canale, Raymond P Steven C Chapra e Raymond P Canale (2006),


Métodos numéricos para ingenieros, 5a edição, McGraw-Hill.

Choo, Benjamin, Michael Landau, Michael DeVore e Peter A. Beling (2014), ‘Statistical
Analysis-Based Error Models for the Microsoft KinectTM Depth Sensor’, Sensors
14(9), 17430.

Cloix, Séverine, Guido Bologna, Viviana Weiss, Thierry Pun e David Hasler (2016),
‘Low-power depth-based descending stair detection for smart assistive devices’, EU-
RASIP Journal on Image and Video Processing 2016(1), 33.

57
REFERÊNCIAS BIBLIOGRÁFICAS 58

Cyganek, Boguslaw e J. Paul Siebert (2009), 2D and 3D Vision Formation, John Wiley &
Sons, Ltd, pp. 15–94.

Diaz, M. Gesto, F. Tombari, P. Rodriguez-Gonzalvez e D. Gonzalez-Aguilera (2015),


‘Analysis and Evaluation Between the First and the Second Generation of RGB-D
Sensors’, IEEE Sensors Journal 15(11), 6507–6516.

Foix, S., G. Alenya e C. Torras (2011), ‘Lock-in Time-of-Flight (ToF) Cameras: A Sur-
vey’, IEEE Sensors Journal 11(9), 1917–1926.

Galna, Brook, Gillian Barry, Dan Jackson, Dadirayi Mhiripiri, Patrick Olivier e Lynn Ro-
chester (2014), ‘Accuracy of the Microsoft Kinect sensor for measuring movement
in people with Parkinson’s disease’, Gait & Posture 39(4), 1062–1068.

Geiger, A., F. Moosmann, Ö. Car e B. Schuster (2012), Automatic camera and range
sensor calibration using a single shot, em ‘2012 IEEE International Conference on
Robotics and Automation’, pp. 3936–3943.

Gokturk, S. B., H. Yalcin e C. Bamji (2004), A Time-Of-Flight Depth Sensor - System


Description, Issues and Solutions, em ‘Conference on Computer Vision and Pattern
Recognition Workshop’, pp. 35–35.

Haggag, H., M. Hossny, D. Filippidis, D. Creighton, S. Nahavandi e V. Puri (2013), Me-


asuring depth accuracy in RGBD cameras, em ‘Signal Processing and Communica-
tion Systems (ICSPCS), 7th International Conference’, pp. 1–7.

Harris, Chris e Mike Stephens (1988), ‘A combined corner and edge detector.’,
15(50), 10–5244.

Hussmann, Stephan, Thorsten Ringbeck e Bianca Hagebeuker (2008), A performance


review of 3D TOF vision systems in comparison to stereo vision systems, em ‘Stereo
vision’, InTech.

Kalarot, R. e J. Morris (2010), Comparison of FPGA and GPU implementations of real-


time stereo vision, em ‘IEEE Computer Society Conference on Computer Vision
and Pattern Recognition - Workshops’, pp. 9–15.

Kazmi, Wajahat, Sergi Foix, Guillem Alenyà e Hans Jørgen Andersen (2014), ‘Indoor
and outdoor depth imaging of leaves with time-of-flight and stereo vision sensors:
Analysis and comparison’, {ISPRS} Journal of Photogrammetry and Remote Sen-
sing 88, 128–146.

Khoshelham, K. (2011), ‘Accuracy Analysis of Kinect Depth Data’, ISPRS - International


Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences
3812, 133–138.

Kolb, Andreas, Erhardt Barth, Reinhard Koch e Rasmus Larsen (2009), ‘Time-of-Flight
Sensors in Computer Graphics’, Eurographics State of the Art Reports pp. 119–134.
REFERÊNCIAS BIBLIOGRÁFICAS 59

Kuzuhara, Yukako, Kensuke Kawamura, Rena Yoshitoshi, Toru Tamaki, Shun Sugai, Mai
Ikegami, Yuzo Kurokawa, Taketo Obitsu, Miki Okita, Toshihisa Sugino e Taisuke
Yasuda (2015), ‘A preliminarily study for predicting body weight and milk proper-
ties in lactating Holstein cows using a three-dimensional camera system’, Computers
and Electronics in Agriculture 111, 186–193.

Kytö, Mikko, Mikko Nuutinen e Pirkko Oittinen (2011), ‘Method for measuring stereo
camera depth accuracy based on stereoscopic vision’, Proc. SPIE 7864, 78640I–
78640I–9.

Li, Billy Y.L., Mingliang Xue, Ajmal Mian, Wanquan Liu e Aneesh Krishna (2016),
‘Robust RGB-D face recognition using Kinect sensor’, Neurocomputing .

Liu, Z., L. Zhou, H. Leung e H. P. H. Shum (2016), ‘Kinect Posture Reconstruction Based
on a Local Mixture of Gaussian Process Models’, IEEE Transactions on Visualiza-
tion and Computer Graphics 22(11), 2437–2450.

Luo, P.F. e S.S. Liou (1998), ‘Measurement of curved surface by stereo vision and error
analysis’, Optics and Lasers in Engineering 30(6), 471–486.

Maier, D., A. Hornung e M. Bennewitz (2012), Real-time navigation in 3D environments


based on depth camera data, em ‘12th IEEE-RAS International Conference on Hu-
manoid Robots (Humanoids 2012)’, pp. 692–697.

Maimone, A. e H. Fuchs (2012), Reducing interference between multiple structured light


depth sensors using motion, em ‘IEEE Virtual Reality Workshops (VRW)’, pp. 51–
54.

Marr, David Courtnay (2010), Vision: A Computational Investigation into the Human
Representation and Processing of Visual Information, Oxford University Press.

Ortiz, L., E. Cabrera e L. Goncalves (2016), Sistema embarcado para reconstrucao 3D em


tempo real usando imagens estereo, em ‘Workshop of Works in Progress (WIP) in
the 29th Conference on Graphics, Patterns and Images (SIBGRAPI’16)’, São José
dos Campos, SP, Brazil.

Qin, Shuxin, Xiaoyang Zhu, Yiping Yang e Yongshi Jiang (2014), ‘Real-time Hand Ges-
ture Recognition from Depth Images Using Convex Shape Decomposition Method’,
Journal of Signal Processing Systems 74(1), 47–58.

Sabattini, L., A. Levratti, F. Venturi, E. Amplo, C. Fantuzzi e C. Secchi (2012), Experi-


mental comparison of 3D vision sensors for mobile robot localization for industrial
application: Stereo-camera and RGB-D sensor, em ‘Control Automation Robotics
Vision (ICARCV), 2012 12th International Conference on’, pp. 823–828.

Samir, M., E. Golkar e A. A. A. Rahni (2015), Comparison between the Kinect V1 and
Kinect V2 for respiratory motion tracking, em ‘IEEE International Conference on
Signal and Image Processing Applications (ICSIPA)’, pp. 150–155.
REFERÊNCIAS BIBLIOGRÁFICAS 60

Sansoni, G., M. Carocci e R. Rodella (2000), ‘Calibration and performance evaluation of


a 3-D imaging sensor based on the projection of structured light’, IEEE Transactions
on Instrumentation and Measurement 49(3), 628–636.

Shi, Jianbo e C. Tomasi (1994), Good features to track, em ‘Proceedings of IEEE Confe-
rence on Computer Vision and Pattern Recognition’, pp. 593–600.

Smith, Stephen M. e J. Michael Brady (1997), ‘SUSAN-A New Approach to Low Level
Image Processing’, International Journal of Computer Vision 23(1), 45–78.

Song, Xibin, Fan Zhong, Yanke Wang e Xueying Qin (2014), ‘Estimation of Kinect depth
confidence through self-training’, The Visual Computer 30(6), 855–865.

Taylor, J.R. (1997), Introduction To Error Analysis: The Study of Uncertainties in Physi-
cal Measurements, A series of books in physics, University Science Books.

Trajković, Miroslav e Mark Hedley (1998), ‘Fast corner detection’, Image and Vision
Computing 16(2), 75–87.

Trucco, E. e A. Verri (1998), Introductory Techniques for 3-D Computer Vision, Prentice
Hall.

Wan, Dingrui e Jie Zhou (2008), ‘Stereo vision using two {PTZ} cameras’, Computer
Vision and Image Understanding 112(2), 184–194.

Wei, Q., J. Shan, H. Cheng, Z. Yu, B. Lijuan e Z. Haimei (2016), A method of 3D human-
motion capture and reconstruction based on depth information, em ‘2016 IEEE In-
ternational Conference on Mechatronics and Automation’, pp. 187–192.

Xiong, Yalin e L. Matthies (1997), Error analysis of a real-time stereo system, em ‘Pro-
ceedings of IEEE Computer Society Conference on Computer Vision and Pattern
Recognition’, pp. 1087–1093.

Yang, L., L. Zhang, H. Dong, A. Alelaiwi e A. E. Saddik (2015), ‘Evaluating and Im-
proving the Depth Accuracy of Kinect for Windows v2’, IEEE Sensors Journal
15(8), 4275–4285.

Yang, Zaiming e Y.F. Wang (1996), ‘Error analysis of 3D shape construction from struc-
tured lighting’, Pattern Recognition 29(2), 189–206.

Zhang, Z. (2012), ‘Microsoft Kinect Sensor and Its Effect’, IEEE MultiMedia 19(2), 4–
10.

Zhao, Wenyi e N. Nandhakumar (1996), ‘Effects of camera alignment errors on stereos-


copic depth estimates’, Pattern Recognition 29(12), 2115 – 2126.
Apêndice A

Informações adicionais

Algoritmo 6: Algoritmo para a estimativa de erro RMS em função dos dados de


profundidade.
Entrada: sensor: Dispositivo testado;
l: Largura Cada Quadrado;
Z j : Distância Padrão-Sensor
Saída: f (Z j ): erroRMS em função de Z j
/* Captura de dados */
1 se sensor = true então
2 src ← retrieveImage(imageRGB);
3 depthMap ← retrieveMeasure(Depth);
4 intrinsics ← getParameters(sensor);
5 [c1, xySize, c2, yzSize, c3, xzSize] = f ce(src);
6 fim
7 (u � , v � ) ← [c1, c2, c3];
p ip i
/* Nuvem Ideal */
8 para i = 0 : 1 : i < (u p� , v p� ).size() faça
i i
9 (Xc pi ,Y c pi , Zc pi ) ← (x ∗ l, y ∗ l, z ∗ l);
10 fim
/* Nuvem Real */
11 para i = 0 : 1 : i < (u p� , v p� ).size() faça
i i
12 Zc p� ← depthMap((u p� , v p� ).y, (u p� , v p� ).x);
i � i i i i �


u � −Cx
pi
v p
� −Cy
13 pi ← Zc p� , i Zc p� , Zc p� ;
fx i fy i i

14 (Xc p� ,Y c p� , Zc p� ) ← pi ;
i i i
15 fim
APÊNDICE A. INFORMAÇÕES ADICIONAIS 62

/* Registro Nuvens Ideal-Real */


1 [R|t] ← registration((Xc p� ,Y c p� , Zc p� ), (Xc pi ,Y c pi , Zc pi ));
i i i
2 para i = 0 : 1 : i < (Xc p� ,Y c p� , Zc p� ).size() faça
i i i
3 ∑2 ←� (Xc p� ,Y c p� , Zc p� ) − (R ∗ (Xc pi ,Y c pi , Zc pi ) + t) �2 ;
i i i
4 fim
/* Calculo do Error RMS */

∑2
5 erroRMS = ;
(Xc p� ,Y c p� , Zc p� ).size()
i i i
/* Error RMS em função da profundidade */
6 para j = 0 : 1 : Z j faça
7 f (Z j ) ← aebZ j ;
8 fim
9 retorna f (Z j );

You might also like