Seguimento online de objectos
em sequências de vídeo
de UAV
DISSERTAÇÃO DE MESTRADO
EM ENGENHARIA INFORMÁTICA
TELMO RUI DIAS BENTO
Orientador: Professor Doutor Pedro Alexandre Mogadouro do Couto Co-orientador: Professor Doutor Pedro Melo-Pinto
de UAV
Por
Telmo Rui Dias Bento
Orienta¸c˜
ao:
Prof. Doutor Pedro Alexandre Mogadouro do Couto
Prof. Doutor Pedro Melo-Pinto
Disserta¸c˜ao submetida `a
UNIVERSIDADE DE TR ´AS-OS-MONTES E ALTO DOURO para obten¸c˜ao do grau de
MESTRE
em Engenharia Inform´atica, de acordo com o disposto no DR – I s´erie–A, Decreto-Lei n.o 74/2006 de 24 de Mar¸co e no
Regulamento de Estudos P´os-Graduados da UTAD DR, 2.a s´erie – Delibera¸c˜ao n.o 2391/2007
Prof. Doutor Pedro Alexandre Mogadouro do Couto
Professor Auxiliar do Departamento de Engenharias Escola de Ciˆencias e Tecnologia Universidade de Tr´as-os-Montes e Alto Douro
Prof. Doutor Pedro Melo-Pinto
Professor Catedr´atico do Departamento de Engenharias Escola de Ciˆencias e Tecnologia Universidade de Tr´as-os-Montes e Alto Douro
de UAV
Telmo Rui Dias Bento
Submetido `a Universidade de Tr´as-os-Montes e Alto Douro para o preenchimento dos requisitos parciais para obten¸c˜ao do grau de
Mestre em Engenharia Inform´atica
Resumo — A an´alise de v´ıdeo ´e ,actualmente, usada em diversas aplica¸c˜oes como, o seguimento de objectos e pessoas, a detec¸c˜ao de actividade suspeita, a contagem de ve´ıculos, a inspec¸c˜ao industrial, o controlo de qualidade, o reconhecimento au-tom´atico de matr´ıculas e faces, etc. Neste contexto, os UAV (Unmanned Aerial Vehicles) adicionam grandes potencialidades e uma vasta ´area de aplica¸c˜ao `a vis˜ao por computador.
Este trabalho apresenta uma proposta de um algoritmo de detec¸c˜ao de pontos de interesse,o qual permite o reconhecimento de elementos comuns entre duas imagens. Assim, ser´a poss´ıvel a detec¸c˜ao de objectos, e consequentemente a possibilidade de seguimento dos mesmos. As tarefas s˜ao efectuadas por um UAV, de forma a possibilitar a navega¸c˜ao e o seguimento de objectos.
Esta disserta¸c˜ao consiste no estudo do algoritmo SURF e a sua aplicabilidade nos UAV, apresentando poss´ıveis melhorias a efectuar na utiliza¸c˜ao do algoritmo, com o pressuposto de optimizar todo o processo computacional.
Palavras Chave: Detec¸c˜ao de Objectos, Vis˜ao por Computador, SURF, UAV.
Telmo Rui Dias Bento
Submitted to the University of Tr´as-os-Montes and Alto Douro in partial fulfillment of the requirements for the degree of
Master of Science in Computer Engineering
Abstract — The video analysis is currently used for several applications, such as tracking objects and people, detection of suspicious activity, count of vehicles, industrial inspection, quality control, automatic recognition of registration plates and faces... In this context, UAVs (Unmanned Aerial Vehicles) add great potential and a wide application area of computer vision.
This work presents a proposal of an algorithm of detection of interest points, which allows the recognition of common elements between two images. Thus, it will be possible to detect objects and, therefore, the possibility of tracking them. The tasks are performed by a UAV in order to facilitate navigation and tracking of objects by the same.
The work described in this dissertation is the study of the SURF algorithm and its applicability in UAVs.
This dissertation is the study of the SURF algorithm and its applicability in UAVs, also presenting possible improvements to be made using the algorithm, with the assumption of optimizing the entire computational process.
Keywords: Object Detection, Computer Vision, SURF, UAV.
Ao Professor Doutor Pedro Couto e ao Professor Doutor Pedro Melo-Pinto, por todo o apoio no desenvolvimento deste projecto.
Aos meus pais, irm˜as, cunhados, sobrinhos e `a minha namorada por nunca deixarem de acreditar em mim e tornarem poss´ıvel o alcance de mais uma meta na minha realiza¸c˜ao pessoal.
Resumo vii
Abstract ix
Agradecimentos xi
´Indice de tabelas xv
´Indice de figuras xvii
1 Introdu¸c˜ao 1
2 Unmanned Aerial Vehicles (UAV) 5
2.1 Unidade de Controlo de Voo . . . 6
2.2 Interface de Comunica¸c˜ao . . . 6
2.3 Unidade de Aquisi¸c˜ao de Imagens . . . 7
3 Processamento Digital de Imagem 9 3.1 Imagem Digital . . . 9
3.2 Rela¸c˜oes b´asicas entre pixels . . . 10
3.2.1 Vizinhan¸ca . . . 10
3.2.2 Adjacˆencia, Conectividade, Regi˜oes, Arestas . . . 11
3.2.3 Distˆancia Euclidiana . . . 12
3.3 Filtragem Espacial . . . 12
3.3.1 Suaviza¸c˜ao . . . 13 xiii
4.2 Metodologia do SURF . . . 24
4.2.1 Imagens Integrais . . . 25
4.2.2 Detector Fast-Hessian . . . 26
4.2.3 Descritor de Pontos de Interesse . . . 34
5 Trabalho Desenvolvido e Resultados 41 5.1 Introdu¸c˜ao . . . 41
5.2 Desenvolvimento . . . 43
5.2.1 Interface . . . 43
5.2.2 Compara¸c˜ao de Pontos de Interesse . . . 45
5.2.3 ROI (Region of Interest Points) . . . 48
5.2.4 Fun¸c˜ao sub e mult . . . 51
5.3 Resultados Obtidos . . . 53
5.3.1 Varia¸c˜ao de Tamanho de Imagem . . . 53
5.3.2 Rota¸c˜ao . . . 54
5.3.3 Varia¸c˜ao de Brilho . . . 57
5.3.4 Varia¸c˜ao de Escala . . . 58
6 Conclus˜oes e Trabalho Futuro 61 6.1 Conclus˜oes . . . 61
6.2 Trabalho Futuro . . . 62
Referˆencias bibliogr´aficas 65
A Anexos 69
4.1 Compara¸c˜ao SIFT, PCA-SIFT e SURF (Juan and Gwon, 2009). . . . 24
5.1 Compara¸c˜ao entre SURF e o ROI-SURF. . . 51
5.2 Compara¸c˜ao entre diferentes tamanhos de imagem. . . 53
5.3 Resultados da varia¸c˜ao da rota¸c˜ao com o SURF. . . 55
5.4 Resultados da varia¸c˜ao da rota¸c˜ao com o U-SURF, rota¸c˜oes em
in-tervalos de 5o. . . 56
5.5 Resultados da varia¸c˜ao da rota¸c˜ao com o U-SURF, rota¸c˜oes em
in-tervalos de 2o. . . 56
5.6 Resultados da varia¸c˜ao de brilho . . . 57 5.7 Resultados da varia¸c˜ao de escala . . . 58
2.1 COLIBRI I (em cima) e COLIBRI III (em baixo) (Iv´an Mondrag´on
and Mejias, 2010). . . 7
3.1 Funcionamento da filtragem espacial (Gonzalez and Woods, 2002). . . 13
3.2 Filtro Mediana (Filipe, 2009). . . 15
3.3 Filtro Gaussiano 2D. . . 16
3.4 Operadores de Roberts (Filipe, 2009). . . 18
3.5 Operadores de Sobel (Filipe, 2009) . . . 18
3.6 Operadores de Prewit (Filipe, 2009) . . . 18
3.7 M´ascara de Laplace (Filipe, 2009). . . 20
4.1 C´alculo de Subimagem com Imagens Integrais (Evans, 2009). . . 26
4.2 Filtros Laplacianos (em cima) e Box Filter (em baixo), da esquerda para a direita os filtros Dxx, Dyy e Dxy (Evans, 2009). . . 29
4.3 Constru¸c˜ao tradicional (`a esquerda) e constru¸c˜ao utilizada no SURF (`a direita) (Evans, 2009). . . 31
4.4 Aumento de tamanho das m´ascaras (Evans, 2009). . . 32
4.5 Supress˜ao n˜ao-m´axima (Evans, 2009). . . 33
4.6 Haar Wavelet (Evans, 2009). . . 35 xvii
5.1 Interface. . . 44 5.2 MessageBox. . . 45
1
Introdu¸c˜ao
O processamento visual de um ser humano permite-lhe desempenhar simultanea-mente diferentes tarefas, de modo simplificado, e muitas vezes inconscientesimultanea-mente. O ser humano utiliza a sua capacidade de ver e de processar o que visualiza, durante toda a sua existˆencia, de modo a prevenir danos, tirar ila¸c˜oes, deslocar-se, reconhe-cer objectos e pessoas. Todo o ser humano com capacidade motora e visual utiliza a sua vis˜ao para deslocar-se sem colidir com os diferentes obst´aculos que se atraves-sam, efectuar a simples leitura de um texto, interpretar imagens ou at´e mesmo para interpretar o movimento de algum objecto e conseguir prever qual a posi¸c˜ao que este ocupar´a nos instantes seguintes. Todas estas tarefas, s˜ao efectuadas consciente e inconscientemente, com base nas imagens captadas pelos olhos do ser humano, e interpretadas pelo c´erebro, de modo a serem retiradas milhares de informa¸c˜oes num espa¸co de tempo muito reduzido.
Com o avan¸co da tecnologia, tanto ao n´ıvel de dispositivos de capta¸c˜ao de imagem, bem como ao n´ıvel de processamento, tem-se vindo a trabalhar para que seja poss´ıvel efectuar uma vis˜ao computacional semelhante `a do ser humano. Para tal ´e necess´ario saber o modo como o ser humano processa as imagens e como pode traduzir-se esse processamento para um modo computacional.
Com base no conhecimento do modo como o ser humano processa imagens e apli-cando esses m´etodos computacionalmente, ser´a poss´ıvel a realiza¸c˜ao de tarefas com-putacionais aut´onomas com base na vis˜ao por computador, como por exemplo, efectuar video vigilˆancia com reconhecimento autom´atico de riscos, contagem de objectos, identifica¸c˜ao autom´atica de produtos, navega¸c˜ao aut´onoma, entre outros, tarefas que desempenhadas por um ser humano s˜ao extremamente simples.
Na vis˜ao por computador, s˜ao utilizados diferentes m´etodos para a aquisi¸c˜ao e pro-cessamento de imagens. Sendo vari´avel o objectivo da aplica¸c˜ao da vis˜ao por com-putador, ser˜ao tamb´em vari´aveis os m´etodos utilizados. Assim, quando se pretende contar automaticamente objectos de uma imagem, deve utilizar-se um m´etodo de contagem de objectos. Caso se pretenda seguir ou contar objectos, numa sequˆencia de imagens, ´e necess´ario identific´a-los, para que estes sejam identificados, posterior-mente, e reconhecida a sua desloca¸c˜ao, evitando, deste modo, que o mesmo objecto seja contado v´arias vezes. De forma a complementar este processo, pode aplicar-se um m´etodo que preveja a pr´oxima posi¸c˜ao do objecto, com base no deslocamento anterior. Para al´em da informa¸c˜ao que se pretende extrair de uma imagem, ´e im-portante o tempo despendido na extrac¸c˜ao da informa¸c˜ao. Computacionalmente a quantidade de informa¸c˜ao est´a directamente relacionada com o tempo, implicando aten¸c˜ao `a aplicabilidade da vis˜ao por computador, pois para reac¸c˜oes em tempo real, o processamento tem de ser efectuado com uma rapidez superior face `a exigida numa interpreta¸c˜ao de uma simples imagem.
Quando se menciona reac¸c˜oes em tempo real, est˜ao em causa sequˆencias de imagens, atrav´es das quais ´e poss´ıvel efectuar a navega¸c˜ao e a previs˜ao do deslocamento de determinado objecto. Uma ´area onde se utiliza vis˜ao por computador e utilizada a sequˆencia de imagem para navega¸c˜ao, ´e nos UAV (Unmanned Aerial Vehicles). Os UAV s˜ao aeronaves n˜ao tripuladas que, a partir das imagens captadas, por dispo-sitivos de capta¸c˜ao de imagem instalados nos mesmos, possibilitar˜ao a navega¸c˜ao aut´onoma com base em objectivos, como por exemplo, seguir um determinado ob-jecto e at´e mesmo, deslocar-se ente dois pontos, sem colidir com os obst´aculos. De modo a possibilitar as tarefas a serem realizadas pelo UAV ´e de extrema importˆancia
o reconhecimento de objectos. Para este reconhecimento ser efectuado nas imagens pressup˜oe-se a existˆencia de um m´etodo que indique os pontos de interesse de uma imagem, os quais s˜ao ´areas de grande varia¸c˜ao de cor ou arestas e ´areas de grande concentra¸c˜ao da mesma cor. Os m´etodos que identificam os pontos de interesse de uma imagem s˜ao conhecidos por detectores. Quando se considera um ponto de interesse, este n˜ao ´e obtido por nada mais do que uma coordenada X e Y que cor-responde ´a posi¸c˜ao do ponto na imagem. ´E ent˜ao pertinente nesta fase saber o que rodeia o ponto, de modo a que este possa ser identificado numa imagem a seguir, permitido o reconhecimento de um objecto. Deste modo ´e necess´ario interpretar a vizinhan¸ca do ponto de interesse, a qual ir´a descrever o ponto de interesse, facto que permitir´a que este possa ser encontrado numa outra imagem. Os m´etodos que identificam os pontos de interesse s˜ao conhecidos como descritores. Como detectores ´e poss´ıvel reconhecer o Fast Hessian, o Diferen¸ca Gaussiana, o Harris-Laplace e o Hessian-Laplace; no que toca a descritores existem o SIFT, o PCA-SIFT e GLOH;
por ´ultimo uma men¸c˜ao ao SURF, que se apresenta como um detector e descritor.
Juan and Gwon (2009) compararam v´arios algoritmos, testando algumas altera¸c˜oes de imagem. Tomando em considera¸c˜ao os resultados obtidos, aliados `a necessidade de um algoritmo r´apido e robusto, que possibilite a detec¸c˜ao e descri¸c˜ao de pontos de interesse em tempo real, o algoritmo SURF surge como a escolha mais indicada. O trabalho descrito nesta disserta¸c˜ao consiste no estudo do algoritmo SURF e a sua aplicabilidade nos UAV. Pretende estudar-se se este algoritmo ´e ao mesmo tempo robusto e r´apido, de forma a ser poss´ıvel efectuar o seguimento de objectos com um UAV. Para o efeito ser˜ao realizados testes de robustez e rapidez, bem como o estudo e implementa¸c˜ao de solu¸c˜oes para melhorar o desempenho do mesmo.
De modo a reconhecer a aplicabilidade e qual o melhor m´etodo de processamento de imagem num UAV, ´e necess´ario conhecimento do funcionamento e da utiliza¸c˜ao do mesmo, informa¸c˜ao esta descrita no Cap´ıtulo 2.
Admite-se maior relevo, no ˆambito desta disserta¸c˜ao, para as t´ecnicas de processa-mento digital de imagem. A aplica¸c˜ao destas t´ecnicas implica conhecer o contexto
em que estas s˜ao aplicadas, em que consiste uma imagem e o seu processamento, bem como conhecer os m´etodos e seu funcionamento, pontos estes abordados ao longo do Cap´ıtulo 3.
O algoritmo SURF, ´e descrito no Cap´ıtulo 4, com o intuito de se conhecer todos os processos para a detec¸c˜ao e descri¸c˜ao de pontos de interesse.
Todo o trabalho desenvolvido bem como os resultados obtidos pelos diferentes teste efectuados, encontram-se descritos no Cap´ıtulo 5. O cap´ıtulo 6 trata das conclus˜oes retiradas com o desenvolvimento deste trabalho, referenciando ainda algumas su-gest˜oes para trabalho futuro.
O trabalho referido foi realizado na linguagem de programa¸c˜ao Visual C� e na fra-mework .NET 3.5, compilados e executados num MacBook Pro, de processador 2.66 GHz Intel Core 2 Duo, mem´oria 4GB 1067 MHz DDR3 e placa gr´afica NVIDIA GeForce 9600M GT.
2
(UAV)
Designado por Unmanned Aerial Vehicle ou UAV, este compreende todas as aerona-ves que n˜ao necessitam de pilotos a bordo para serem manobradas. Estas aeronaaerona-ves s˜ao controladas `a distˆancia por meios electr´onicos e computacionais, os quais podem ser controlados por um utilizador, ou com recurso a meios de Controladores L´ogicos Program´aveis.
Inicialmente os UAV eram destinados a fins militares, sendo ainda hoje este o seu maior contexto de utiliza¸c˜ao. Neste ˆambito s˜ao utilizados em miss˜oes que represen-tam risco elevado para os ser humano, em miss˜oes de apoio a´ereo `as tropas, controle de m´ısseis, reconhecimento, entre outras.
Ao longo dos anos foi estudado o recurso dos UAV para fins n˜ao militares, como por exemplo, a utiliza¸c˜ao destes ve´ıculos para patrulha de vastas ´areas, seguimento de objectos, sistemas de video vigilˆancia, acesso a ´areas de dif´ıcil acesso humano, entre outras. Estas aeronaves est˜ao equipadas com computadores, de forma a ser efectuado o controlo de voo e o processamento de imagem.
Ao longo desta disserta¸c˜ao ter-se-´a em considera¸c˜ao os UAV, com base na identi-fica¸c˜ao e seguimento de objectos.
2.1
Unidade de Controlo de Voo
O controlo de voo de uma aeronave ´e dependente do estado do tempo, sendo o principal obst´aculo para o controlo de voo o vento, uma vez que este pode apresentar -se inst´avel, suscept´ıvel de provocar turbulˆencia e desloca¸c˜oes indesejadas ao UAV, as quais devem ser corrigidas pela unidade de controlo de voo.
A utiliza¸c˜ao de sensores que permitam medir as for¸cas grav´ıticas, a velocidade e a altura do UAV, permitem o voo do mesmo, conseguindo a partir dos valores retornados pelos sensores, controlar o UAV de modo a que este se estabilize no ar. Para ser efectuada a navega¸c˜ao do UAV s˜ao utilizados sensores GPS e cˆamaras, sendo que os sensores de GPS fornecem as coordenadas do UAV, n˜ao permitindo no entanto a localiza¸c˜ao de objectos m´oveis pr´oximos do mesmo, de modo a ser poss´ıvel evit´a-los ou segui-los. Assim, a partir dos sensores GPS ´e poss´ıvel localizar o UAV, bem como indicar uma posi¸c˜ao de meta, mas n˜ao ´e poss´ıvel conduzir o UAV, devido `a falta de informa¸c˜ao dos objectos que o rodeiam. A condu¸c˜ao do UAV ´e efectuada a partir da informa¸c˜ao obtida pelas cˆamaras, a partir de software de vis˜ao por computador, podendo, deste modo, detectar objectos, a fim de os evitar ou seguir.
Os UAV tamb´em tˆem uma unidade de r´adio controlo, a qual ´e manipulada por um utilizador que fica respons´avel pela manipula¸c˜ao do UAV.
2.2
Interface de Comunica¸c˜
ao
Durante a utiliza¸c˜ao do UAV, todas as informa¸c˜oes do mesmo devem ser enviadas para a base, onde o utilizador deve conseguir manipular as a¸c˜oes do mesmo, como identificar o objecto desejado a seguir, indicar o destino do UAV e mesmo retirar informa¸c˜oes do que est´a a ser registado.
UAV, ´e necess´ario uma interface de comunica¸c˜ao. Dependendo da utiliza¸c˜ao do UAV tamb´em dever´a alterar a tecnologia utilizada na interface de comunica¸c˜ao. Deste modo em ´areas limitadas este deve incorporar um modem wireless que permitir´a a comunica¸c˜ao com a base como utilizado pelo UAV COLIBRI (Iv´an Mondrag´on and Mejias, 2010), que efectua a comunica¸c˜ao pela troca de mensagens TCP/UDP, juntamente com uma arquitectura cliente/servidor. Para uma utiliza¸c˜ao em ´areas maiores, o UAV dever´a conter um modem que permita uma maior cobertura de rede, como por exemplo um modem UMTS.
Figura 2.1 – COLIBRI I (em cima) e COLIBRI III (em baixo) (Iv´an Mondrag´on and Mejias, 2010).
2.3
Unidade de Aquisi¸c˜
ao de Imagens
O modo mais eficaz para navegar numa determinada ´area consiste na observa¸c˜ao do que rodeia o UAV. Para tal s˜ao utilizadas cˆamaras no UAV, de modo a que seja poss´ıvel captar imagens do ambiente circundante, imagens estas que contˆem informa¸c˜oes essenciais, que permitem a navega¸c˜ao aut´onoma do UAV.
As cˆamaras utilizadas nos UAV podem ser monosc´opicas, estereosc´opicas ou uma combina¸c˜ao entre ambos os tipos de cˆamaras. As cˆamaras estereosc´opicas tˆem como
vantagem a melhor detec¸c˜ao de obst´aculos, devido a uma melhor percep¸c˜ao da distˆancia dos objectos, no entanto, como estas utilizam duas cˆameras em simultˆaneo, o processamento ´e mais lento, visto que se processam duas imagens em simultˆaneo. Como tal a utiliza¸c˜ao de cˆamaras monosc´opicas ´e mais frequente, pois para na-vega¸c˜ao ´e necess´ario um processamento r´apido para se poder controlar o UAV. O processamento de imagem, trata as imagens captadas pela cˆamara, de modo a extrair das imagens a informa¸c˜ao necess´aria para controlar o UAV. A partir do pro-cessamento de imagem devem ser detectados os objectos e a proximidade destes, de forma a que quando reconhecidos os objectos, seja poss´ıvel seguir ou evitar os ob-jectos, consoante a utiliza¸c˜ao pretendida, possibilitando a navega¸c˜ao do UAV. Para efectuar a navega¸c˜ao a partir das imagens captadas ´e necess´ario aplicar diferentes algoritmos `a imagem, de forma a extrair informa¸c˜oes.
3
Imagem
3.1
Imagem Digital
A cor de cada objecto ´e o resultado da reflex˜ao da luz de determinada cor do espectro vis´ıvel, que est´a compreendido entre os 400 e os 700 nm. Esta luz reflectida ´e a captada pelos olhos, de forma a dar cor aos objectos, diferenciando-os. A obten¸c˜ao de imagens digitais ´e feita normalmente atrav´es de cˆamaras de v´ıdeo que captam, por interm´edio de sensores, amostras da intensidade da luz que ´e reflectida pelos objectos da cena, ou seja, uma imagem ´e uma fun¸c˜ao bidimensional da intensidade luminosa [Niblack, 1986]. Quando obtemos uma imagem digital, estamos a tratar uma fun¸c˜ao F (x, y) onde F ´e o valor de intensidade da imagem nas coordenadas (x, y). Estando a tratar de uma fun¸c˜ao bidimensional, ent˜ao o resultado obtido ´e uma matriz de valores que representam a intensidade luminosa, sendo que estes valores correspondem aos pixels da imagem digital. Uma imagem digital pode ser definida como imagem em escala de cinzentos, ou seja, cada pixel est´a definido com valores de 0 a 255, onde 0 corresponde `a ausˆencia de luz, logo `a cor preta, e 255 corresponde `a satura¸c˜ao de luz, ou seja `a cor branca, entre estes valores obt´em-se diferentes tons de cinzentos. A imagem digital pode tamb´em obt´em-ser policrom´atica. Estas representam as imagens a cores, nas quais a cada pixel v˜ao corresponder 3
valores de intensidade de luz, implicando que se considerem 3 matrizes, onde cada uma corresponde a diferentes intensidades de luz reflectida de uma cor no esquema de cor RGB (Red, Green, Blue). Ent˜ao cada matriz cont´em o valor da intensidade de luz vermelha, verde, e azul, para cada pixel da imagem. Os valores correspondentes `as matrizes s˜ao os mesmos dos da imagem em escala de cinzentos, mas neste caso 0 corresponde `a ausˆencia de luz vermelha, verde ou azul, e 1 corresponde `a satura¸c˜ao de luz vermelha, verde ou azul. Relativamente `a resolu¸c˜ao da imagem, ou seja, ao
n´umero de pixels de uma imagem, esta encontra-se dependente do dispositivo de
capta¸c˜ao que se utiliza, e deste modo, quanto maior for a resolu¸c˜ao, mais detalhe de uma imagem se obter´a, no entanto o seu processamento ser´a mais lento, visto que o n´umero de pixels a processar ´e maior. Como tal, quanto menor for a resolu¸c˜ao, mais r´apido ´e o processamento, mas o n´ıvel de detalhe ´e inferior, o que pode causar perda de informa¸c˜ao ´util. Encontrar um equil´ıbrio entre a resolu¸c˜ao e a velocidade de processamento ´e essencial e vari´avel consoante a aplicabilidade desejada. Conhecida a constitui¸c˜ao de uma imagem digital, est˜ao reunidas as condi¸c˜oes de forma a avan¸car para o processamento da imagem digital verificando algumas transforma¸c˜oes que podem aplica-se `as imagens, de modo a ser poss´ıvel a leitura computacional.
3.2
Rela¸c˜
oes b´
asicas entre pixels
A imagem digital, tal como mencionado no ponto anterior, ´e definida por uma fun¸c˜ao bidimencional F (x, y), ou seja, uma matriz onde a cada valor corresponde a cor de cada pixel, e cada um destes ´e rodeado por outros pixels, e ´e analisando estes que se pode retirar informa¸c˜oes de uma imagem, podendo a partir desta an´alise, detectar arestas, cantos e ´areas de pixels semelhantes.
3.2.1
Vizinhan¸ca
Designam-se por vizinhan¸ca os pixels que rodeiam um determinado pixel. Tendo em considera¸c˜ao um pixel, definido no ponto p nas coordenadas (x, y) de uma imagem
digital, a este correspondem quatro vizinhos horizontais e verticais, cujas coordena-das s˜ao dacoordena-das por (Gonzalez and Woods, 2002):
(x− 1, y), (x + 1, y), (x, y − 1), (x, y + 1)
este conjunto de pixels ´e designado como quatro vizinhos de p, sendo que cada pixel vizinho est´a a uma unidade de distˆancia de (x, y). Caso o ponto p se encontre nas margens da imagem, ent˜ao haver˜ao vizinhos n˜ao definidos, por pertencerem a posi¸c˜oes fora da matriz.
Al´em dos 4 pixels horizontais e verticais, ao ponto p correspondem tamb´em 4 pixels vizinhos na diagonal, cujas coordenadas s˜ao dadas por (Gonzalez and Woods, 2002):
(x− 1, y − 1), (x − 1, y + 1), (x − 1, y − 1), (x − 1, y + 1)
este conjunto de pixels ´e designado como vizinhos diagonais de p, e em conjunto com os 4 vizinhos horizontais e verticais, obtˆem-se os 8 vizinhos de p. Tal como foi referido anteriormente, caso o ponto p se encontre nas margens da imagem, haver˜ao vizinhos n˜ao definidos, por pertencerem a posi¸c˜oes fora da matriz.
3.2.2
Adjacˆ
encia, Conectividade, Regi˜
oes, Arestas
A conex˜ao entre dois pixels ´e uma informa¸c˜ao fundamental para o processamento digital de imagem. Dois pixels podem ser vizinhos, mas podem n˜ao ser conexos. Para estes serem conexos tˆem de possuir a mesma intensidade, ou a intensidade entre eles n˜ao poder´a distanciar-se mais do que uma margem previamente definida, a qual pode corresponder a um conjunto de valores que lhes confere conectividade. Definidos os valores de adjacˆencia, ´e poss´ıvel distinguir trˆes tipos de adjacˆencia: uma adjacˆencia definida pelos 4 vizinhos verticais e horizontais, uma adjacˆencia definida pelos 8 pixels vizinhos, e uma adjacˆencia combinada entre os 4 vizinhos verticais e horizontais e os 4 vizinhos diagonais.
Designam-se dois pixels de conexos caso entre estes exista uma liga¸c˜ao, na qual os valores dos pixels pertencem aos valores definidos pela adjacˆencia. Caso exista uma
´area de pixels onde estes estejam todos conexos, designa-se, o conjunto de pixels, por regi˜ao. Caso exista uma ´area de pixels onde exista um conjunto de pixels conexos, ou seja uma regi˜ao, e nesta ´area existam pixels que n˜ao pertencem `a regi˜ao e sejam vizinhos da regi˜ao, ent˜ao estes s˜ao designados por contorno ou aresta.
3.2.3
Distˆ
ancia Euclidiana
O conhecimento da distˆancia entre dois pontos pode ser utilizado para se calcular ´areas de regi˜oes, sendo poss´ıvel identificar a mesma posteriormente, ou efectuando mesmo o reconhecimento de um determinado objecto. Para se conhecer a distˆancia D entre os pontos p de coordenadas (x1, y1) e q de coordenadas (x2, y2), numa matriz, calcula-se a distˆancia euclidiana, que se baseia no teorema de pit´agoras, e ´e definida pela seguinte express˜ao (Gonzalez and Woods, 2002):
D(p, q) =�(x1− x2)2 + (y1− y2)2
A distˆancia euclidiana retorna valor no espa¸co, onde a unidade corresponde ao p´ıxel.
3.3
Filtragem Espacial
Algumas opera¸c˜oes utilizam os pixels da vizinhan¸ca para diferentes objectivos, esta vizinhan¸ca pode ser designada de mascara ou kernel. A filtragem de uma imagem consiste em percorrer a m´ascara pelos pixels da imagem, redefinindo o valor do pixel seleccionado, pela opera¸c˜ao desejada, opera¸c˜ao esta que consiste nos valores dos pixels vizinhos e no valor pr´oprio do pixel, por exemplo, para uma m´ascara 3×3, o ponto central ser´a o pixel seleccionado, o qual ser´a redefinido consoante os seus 8 vizinhos. A filtragem ´e realizada percorrendo a m´ascara em todos os pixels, como pode ser demonstrado pela figura 3.1
Figura 3.1 – Funcionamento da filtragem espacial (Gonzalez and Woods, 2002).
O tamanho da m´ascara pode ser definido de M × N, sendo M e N dois valores
inteiros, no entanto a utiliza¸c˜ao de uma m´ascara de N × N ´e mais comum. Como
a m´ascara define opera¸c˜oes que envolvem os pixels vizinhos, ent˜ao n˜ao far´a sentido
a utiliza¸c˜ao de uma m´ascara 1× 1, uma vez que esta s´o selecciona um pixel. A
utiliza¸c˜ao de m´ascaras de tamanho elevado tamb´em n˜ao ´e apropriado, pois estas devem percorrer a imagem, e caso a m´ascara possua grande dimens˜ao, os pixels a percorrer ser˜ao inferiores, pois esta ter´a de ser aplicada dentro da imagem. O ponto
central da m´ascara tem de encontrar-se a (n− 1)/2 pixels da margem da imagem,
caso se pretenda efectuar a filtragem utilizando os valores mais pr´oximos da margem, ´e necess´ario utilizar uma m´ascara parcial, para que esta utilize os valores da margem.
3.3.1
Suaviza¸c˜
ao
A suaviza¸c˜ao da imagem ´e utilizada para remover o ru´ıdo e esbater uma imagem. O ru´ıdo de uma imagem corresponde aos pixels, ou a pequenos agrupamentos de pixels, isolados com grande varia¸c˜ao de intensidade, relativamente aos seus vizinhos. Com a suaviza¸c˜ao o ru´ıdo tende a desaparecer consoante a m´ascara e o filtro utilizados. A suaviza¸c˜ao esbate a imagem, o que resulta na perda de pequenos detalhes da imagem, e pode facilitar o reconhecimento de objectos.
Filtro de M´edia
O filtro de m´edia efectua a suaviza¸c˜ao atribuindo a cada pixel, a m´edia dos valores dos seus vizinhos e do seu pr´oprio valor. O c´alculo da m´edia ´e dado por (Filipe, 2009): Iout(i, j) = 1 Nv � m,n∈V Iin(m, n)
sendo Iout a imagem filtrada, Iin a imagem original, N v o n´umero de vizinhos, i e j
as coordenadas do pixel e m e n o tamanho da m´ascara.
Dependendo do tamanho da m´ascara, o n´ıvel de esbatimento ser´a diferente, assim quanto maior a m´ascara, mais esbatida a imagem ir´a ficar, sendo atenuada a varia¸c˜ao de intensidade do pixel central para os seus vizinhos.
Filtro Mediana
O filtro mediana n˜ao retorna um valor que seja uma combina¸c˜ao linear entre os valores da vizinhan¸ca, mas sim, o valor central do vector de valores ordenados da m´ascara, como ´e demonstrado na figura 3.2. Este filtro ´e especialmente eficaz na remo¸c˜ao dos pixels isolados, os quais constituem o ru´ıdo de uma imagem. Deste modo, n˜ao se obt´em um esbatimento t˜ao acentuado como no caso da m´edia, preser-vando desta forma as arestas e os contornos da imagem.
Figura 3.2 – Filtro Mediana (Filipe, 2009).
Filtro Gaussiano
O filtro Gaussiano ´e um filtro linear, onde os seus coeficientes s˜ao determinados pela fun¸c˜ao gaussiana com um desvio padr˜ao σ. O filtro gaussiano aplicado a uma imagem, ou seja numa matriz 2D possui a seguinte representa¸c˜ao (Filipe, 2009):
g(x, y) = 1
2πσ2e −x2+y22σ2
Figura 3.3 – Filtro Gaussiano 2D.
Este filtro atribui um maior peso aos pixels mais pr´oximos do pixel central, preser-vando as arestas da imagem. Dependendo do desvio padr˜ao atribu´ıdo, ir´a variar o
n´ıvel de suaviza¸c˜ao, sendo que quanto maior o desvio padr˜ao maior a suaviza¸c˜ao.
3.3.2
Detec¸c˜
ao de Arestas
Define-se por aresta, uma ´area da imagem onde ocorrem grandes varia¸c˜oes de in-tensidades dos pixels, como por exemplo, numa imagem com objectos sobrepostos quando se vˆe um objecto e no decorrer da imagem se come¸ca a visualizar outro objecto, verificando-se uma maior altera¸c˜ao das intensidades dos pixels.
A detec¸c˜ao de arestas permite localizar as margens de um objecto na imagem, podendo facilitar a identifica¸c˜ao do mesmo. Com o conhecimento das arestas h´a tamb´em a possibilidade de, medindo as mesmas, obter informa¸c˜oes relativamente ao tamanho dos objectos de uma imagem.
Existem diferentes opera¸c˜oes que possibilitam a detec¸c˜ao de arestas, algumas destas encontram-se explicadas nos pontos seguintes desta disserta¸c˜ao.
Gradiente
No caso de vectores, quando se verifica uma mudan¸ca acentuada de valores, esta altera¸c˜ao pode ser localizada, calculando os m´aximos locais da primeira derivada. Como trabalhando com imagens, se tem em considera¸c˜ao matrizes bidimensionais, ´e ent˜ao necess´ario calcular a primeira derivada da matriz, isto ´e, onde se encontram as arestas.
O gradiente corresponde `a primeira derivada de uma matriz. Os m´aximos deste gradiente v˜ao definir as arestas, e para ser poss´ıvel obter uma aresta e n˜ao um ponto isolado, ao inv´es de se definir por aresta, s´o ao valor m´aximo, ´e necess´ario definir uma margem de valores, os quais representar˜ao a aresta.
Operador de Roberts, Sobel e Prewitt
Os operadores de Roberts, Sobel e Prewit n˜ao s˜ao orientados nos eixos dos x e y, uma vez que estes operadores utilizam m´ascaras que retornam os valores em pontos interpolados. No caso dos operadores de Roberts, demonstrados na figura 3.4, o ponto central da m´ascara encontra se em [x + 1/2, y + 1/2], onde x e y s˜ao as coordenadas de um pixel, devido ao facto de se tratar de uma m´ascara com um n´umero de elementos par.
Figura 3.4 – Operadores de Roberts (Filipe, 2009).
De modo a obter-se uma m´ascara centrada num pixel, ´e necess´ario que este apresente um n´umero de elementos impar. ´E usual utilizar duas m´ascaras, uma para detectar as arestas horizontais e outra para detectar as arestas verticais, sendo que estas m´ascaras devem ser sim´etricas em rela¸c˜ao ao ponto (x, y). As m´ascaras utilizadas por Sobel e Prewitt s˜ao ilustradas na figura 3.5 e na figura 3.6.
Figura 3.5 – Operadores de Sobel (Filipe, 2009)
Figura 3.6 – Operadores de Prewit (Filipe, 2009)
Operador Laplaciano
Quando se trabalha com a primeira derivada, ´e preciso definir um conjunto de pi-xels, aproximados do valor m´aximo de modo a que seja poss´ıvel identificar uma aresta. Desta forma, obt´em-se um n´umero elevado de pixels definidos como aresta. Para contrariar este efeito, recorre-se `a segunda derivada. Uma vez encontrados os m´aximos locais do gradiente, provenientes da primeira derivada, s˜ao procurados quais destes pontos correspondem ao cruzamento com zero, na segunda derivada. Quando os pontos da segunda derivada cruzarem zero, estes s˜ao definidos como uma aresta.
O Laplaciano corresponde `a segunda derivada de uma matriz bidimensional, e ´e definido pela express˜ao (Filipe, 2009):
∇2I = δ
2I
δx2 +
δ2I
δy2
Com o objectivo de calcular as derivadas segundo x e y, ´e preciso aproxim´a-las, usando as equa¸c˜oes das diferen¸cas demonstrada na equa¸c˜ao (Filipe, 2009):
δ2I δx2 = δ∇x δx = δ(I[i + 1, j]− I[i, j]) δx = δI[i + 1, j] δx − δI[i, j] δx ≈ (I[i + 2, j] − I[i + 1, j]) − (I[i, j + 1] − I[i, j])
= I[i + 2, j]− 2I[i + 1, j] + I[i, j]
A equa¸c˜ao anterior est´a centrada no pixel [i + 1, j], para se obter a m´ascara centrada no ponto [i, j], ter´a de substituir-se i por i−1. Com a combina¸c˜ao das duas equa¸c˜oes, a equa¸c˜ao do eixo dos x e a equa¸c˜ao do eixo dos y, obt´em-se a m´ascara ilustrada na figura 3.7.
Figura 3.7 – M´ascara de Laplace (Filipe, 2009).
Operador LoG
A segunda derivada de uma matriz de intensidades ´e muito sens´ıvel ao ru´ıdo. De forma a colmatar este problema ´e necess´ario efectuar-se a suaviza¸c˜ao da imagem e seguidamente, efectuar-se a detec¸c˜ao de arestas.
O operador LoG aplica o gaussiano antes de efectuar a detec¸c˜ao de arestas a partir do operador laplaciano, deste modo num primeiro passo ´e retirado o ru´ıdo `a imagem, resolvendo os problemas com o ru´ıdo da segunda derivada. Quando retirado o ru´ıdo ´e aplicado o operador laplaciano e detectadas as arestas. A equa¸c˜ao que define o operador LoG ´e descrita por (Filipe, 2009):
Iout(x, y) =∇2[Gσ(x, y)× Iin(x, y)] = [∇2G σ(x, y)]× Iin(x, y) = � 1 √ 2πσ2 x2+ y2− 2σ2 σ4 e −x2+y22σ2 � × Iin(x, y) Operador Hessiano
O operador Hessiano ´e um operador utilizado para a detec¸c˜ao dos m´aximos e m´ınimos locais, recorrendo `a matriz Hessiana. Tendo em conta a matriz de in-tensidades definida atrav´es de uma fun¸c˜ao f (x, y), a matriz Hessiana, H, ´e a matriz das derivadas parciais da fun¸c˜ao f , como demonstrado por (Evans, 2009):
H(f (x, y)) = δ2f δx2 δ2f δxδy δ2f δxδy δ2f δy2
O determinante desta matriz, definido como discriminante, ´e calculado por (Evans, 2009): det(H) = δ 2f δx2 δ2f δy2 − � δ2f δxδy �2
O valor do discriminante ´e utilizado para classificar os m´aximos e m´ınimos da fun¸c˜ao, atrav´es da segunda derivada. Tendo em conta que o determinante corresponde ao produto dos valores pr´oprios de Hessian, podem ent˜ao classificar-se os pontos com base no sinal. Deste modo, se o determinante for negativo, os valores pr´oprios tˆem sinais diferentes, ent˜ao n˜ao ´e um extremo local, mas se o sinal for positivo, ambos os valores pr´oprios s˜ao positivos ou negativos, sendo que, nestes dois casos, o ponto ´e um extremo local. Os extremos locais, definem as aresta da imagem.
4
(SURF)
4.1
Introdu¸c˜
ao
O objectivo principal consiste no estudo da aplicabilidade do SURF em UAV para se efectuar o reconhecimento de objectos. Existem, no entanto, outros algoritmos
com as mesmas funcionalidades do SURF, mas com diferentes caracter´ısticas. ´E o
caso do SIFT, proposto por Lowe Lowe (2004) e o PCA-SIFT, proposto por Yan Ke (2004). De entre estes trˆes algoritmos existem algumas diferen¸cas relativamente `a sua robustez e tempo de processamento.
Luo Juan comparou os trˆes algoritmos, concluindo que, relativamente a altera¸c˜oes de imagem, como por exemplo, ao n´ıvel da rota¸c˜ao, da escala e das altera¸c˜oes de ilumina¸c˜ao, existem algumas varia¸c˜oes de detec¸c˜ao entre os algoritmos, sendo que se demonstrou que o SIFT apresenta uma superior robustez na rota¸c˜ao, enquanto que o SURF revela uma maior robustez nas mudan¸cas de ilumina¸c˜ao, por fim o PCA-SIFT ´e um algoritmo cujos valores nunca superam o SIFT ou o SURF. Quando se fazem compara¸c˜oes entre algoritmos, obtˆem-se informa¸c˜oes sobre os mes-mos, as quais constituem um aux´ılio, quando ´e necess´ario escolher o algoritmo a utilizar em determinada aplica¸c˜ao. Para o caso concreto estudado no ˆambito desta
disserta¸c˜ao, a utiliza¸c˜ao destes algoritmos em UAV, ´e necess´ario ter em conta o tempo de processamento. Nos UAV ´e necess´ario um processamento r´apido, para possibilitar a detec¸c˜ao em tempo real. Luo Juan comparou tamb´em os algoritmos consoante o tempo, e concluindo que o algoritmo SURF ´e o mais r´apido sem perder robustez na detec¸c˜ao de pontos de interesse, como ilustrado pela tabela 4.1.
Itens SIFT PCA-SIFT SURF
Correspondˆencias 271 18 186
Tempo Total (ms) 2.15378e+007 2.13969e+007 3362.86
Tabela 4.1 – Compara¸c˜ao SIFT, PCA-SIFT e SURF (Juan and Gwon, 2009).
O algoritmo SURF de Herbert Bay (2008), ´e reconhecido por ser robusto e r´apido na detec¸c˜ao de pontos de interesse, em conformidade com os resultados obtidos por Juan and Gwon (2009), surge como a escolha indicada. Para al´em da implementa¸c˜ao do SURF por Hebert Bay, existem implementa¸c˜oes, como a implementa¸c˜ao do Open-Surf, por Evans (2009), esta ´ultima permite acesso total `a implementa¸c˜ao, o estudo e altera¸c˜ao de toda a implementa¸c˜ao. Devido `a implementa¸c˜ao de Herbert Bay (2008) n˜ao ser de livre acesso e a implementa¸c˜ao de Evans (2009) manter a mesma robustez e rapidez da original, como comprovado por David Gossow and Paulus (2010), a implementa¸c˜ao OpenSurf ser´a a implementa¸c˜ao estudada ao longo desta disserta¸c˜ao.
4.2
Metodologia do SURF
A metodologia utilizada pelo SURF subdivide-se, principalmente, em trˆes pontos distintos: a cria¸c˜ao da imagem integral, a detec¸c˜ao dos pontos de interesse na ima-gem integral, previamente criada, e a cria¸c˜ao do descritor dos pontos de interesse. Nas sec¸c˜oes que se seguem, abordar-se-˜ao estes trˆes pontos, respectivamente.
4.2.1
Imagens Integrais
Parte do r´apido processamento do SURF ´e atribu´ıdo `a utiliza¸c˜ao de uma repre-senta¸c˜ao da imagem, conhecida por Imagem Integral. A imagem integral ´e criada a partir de uma imagem original e utilizada para acelerar o c´alculo de qualquer ´area rectangular da imagem. A partir de uma imagem I e um ponto (x, y), a imagem integral (I�) ´e calculada pela soma dos valores entre o ponto e a origem, definida
pela seguinte express˜ao (Evans, 2009):
I�(x, y) = i≤x � i=0 j≤y � j=0 I(x, y)
Utilizando imagens integrais, o c´alculo do somat´orio das intensidades dos pixels de uma regi˜ao rectangular ´e reduzido a quatro opera¸c˜oes. Se considerarmos um rectˆangulo definido pelos v´ertices A, B, C e D, como na figura 4.1, a soma da intensidade dos p´ıxeis ´e calculada por (Evans, 2009):
�
= A + D− (C + B)
Figura 4.1 – C´alculo de Subimagem com Imagens Integrais (Evans, 2009).
Sendo o tempo de processamento invariante ao tamanho da imagem, este m´etodo ´e ´
esta propriedade para efectuar r´apidas convolu¸c˜oes de filtros de tamanho vari´avel, num tempo quase constante.
4.2.2
Detector Fast-Hessian
Fast-Hessian
O detector SURF ´e baseado no determinante da matriz Hessiana. Para a utiliza¸c˜ao de Hessian ´e considerada uma fun¸c˜ao cont´ınua de duas vari´aveis, na qual o valor da fun¸c˜ao em (x, y) ´e dada por f (x, y). A matriz Hessiana, H, ´e a matriz das derivadas parciais da fun¸c˜ao mencionada no ponto 3.3.2 desta disserta¸c˜ao.
Para a aplica¸c˜ao da matriz Hessiana a imagens, em vez de a fun¸c˜oes cont´ınuas, primeiramente substituem-se os valores da fun¸c˜ao f (x, y) pela intensidade do p´ıxel I(x, y). De seguida, ´e necess´ario um m´etodo para calcular as segundas derivadas da imagem. O c´alculo das derivadas pode efectuar-se com base na convolu¸c˜ao com uma m´ascara apropriada. No caso do SURF, a escala de segunda ordem normali-zada de Gaussian ´e o filtro escolhido que permite a an´alise em diferentes escalas e espa¸co. ´E poss´ıvel construir m´ascaras para as derivadas Gaussianas, em x e y, e combinar a direc¸c˜ao xy de forma a se calcular as quatro entradas da matriz Hessi-ana. A utiliza¸c˜ao de Gaussian permite variar a quantidade de suaviza¸c˜ao durante a convolu¸c˜ao, de modo a que o determinante seja calculado em escalas diferentes. Uma vez que o Gaussian ´e uma fun¸c˜ao isotr´opica (isto ´e, circularmente sim´etrico) a convolu¸c˜ao com a m´ascara permite invariˆancia `a rota¸c˜ao. Pode calcular-se a matriz Hessiana, H, como fun¸c˜ao de ambos os espa¸cos x = (x, y) e escala σ (Evans, 2009):
H(f (x, y)) = Lxx(x, σ) Lxy(x, σ) Lxy(x, σ) Lyy(x, σ)
onde Lxx(x, σ) se refere `a convolu¸c˜ao da derivada Gaussiana de segunda ordem δ2δxg(σ)2
s˜ao conhecidas como Laplaciano da Gaussiana.
De seguida, procede-se ao c´alculo do determinante de Hessian para cada pixel da imagem, usando o valor deste para encontrar pontos de interesse. Esta varia¸c˜ao do detector Hessiano ´e semelhante ao proposto por Beaudet (1978).
Lowe (2004) propˆos uma melhoria no desempenho quando se aproxima o Laplaci-ano de Gaussiana pela diferen¸ca Gaussiana, ver sec¸c˜ao 3.3.2. De modo semelhante, Herbert Bay (2008) propˆos uma aproxima¸c˜ao para o Laplaciano de Gaussian, uti-lizando box filter representations, das respectivas m´ascaras. A figura 4.2 ilustra a semelhan¸ca entre os n´ucleos discretizados e cortados e os filtros equivalentes. Uti-lizando estes filtros em conjunto com a imagem integral, obt´em-se um aumento de desempenho consider´avel. Para quantificar a diferen¸ca, considera-se o n´umero de acessos `a matriz e opera¸c˜oes necess´arias na convolu¸c˜ao. Deste modo para um filtro de 9× 9 seriam necess´arios 81 acessos `a matriz e opera¸c˜oes para o valor real do filtro original, e apenas 8 para a box filter representations. Assim `a medida que se au-menta o tamanho do filtro, o custo computacional auau-menta significativamente para o Laplaciano original, enquanto que o mesmo custo para os box filters ´e invariante ao tamanho.
Na figura 4.2 o valor aplicado a cada uma das sec¸c˜oes do filtro ´e mantido simples, sendo que para o filtro Dxy as regi˜oes a negro tˆem o valor de 1, as regi˜oes brancas o valor de -1 e as restantes regi˜oes n˜ao possuem valor algum. Os filtros Dxx e Dyy s˜ao valorados de forma semelhante, mas com as regi˜oes brancas a corresponder ao valor -1 e as negras ao valor 2. Uma valora¸c˜ao simples permite o c´alculo r´apido das regi˜oes, mas para a utiliza¸c˜ao destes valores ´e necess´ario compensar os valores originados pela diferen¸ca entre o original e a aproima¸c˜ao das m´ascaras. Herbert Bay (2008) prop˜oe a seguinte express˜ao, como uma aproxima¸c˜ao precisa para o determinante Hessiano, utilizando a aproxima¸c˜ao Gaussiana (Evans, 2009):
Figura 4.2 – Filtros Laplacianos (em cima) e Box Filter (em baixo), da esquerda para a direita os filtros Dxx, Dyy e Dxy (Evans, 2009).
Em (Herbert Bay, 2008), os dois filtros s˜ao comparados em pormenor, e os resultados apontam para que a box filter representations apresente uma perda desprez´ıvel de precis˜ao, a qual ´e largamente compensada pelo aumento consider´avel em eficiˆencia e rapidez. O determinante aqui ´e referido como resposta ao agrupamento na loca-liza¸c˜ao de x = (x, y, σ). A procura dos m´aximos locais desta fun¸c˜ao sobre o espa¸co e a escala, produz os pontos de interesse da imagem. O m´etodo exacto para a extrac¸c˜ao dos pontos de interesse ´e abordado na sec¸c˜ao seguinte.
Constru¸c˜ao do Scale-Space
Para detectar pontos de interesse, utilizando o determinante Hessiano, ´e necess´ario introduzir a no¸c˜ao de scale-space. Um scale-space ´e uma fun¸c˜ao cont´ınua que pode ser utilizada para encontrar extremos em todas as escalas poss´ıveis Witkin (1983).
Na vis˜ao por computador, um scale-space ´e geralmente implementado como uma pirˆamide de imagens, onde a imagem de entrada ´e v´arias vezes convolvida com a m´ascara Gaussiana, e repetitivamente subdividida, reduzindo o seu tamanho. Este m´etodo ´e utilizado no SIFT (Lowe, 2004), mas uma vez que cada camada depende da anterior, e as imagens precisam para ser redimensionadas, n˜ao ´e computacional-mente eficiente. Como o tempo de processamento das m´ascaras utilizadas no SURF, ´e invariante ao tamanho das mesmas, os scale-spaces podem ser criados aplicando
m´ascaras de maior tamanho `a imagem original, permitindo que m´ultiplas camadas
do scale-space possam ser processadas simultaneamente, eliminando assim a neces-sidade da imagem da camada anterior, proporcionando, deste modo, um aumento do desempenho.
A figura 4.3 ilustra a diferen¸ca entre a estrutura tradicional de scale-space e a utili-zada no SURF.
Figura 4.3 – Constru¸c˜ao tradicional (`a esquerda) e constru¸c˜ao utilizada no SURF (`a direita) (Evans, 2009).
O scale-space ´e dividido num n´umero de octavos, onde um octavo se refere a uma
s´erie de mapas de resposta que envolve uma duplica¸c˜ao de escala. No SURF o n´ıvel mais baixo do scale-space ´e obtido a partir do resultado das m´ascaras 9×9, ilustradas na figura 4.2. Estas m´ascaras correspondem a valores reais Gaussianos com σ = 1, 2. As camadas seguintes s˜ao obtidas pelo aumento em escala das m´ascaras, mantendo
as propor¸c˜oes e disposi¸c˜oes das mesmas. `A medida que o tamanho da m´ascara
as propor¸c˜oes permanecem constantes, pode calcular-se esta escala pela seguinte express˜ao (Evans, 2009):
σapprox = CurrentF ilterSize·
BaseF ilterScale BaseF ilterSize = CurrentF ilterSize· 1.2
9
Ao construir m´ascaras maiores, existe um n´umero de factores que se deve ter em
considera¸c˜ao. O aumento do tamanho ´e limitado pela dimens˜ao das sec¸c˜oes positiva e negativa, subjacentes `a derivada Gaussiana, de segunda ordem. Nas m´ascaras, o tamanho das regi˜oes ´e definida como um ter¸co do tamanho do lado da m´ascara, o qual se refere ao lado mais curto das regi˜oes ponderadas, a preto e branco. Uma vez que ´e necess´aria a presen¸ca de um pixel central, as dimens˜oes devem ser aumen-tadas igualmente em torno desta localiza¸c˜ao, portanto o tamanho das sec¸c˜oes pode aumentar num m´ınimo de 2 unidades. Uma vez que existem trˆes regi˜oes em cada m´ascara, as quais devem ter o mesmo tamanho, a propor¸c˜ao de altera¸c˜ao entre dois filtros consecutivos ´e de 6 unidades. Para os filtros Dxx e Dyy o comprimento do lado mais longo das regi˜oes ponderadas, aumenta por 2 unidades, em cada lado, de forma a preservar a estrutura. A figura 4.4 ilustra a estrutura das m´ascaras, uma vez que aumentam de tamanho.
Localizar Pontos de Interesse
O processo de localiza¸c˜ao de pontos de interesse invariantes `a escala e `a rota¸c˜ao numa imagem, pode ser dividida em trˆes etapas. Na primeira, as respostas s˜ao limitadas, de modo a que todos os valores abaixo do limite predeterminado sejam removidos. O aumento do limite diminui o n´umero de pontos de interesse detectados, deixando apenas os mais fortes, enquanto a diminui¸c˜ao do limite permite que sejam detectados muitos mais pontos de interesse. Consequentemente, o limite pode ser adaptado consoante a aplica¸c˜ao e o n´ıvel de detec¸c˜ao necess´ario.
Depois de limitar o n´umero de pontos de interesse, uma supress˜ao n˜ao-m´axima
´e realizada para encontrar um conjunto de pontos candidatos. Para o efeito, cada pixel no scale-space ´e comparado com os seus 26 vizinhos, compostos por 8 pontos na escala nativa e 9 pontos em cada uma das escalas acima e abaixo, respectivamente. A figura 4.5 ilustra o passo da supress˜ao n˜ao-m´axima. Nesta fase, tem-se um conjunto de pontos de interesse com resistˆencia m´ınima, determinada pelo valor de limite, os quais correspondem tamb´em a m´aximos ou m´ınimos locais no scale-space.
Figura 4.5 – Supress˜ao n˜ao-m´axima (Evans, 2009).
O passo final na localiza¸c˜ao dos pontos de interesse, envolve a interpola¸c˜ao dos dados mais pr´oximos do ponto de interesse, de forma encontrar a localiza¸c˜ao precisa na
escala e espa¸co do sub-pixel. Este procedimento efectua-se encaixando um quadrado 3D (CUBO), como proposto por Matthew Brown (2002). Para tal, recorre-se ao de-terminante da fun¸c˜ao Hessiana, H(x, y, σ), como uma expans˜ao de Taylor, capaz de criar termos quadr´aticos centrados na localiza¸c˜ao detectada, expresso como (Evans, 2009): H(x) = H + δH T δx x + 1 2x Tδ2H δx2 x
A localiza¸c˜ao interpolada do extremo, ˆx = (x, y, σ), ´e encontrada tomando a deri-vada desta fun¸c˜ao e definindo-a em zero, tal que (Evans, 2009):
ˆ x =−δ 2H−1 δx2 δH δx
As derivadas aqui s˜ao aproximadas por diferen¸cas finitas de pixels vizinhos. Se ˆx ´e maior do que 0,5 nas direc¸c˜oes X ou Y , ajusta-se a localiza¸c˜ao e realiza-se a interpola¸c˜ao novamente. Este procedimento ´e repetido at´e ˆx ser inferior a 0,5 em todas as direc¸c˜oes ou at´e que o n´umero predeterminado de interpola¸c˜oes tenha sido excedido. Esses pontos n˜ao convergentes s˜ao exclu´ıdos do conjunto de pontos de interesse, deixando apenas os mais est´aveis e repet´ıveis.
4.2.3
Descritor de Pontos de Interesse
O descritor SURF descreve como ´e que as intensidades do pixel est˜ao distribu´ıdas dentro de uma escala, dependendo da vizinhan¸ca de cada ponto de interesse, detec-tado pelo Fast-Hessian. Esta aproxima¸c˜ao ´e semelhante `a do SIFT (Lowe, 2004), mas a utiliza¸c˜ao de imagens integrais em conjunto com filtros, conhecidos como Haar Wavelets, s˜ao utilizados para aumentar a robustez e diminuir o tempo computacio-nal. Os Haar Wavelets s˜ao filtros simples que podem ser utilizados para encontrar gradientes nas direc¸c˜oes X e Y , estes s˜ao ilustrados pela figura 4.6.
Figura 4.6 – Haar Wavelet (Evans, 2009).
A cria¸c˜ao do descritor pode ser dividida em duas tarefas distintas. Na primeira, a cada ponto de interesse ´e atribu´ıda uma orienta¸c˜ao repet´ıvel, antes de se construir uma janela dependente da escala, em que um vector de dimens˜ao 64 ´e extra´ıdo.
´
E importante que todos os c´alculos para o descritor sejam baseados em medi¸c˜oes relativas `a escala detectada, a fim de alcan¸car resultados invariantes `a mesma.
Orienta¸c˜ao
Com o objectivo de alcan¸car invariˆancia `a rota¸c˜ao da imagem de cada ponto de interesse detectado, ´e atribu´ıda uma orienta¸c˜ao reprodut´ıvel. A extrac¸c˜ao dos com-ponentes do descritor ´e executada em rela¸c˜ao a esta mesma direc¸c˜ao, por isso, ´e importante que esta seja repet´ıvel, sob diferentes condi¸c˜oes. Para determinar a ori-enta¸c˜ao, as respostas Haar Wavelet de tamanho 4σ s˜ao calculadas para os pixels estabelecidos dentro de um raio de 6σ, com centro no ponto de interesse detectado, onde σ se refere `a escala em que o ponto foi detectado. O conjunto espec´ıfico de pi-xels ´e determinado pela amostragem dos pipi-xels que se encontram dentro do c´ırculo, utilizando um tamanho de σ.
As respostas s˜ao medidas a partir do Gaussiano centrado no ponto de interesse. De acordo com o exposto, o Gaussiano ´e dependente da escala do ponto, considerada de forma a obter um desvio padr˜ao de 2.5σ. Uma vez medidas, as respostas s˜ao representadas como pontos num vector espacial, com as respostas X ao longo da abcissa e as respostas Y ao longo da ordenada. A orienta¸c˜ao dominante ´e selecci-onada por rota¸c˜ao de um segmento de c´ırculo que cobre um ˆangulo de π3 em torno
da origem. Em cada posi¸c˜ao, as respostas X e Y dentro do segmento s˜ao somadas e utilizadas para formar um novo vector, o maior vector define a orienta¸c˜ao do ponto de interesse. Este processo ´e ilustrado na figura 4.7.
Figura 4.7 – Obter orienta¸c˜ao (Evans, 2009).
Para algumas aplica¸c˜oes a invariˆancia `a rota¸c˜ao n˜ao ´e necess´aria, podendo este passo ser omitido, proporcionando um aumento do desempenho. Nesta vers˜ao do descritor (Herbert Bay, 2008), a omiss˜ao deste passo, ´e designada por Upright SURF ou U-SURF, e tem demonstrado manter a robustez para rota¸c˜oes de imagem de aproximadamente 15 graus.
Componentes
O primeiro passo na extrac¸c˜ao do descritor SURF passa por construir uma janela quadrada em torno do ponto de interesse. Esta janela de dimens˜ao 20σ (onde σ se refere `a escala detectada), cont´em os pixels que formam as entradas no vector descritor e ´e orientada ao longo da direc¸c˜ao encontrada na sec¸c˜ao anterior. Todos os c´alculos seguintes s˜ao relativos a esta direc¸c˜ao.
Figura 4.8 – Janela quadrada do descritor (Evans, 2009).
A janela do descritor ´e dividida em sub-regi˜oes regulares 4× 4. Dentro de cada
uma destas sub-regi˜oes, os Haar Wavelets de tamanho 2σ s˜ao calculados para uma amostra de 25 pontos distribu´ıdos regularmente. Considerando as respostas wavelet, em x e y por dx e dy, ent˜ao, para os 25 pontos da amostragem recolhe-se (Evans, 2009):
vsubregion =
��
dx,�dy,�|dx|,�|dy|�
Assim, cada sub-regi˜ao retorna quatro valores para o vector descritor, originando
um vector de dimens˜ao 4× 4 × 4 = 64. O resultado do descritor SURF ´e invariante
5
Resultados
5.1
Introdu¸c˜
ao
Como mencionado anteriormente, esta disserta¸c˜ao baseia-se no estudo do algoritmo SURF e a sua aplicabilidade em UAV, e para o efeito foi estudado o algoritmo de Herbert Bay (2008) e a sua implementa¸c˜ao OpenSURF, por Evans (2009). Esta implementa¸c˜ao utiliza a linguagem de programa¸c˜ao Visual C� e retorna os pontos de interesse de uma imagem seleccionada pelo utilizador.
A implementa¸c˜ao por Evans (2009), subdivide-se em trˆes partes distintas: a cria¸c˜ao da imagem integral, a pesquisa de pontos de interesse e a descri¸c˜ao dos pontos de interesse. Na cria¸c˜ao da imagem integral, inicializa-se um objecto da classe
IntegralImagepela fun¸c˜ao FromImage. Um objecto do tipo IntegralImage, cont´em
uma matriz do tipo float, correspondente `a imagem integral, e duas vari´aveis do tipo int, correspondentes ao tamanho da matriz, neste caso Width e Height. Como parˆametros de entrada, a fun¸c˜ao FromImage requer uma vari´avel do tipo Bitmap, a qual corresponde `a imagem que se pretende transformar em imagem integral. O segundo ponto desta implementa¸c˜ao consiste na detec¸c˜ao dos pontos de interesse, a partir da imagem integral calculada previamente. De modo a realizar a detec¸c˜ao
de pontos de interesse, ´e necess´ario inicializar uma lista de IPoint, a qual ir´a conter todos os pontos de interesse, depois de detectados. Os pontos de interesse do tipo IPoint, contˆem as vari´aveis x e y, referentes `as coordenadas do ponto de interesse; scale, response, orientation e laplacian, referentes ao valor da escala, n´ıvel de res-posta, orienta¸c˜ao e valor do laplaciano; e por fim a vari´avel descriptorLenght, referente ao tamanho do descritor, e um vector descriptor, o qual ser´a o descritor do ponto de interesse. Criada a lista de IPoint, utiliza-se a fun¸c˜ao GetIpoints da classe FastHessian, a qual possui como parˆametros de entrada, o valor limite para se considerar ponto de interesse, o n´umero de octavos, a escala inicial, e a imagem integral, gerada anteriormente. Esta fun¸c˜ao ir´a preencher a lista de IPoints, mas n˜ao preenche o descritor dos pontos de interesse.
O passo final ´e obter o descritor dos pontos de interesse, para tal utiliza-se a fun¸c˜ao DecribeInterestPoints da classe SurfDescriptor. Esta fun¸c˜ao tem como parˆametros de entrada a lista de pontos de interesse, retornada pela fun¸c˜ao GetIpoints, duas vari´aveis do tipo bool, uma para se definir a variˆancia `a orienta¸c˜ao e outra para se utilizar um descritor de 128 posi¸c˜oes, em vez do descritor de 64, e a imagem in-tegral. Esta fun¸c˜ao vai preencher o descritor de cada ponto de interesse encontrado. Com este processo obt´em-se os descritores dos pontos de interesse da imagem. A fim de identificar objectos, recorre-se aos pontos de interesse de uma imagem e procuram-se os mesmos numa outra imagem. Para se efectuar esta compara¸c˜ao realiza-se a pesquisa de pontos de interesse em ambas as imagens, e depois verifica-se a correspondˆencia entre os pontos. A fim de encontrar esta correspondˆencia foi implementada a fun¸c˜ao MatchSurf. Depois de efectuado todo o processo de pesquisa de pontos de interesse, e de seguida a pesquisa de correspondˆencia entre eles, obtˆem-se os pontos de interesobtˆem-se comuns ente as duas imagens.
De forma a efectuar o reconhecimento de objectos n˜ao por toda a imagem, ´e definida uma regi˜ao na imagem, onde devem ser pesquisados os pontos de interesse, deno-minada por ROI (Region of Interest Points). Estes pontos de interesse definem um objecto seleccionado pelo utilizador, os quais ser˜ao comparados com os da segunda imagem.
Com objectivo de estudar a aplicabilidade em UAV, ´e atribu´ıda uma maior re-lavˆencia ao tempo de processamento e `as imagens a utilizar. Neste caso as imagens correspondem aos frames captados pelas cˆamaras, onde a pesquisa ´e efectuada entre
frames consecutivos ou frames espa¸cados por um n´umero determinado de frames,
dependendo da taxa de amostragem, n´umero de frames por segundo, e do tempo de
processamento.
A fim de realizar os testes e analisar os resultados, foi criada uma interface que permite a visualiza¸c˜ao das duas imagens a ser comparadas e que mostram os pontos de interesse detectados. Para a realiza¸c˜ao dos testes, foram capturadas imagens, a partir de uma m´aquina digital, nas quais se procurou captar varia¸c˜oes de ilumina¸c˜ao, de escala, de rota¸c˜ao e de tamanho da imagem.
5.2
Desenvolvimento
5.2.1
Interface
A interface criada para o teste do SURF, consiste numa janela com duas pictureboxs onde s˜ao apresentadas as imagens e onde se efectua a selec¸c˜ao do ROI. De seguida apresentam-se as seguintes op¸c˜oes, para aplicar o SURF a uma imagem: aplicar o SURF ou o U-SURF, a uma imagem definida pelo utilizador, com objectivo de detectar os pontos de interesse; aplicar o SURF ou o U-SURF a duas imagens, de-finidas pelo utilizador, detectando os pontos de interesse comuns, entre as imagens; abertura de imagens definidas pelo utilizador, de modo a que seja poss´ıvel para o utilizador definir o ROI; e por ´ultimo uma op¸c˜ao de reset, que reinicializa todos os valores. A interface ´e ilustrada pela figura 5.1.
Figura 5.1 – Interface.
Quando seleccionada uma das op¸c˜oes que implique o SURF ou o U-SURF, s˜ao apre-sentados numa MessageBox, ilustrada pela figura 5.2, o tempo de processamento, o
n´umero de pontos de interesse, total no caso do Run e comuns no caso do
Run/-Match, e o tamanho das imagens utilizadas.
Figura 5.2 – MessageBox.
5.2.2
Compara¸c˜
ao de Pontos de Interesse
Com o prop´osito de encontrar identificar a existˆencia de um objecto em duas ima-gens, ´e necess´ario, depois de efectuada a pesquisa de pontos de interesse a partir
da implementa¸c˜ao OpenSURF, um m´etodo que compare pontos de interesse e que retorne os que existam nas duas imagens. Para tal, foi implementada a fun¸c˜ao MatchSurf, a qual ir´a preencher duas listas de pontos de interesse, previamente inicializadas como MatchA e MatchB.
A fun¸c˜ao ´e do tipo
private void MatchSurf ( L i s t <I P o i n t > iptsA , L i s t < I P o i n t > iptsB , f l o a t t h r e s h )
onde iptsA, corresponde aos pontos de interesse da primeira imagem e iptsB, aos pontos de interesse da segunda imagem, o valor thresh ao limite para se considerar que dois pontos de interesse s˜ao comuns ou n˜ao.
Para se efectuar a compara¸c˜ao de valores, ´e necess´ario um vector auxiliar, do tipo float, de forma a serem guardados os valores, depois dos c´alculos efectuados, entre os vectores descritores. Como o descritor de um ponto de interesse cont´em 64 valores, este vector auxiliar definido por valArr, tamb´em possui 64 posi¸c˜oes de mem´oria, sendo necess´aria uma outra vari´avel, esta tamb´em do tipo float, para guardar, no final, o somat´orio do vector originado.
Como demonstrado de seguida, depois de inicializadas as vari´aveis, ´e criado um ciclo foreach para percorrer a lista de pontos de interesse da primeira imagem, e
dentro deste foreach, outro foreach, este ´ultimo, para percorrer todos os pontos
de interesse da segunda imagem. Deste modo ´e efectuado o acesso a todos os pontos de interesse e calculada a correspondˆencia entre eles. Dentro dos dois foreach ´e efectuada inicialmente uma decis˜ao, que se baseia na verifica¸c˜ao se o valor de laplaciano para os dois ponto ´e igual, e caso seja igual, existe a possibilidade de estes serem pontos comuns, caso contr´ario, esta possibilidade n˜ao se verifica. Uma outra fun¸c˜ao foi criada a partir da varia¸c˜ao desta decis˜ao, onde ´e tamb´em verificada a aproxima¸c˜ao entre os pontos a serem analisados. Nesta fun¸c˜ao a linha do if ´e descrita de seguida, na qual a condi¸c˜ao s´o se verifica se os pontos se encontrarem a menos de 100 pixels de distˆancia.
i f ( iA . l a p l a c i a n == iB . l a p l a c i a n && Math . Abs ( iA . x − iB . x ) < 100 && Math . Abs ( iA . y − iB . y ) < 100)
Verificada a condi¸c˜ao anterior, procede-se aos c´alculos, para determinar se os pontos de interesse s˜ao comuns. Para o efeito, subtrai-se ponto a ponto os valores do vector descritor da primeira imagem pelo da segunda, ou seja, para cada valor do vector descritor da primeira imagem, numa determinada posi¸c˜ao, vai subtrair-se o valor do vector descritor da segunda imagem na posi¸c˜ao correspondente. De forma a efectuar esta subtrac¸c˜ao, recorresse `a fun¸c˜ao sub, fun¸c˜ao esta, explicada no ponto 5.2.4 desta disserta¸c˜ao.
private void MatchSurf ( L i s t <I P o i n t > iptsA , L i s t <I P o i n t > iptsB , f l o a t t h r e s h ) { f l o a t v a l ; f l o a t [ ] v a l A r r = new f l o a t [ 6 4 ] ; foreach ( I P o i n t iA in i p t s A ) { foreach ( I P o i n t iB in i p t s B ) { i f ( iA . l a p l a c i a n == iB . l a p l a c i a n ) { v a l A r r = sub ( iA . d e s c r i p t o r , iB . d e s c r i p t o r ) ; v a l A r r = mult ( valArr , v a l A r r ) ; v a l = v a l A r r . Sum ( ) ; } i f ( v a l < t h r e s h ) { MatchA . Add( iA ) ; MatchB . Add( iB ) ; }
} } }
Depois de calculada a subtrac¸c˜ao ponto a ponto, ´e necess´ario efectuar uma multi-plica¸c˜ao ponto a ponto, eliminando assim valores negativos e distanciando os pon-tos. Assim, quanto mais aproximado de zero for o valor, mais aproximado vai este ficar com esta multiplica¸c˜ao, e sendo o valor zero uma correspondˆencia total, esta opera¸c˜ao vai fazer com que sejam mais distanciados os pontos correspondentes dos n˜ao correspondentes, para que seja poss´ıvel uma melhor afina¸c˜ao do valor limite para se definir como ponto de interesse. Ap´os o c´alculo da multiplica¸c˜ao ponto a ponto, v˜ao somar-se todos os valores do vector originado. ´E necess´ario somar estes valores, pois a cada posi¸c˜ao do vector s´o corresponde uma opera¸c˜ao efectuada numa pequena ´area do ponto de interesse. Logo, para termos correspondˆencia considera-se todo o ponto de interesse e n˜ao uma parte do mesmo. Quando efectuado o somat´orio ´e comparado este valor com o valor de limite, o thresh. Caso este valor seja inferior ao thresh definido, os pontos de interesse comparados s˜ao correspondentes, e por conseguinte, v˜ao ser adicionados `a lista de pontos de interesse correspondentes. A lista de pontos correspondentes da primeira imagem vai ter os pontos de interesse da primeira imagem, que encontraram correspondˆencia na segunda imagem, e a lista de pontos correspondentes da segunda imagem vai ter os pontos de interesse da segunda imagem, que encontraram correspondˆencia na primeira imagem.
Por fim obtˆem-se duas listas com pontos de interesse que tenham correspondˆencia, o que permite localizar objectos da primeira imagem, na segunda imagem, e vice-versa. Esta fun¸c˜ao vai analisar todos os pontos de interesse de ambas as imagens, verifi-cando os que apresentam correspondentes. Como se pretende identificar um objecto, ´e preciso efectuar a selec¸c˜ao do objecto na primeira imagem, para tal ´e utilizado o ROI, este que vai ser explicado e descrito no ponto seguinte.
5.2.3
ROI (Region of Interest Points)
Tendo em conta que para a utiliza¸c˜ao do algoritmo SURF em UAV ´e exigido um r´apido processamento, ´e necess´ario, numa imagem inicial, identificar o objecto que se procura reconhecer em imagens posteriores. O utilizador dever´a definir o objecto na primeira imagem, enquadrando-o, dentro de um rectˆangulo, permitindo deste modo, melhorar a velocidade de processamento, uma vez que n˜ao vai ser efectuada a pesquisa de pontos de interesse em toda a imagem. Este rectˆangulo ´e denominado por ROI.
O ROI ´e definido clicando na picturebox, que cont´em a imagem, e para tal ´e implementado o evento Click da picturebox. A implementa¸c˜ao deste evento est´a descrito no seguimento desta disserta¸c˜ao, onde s˜ao utilizadas as vari´aveis ROI1 e ROI2: duas vari´aveis do tipo Rectangle previamente inicializadas.
private void p b M a i n P i c t u r e C l i c k ( object s e n d e r , EventArgs e ) {
i f ( ROI1 . L o c a t i o n . IsEmpty ) {
ROI1 .X = t h i s . P o i n t T o C l i e n t ( Cursor . P o s i t i o n ) .X + Math . Abs ( s p l i t C o n t a i n e r 1 . Panel1 .
A u t o S c r o l l P o s i t i o n .X) − 1 6 ;
ROI1 .Y = t h i s . P o i n t T o C l i e n t ( Cursor . P o s i t i o n ) .Y + Math . Abs ( s p l i t C o n t a i n e r 1 . Panel1 .
A u t o S c r o l l P o s i t i o n .Y) − 1 6 ; }
e l s e {
i f ( ROI1 . Width == 0 && ROI1 . Height == 0 ) {
a .X += Math . Abs ( s p l i t C o n t a i n e r 1 . Panel1 . A u t o S c r o l l P o s i t i o n .X) − 1 6 ;
a .Y += Math . Abs ( s p l i t C o n t a i n e r 1 . Panel1 . A u t o S c r o l l P o s i t i o n .Y) − 1 6 ;
i f ( a .X > ROI1 .X && a .Y > ROI1 .Y) {
ROI1 . Width = a .X − ROI1 .X;
ROI1 . Height = a .Y − ROI1 .Y;
}
i f ( a .X < ROI1 .X && a .Y > ROI1 .Y) {
ROI1 . Width = ROI1 .X − a .X;
ROI1 . Height = a .Y − ROI1 .Y;
ROI1 .X = a .X; }
i f ( a .X < ROI1 .X && a .Y < ROI1 .Y) {
ROI1 . Width = ROI1 .X − a .X;
ROI1 . Height = ROI1 .Y − a .Y;
ROI1 .X = a .X; ROI1 .Y = a .Y; }
i f ( a .X > ROI1 .X && a .Y < ROI1 .Y) {
ROI1 . Width = a .X − ROI1 .X;
ROI1 . Height = ROI1 .Y − a .Y;
ROI1 .Y = a .Y; }
ROI2 . Width = Convert . ToInt16 ( ROI1 . Width ∗ 1 . 5F) ;
ROI2 . Height = Convert . ToInt16 ( ROI1 . Height ∗ 1 . 5F
ROI2 .X = ROI1 .X − Convert . ToInt16 ( ( ROI2 . Width − ROI1 . Width ) / 2 ) ;
ROI2 .Y = ROI1 .Y − Convert . ToInt16 ( ( ROI2 . Height −
ROI1 . Height ) / 2 ) ; i f ( ROI2 .X < 0 )
ROI2 .X = 0 ; i f ( ROI2 .Y < 0 ) ROI2 .Y = 0 ;
i f ( ROI2 . Right > img2 . Width )
ROI2 . Width = img2 . Width − ROI2 .X;
i f ( ROI2 . Bottom > img2 . Height )
ROI2 . Height = img2 . Height − ROI2 .Y;
pbMainPicture . Image = img1 ; pbimg2 . Image = img2 ;
} } }
S˜ao utilizados dois ROIs com o objectivo do ROI1 ser o objecto identificado pelo utilizador e o ROI2 a regi˜ao a ser analisada na segunda imagem, a qual cont´em como centro a posi¸c˜ao central do ROI1, contendo ainda uma ´area mais abrangente, para que o objecto na segunda imagem n˜ao se encontre fora dos limites, evitando deste modo, que este n˜ao seja encontrado. Assim, o ROI2 ´e criado a partir do ROI1. Para se definir o ROI1, ´e necess´ario o click nas duas extremidades mais distantes do rectˆangulo a definir, ou seja, nas extremidades diagonais. Quando identificadas as extremidades, o ROI1 vai ser definido, sendo a posi¸c˜ao do ROI1 X e Y , a posi¸c˜ao da extremidade superior esquerda. Calculando a distˆancia desta extremidade `a extre-midade oposta diagonalmente, ´e definida a largura e altura do rectˆangulo, ficando assim o ROI1 definido.