idronecup - manual processamento de imagemweb.ipca.pt/idronecup2014/images/idronecup - manual...

12
Manual – Processamento de Imagem João L. Vilaça Versão 1.0 – 31/1/2014

Upload: vankhue

Post on 08-Nov-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: iDroneCup - Manual Processamento de Imagemweb.ipca.pt/idronecup2014/images/iDroneCup - Manual Processamento... · “ardrone2_XXXXX” (em definições de wifi do PC) João L. Vilaça

Manual – Processamento de Imagem

João L. Vilaça

Versão 1.0 – 31/1/2014

Page 2: iDroneCup - Manual Processamento de Imagemweb.ipca.pt/idronecup2014/images/iDroneCup - Manual Processamento... · “ardrone2_XXXXX” (em definições de wifi do PC) João L. Vilaça

João L. Vilaça 2

Licenciatura em Engenharia Eletrotécnica e de Computadores

Mestrado em Engenharia Eletrónica e de Computadores

Índice

1. Sistema de eixo e movimentos possíveis do Drone .............................................................. 3

2. Imagem .................................................................................................................................. 3

3. Espaços de cor ....................................................................................................................... 4

4.1 RGB ...................................................................................................................................... 5

4.2HSV ....................................................................................................................................... 5

4.3 GRAY .................................................................................................................................... 6

4.3 Função EMGU que permite converter do espaço cor RGB para o HSV .............................. 6

4. Câmaras Drone ...................................................................................................................... 7

4.1 Câmara Frontal .............................................................................................................. 7

4.2 Câmara Inferior ............................................................................................................. 8

5. Programa para calibração de cor .......................................................................................... 9

6. Biblioteca base .................................................................................................................... 11

7. Classe ProcessamentoImagem.cs ....................................................................................... 12

Page 3: iDroneCup - Manual Processamento de Imagemweb.ipca.pt/idronecup2014/images/iDroneCup - Manual Processamento... · “ardrone2_XXXXX” (em definições de wifi do PC) João L. Vilaça

João L. Vilaça 3

Licenciatura em Engenharia Eletrotécnica e de Computadores

Mestrado em Engenharia Eletrónica e de Computadores

1. Sistema de eixos e movimentos possíveis do Drone

2. Imagem

A imagem é uma matriz de duas dimensões.

Cada elemento da matriz (pixel) pode ser representado por um número diferente de canais.

• RGB (imagem a cores) – 3 canais (R, G e B)

• HSV (imagem a cores) – 3 canais (H, S, V)

• Gray (imagem em tons de cinzento) – 1 canal

Cada canal pode ser representado por 1, 8, 16 ou 32 bits (profundidade), quanto maior a for o

número de bits que representa cada canal, maior vai ser a resolução da imagem, pois existirão

mais níveis para caracterizar o seu valor.

Page 4: iDroneCup - Manual Processamento de Imagemweb.ipca.pt/idronecup2014/images/iDroneCup - Manual Processamento... · “ardrone2_XXXXX” (em definições de wifi do PC) João L. Vilaça

João L. Vilaça 4

Licenciatura em Engenharia Eletrotécnica e de Computadores

Mestrado em Engenharia Eletrónica e de Computadores

• 1 bits -> 21=2 níveis [0 ou 1]

• 8 bits -> 28=256 níveis [0…255]

A dimensão da imagem é igual número_de_colunas_em_x x número_de_linhas_em_y.

O início da imagem está localizado no pixel (0,0), que se encontra no topo esquerdo da

imagem.

3. Espaços de cor

Define a informação como a cor é representada em cada pixel da imagem. O formato da

imagem adquirida do Drone é o RGB (Red, Green, Blue), mas para uma análise de cor o espaço

de cor mais indicado é o HSV (Hue, Saturation, Value).

Page 5: iDroneCup - Manual Processamento de Imagemweb.ipca.pt/idronecup2014/images/iDroneCup - Manual Processamento... · “ardrone2_XXXXX” (em definições de wifi do PC) João L. Vilaça

João L. Vilaça 5

Licenciatura em Engenharia Eletrotécnica e de Computadores

Mestrado em Engenharia Eletrónica e de Computadores

4.1 RGB

RGB é a abreviatura do sistema de cores aditivas formado por Vermelho (Red), Verde (Green)

e Azul (Blue).

4.2HSV

HSV é um sistema de cores formadas pelas componentes hue (matiz), saturation (saturação) e

value (valor).

• Matiz (tonalidade): Verifica o tipo de cor, abrangendo todas as cores do espectro,

desde o vermelho até o violeta. Atinge valores de 0 a 360, mas para algumas

aplicações, esse valor é normalizado de 0 a 100%, no caso das bibliotecas emgu, está

normalizado de 0-255.

• Saturação: Também chamado de "pureza". Quanto menor esse valor, mais

acinzentada aparecerá a imagem. Quanto maior o valor, mais "pura" será a imagem.

Atinge valores de 0 a 100%, no caso das bibliotecas emgu, está normalizado de 0-255.

Page 6: iDroneCup - Manual Processamento de Imagemweb.ipca.pt/idronecup2014/images/iDroneCup - Manual Processamento... · “ardrone2_XXXXX” (em definições de wifi do PC) João L. Vilaça

João L. Vilaça 6

Licenciatura em Engenharia Eletrotécnica e de Computadores

Mestrado em Engenharia Eletrónica e de Computadores

• Valor (brilho): Define o brilho da cor. Atinge valores de 0 a 100%, no caso das

bibliotecas emgu, está normalizado de 0-255.

O HSV também é conhecido como HSB (hue, saturation e brightness — matiz, saturação e

brilho, respetivamente).

4.3 GRAY

É um sistema onde cada pixel é representado por apenas um canal. A imagem é representada

por tons de cinza, onde o valor 0 representa o preto e o valor 255 representa o branco (para

imagens com profundidade de 8 bits). As restantes tonalidades de cinza encontram-se

compreendidas entre estes dois valores.

4.3 Função EMGU que permite converter do espaço cor RGB para o HSV

public Image< TOtherColor, TOtherDepth > Convert <TOtherColor, TOtherDepth>()

0 255

Page 7: iDroneCup - Manual Processamento de Imagemweb.ipca.pt/idronecup2014/images/iDroneCup - Manual Processamento... · “ardrone2_XXXXX” (em definições de wifi do PC) João L. Vilaça

João L. Vilaça 7

Licenciatura em Engenharia Eletrotécnica e de Computadores

Mestrado em Engenharia Eletrónica e de Computadores

Converte a imagem actual para uma nova imagem com o espaço de cor (TOtherColor) e

número de bits (TOtherDepth) especificados.

Exemplo:

ImagemHSV = ImagemRGB.Convert<Hsv, Byte>();

ImagemGray = ImagemRGB.Convert<Gray, Byte>();

4. Câmaras Drone

4.1 Câmara Frontal Dimensão: 640 x 380

Número de canais: 3

Espaço de cor: RGB

Profundidade: 8 bits [0-255]

Sistema de eixos:

y x

(0,0)

Page 8: iDroneCup - Manual Processamento de Imagemweb.ipca.pt/idronecup2014/images/iDroneCup - Manual Processamento... · “ardrone2_XXXXX” (em definições de wifi do PC) João L. Vilaça

João L. Vilaça 8

Licenciatura em Engenharia Eletrotécnica e de Computadores

Mestrado em Engenharia Eletrónica e de Computadores

4.2 Câmara Inferior Dimensão: 640 x 380

Número de canais: 3

Espaço de cor: RGB

Profundidade: 8 bits [0-255]

Sistema de eixos:

x

y

(0,0)

Page 9: iDroneCup - Manual Processamento de Imagemweb.ipca.pt/idronecup2014/images/iDroneCup - Manual Processamento... · “ardrone2_XXXXX” (em definições de wifi do PC) João L. Vilaça

João L. Vilaça 9

Licenciatura em Engenharia Eletrotécnica e de Computadores

Mestrado em Engenharia Eletrónica e de Computadores

5. Programa para calibração de cor

Esta aplicação permite, no espaço de cor HSV, determinar os parâmetros das componentes H,

S e V, que permitem selecionar uma determinada cor. Está implementada no projeto

iDroneCalibraCor.

Instruções de utilização:

1. Antes de executar o programa: Ligar PC à rede wifi disponibilizada pelo drone

“ardrone2_XXXXX” (em definições de wifi do PC)

Page 10: iDroneCup - Manual Processamento de Imagemweb.ipca.pt/idronecup2014/images/iDroneCup - Manual Processamento... · “ardrone2_XXXXX” (em definições de wifi do PC) João L. Vilaça

João L. Vilaça 10

Licenciatura em Engenharia Eletrotécnica e de Computadores

Mestrado em Engenharia Eletrónica e de Computadores

2. Carregar no botão “Drone CAM”

3. Ativar a opção “Iniciar captura”

Nas duas janelas de cima, deverá ter aparecido, no lado esquerdo a imagem original

capturada da câmara do drone, e no lado direito, o resultado do processamento de

imagem, onde irá depois aparecer apenas a cor selecionada (para já deverá está a

preto)

4. Selecionar a câmara do drone que pretende utilizar, ao clicar no botão “mudar CAM”,

a aplicação comuta entre a câmara INFERIOR e a camara FRONTAL do Drone.

Note que a seleção de uma cor numa câmara, poderá não ter, os mesmos parâmetros

que a mesma cor selecionada para a outra câmara.

5. Selecionar uma determinada cor. Pode selecionar uma cor a partir da seleção

individual de qualquer uma das componentes do espaço de cores HSV, da combinação

de duas dessas componentes, ou de todas. Para isso, deve ativar a componente H, S ou

V, e selecionar nos comandos que se encontram ao lado, o intervalo de valores que

pretende visualizar na imagem processada para aquela componente do espaço HSV.

6. Se clicar sobre o ciclo de cores que aparece na imagem “Espaço de cores HSV” é

atualizado automaticamente o valor (inferior ou superior) na componente H da cor

selecionada (ajuda para definir o intervalo inicial, que depois deve ser ajustado com

mais precisão nos comandos da componente H.

Page 11: iDroneCup - Manual Processamento de Imagemweb.ipca.pt/idronecup2014/images/iDroneCup - Manual Processamento... · “ardrone2_XXXXX” (em definições de wifi do PC) João L. Vilaça

João L. Vilaça 11

Licenciatura em Engenharia Eletrotécnica e de Computadores

Mestrado em Engenharia Eletrónica e de Computadores

7. Se selecionar a opção “inverter”, esta vai considerar um intervalo de valores inverso ao

que foi selecionado.

8. Se selecionar a opção “bloquear”, esta vai bloquear a dimensão do intervalo. Assim,

por exemplo, se aumentar o limite inferior, a aplicação, automaticamente aumenta o

limite superior, mantendo o intervalo constante.

9. Se selecionar a opção “Tracking” o software vai desenhar uma caixa de limites (a

vermelho) na imagem original, de todos objetos a branco na imagem processada (com

a cor selecionada). Para limitar os objetos selecionados, pode definir qual a área

mínima (em pixéis) do objeto, ai apenas serão desenhados os objetos com uma área

superior à estabelecida.

6. Biblioteca base

Emgu CV é uma biblioteca que encapsula as funções da biblioteca openCV, e permite a sua

utilização em múltiplas plataformas.

Na presente competição será utilizada a plataforma .NET e será utilizada a linguagem C#.

Links uteis com documentação sobre as funções da biblioteca:

http://www.emgu.com/wiki/files/2.3.0/document/Index.html

Links uteis com alguns tutoriais:

http://www.emgu.com/wiki/index.php/Tutorial

Page 12: iDroneCup - Manual Processamento de Imagemweb.ipca.pt/idronecup2014/images/iDroneCup - Manual Processamento... · “ardrone2_XXXXX” (em definições de wifi do PC) João L. Vilaça

João L. Vilaça 12

Licenciatura em Engenharia Eletrotécnica e de Computadores

Mestrado em Engenharia Eletrónica e de Computadores

7. Classe ProcessamentoImagem.cs

Conjunto de funções de alto nível criada para a competição.

//Esta função deteta uma bounding box (rectangulo) das regiões a branco na imagem com

uma área superior areaV e guarda o centroide do objeto na variável Obj_centroid

//img - imagem binaria com objetos a branco e restante imagem a preto;

//showRecOnImg - imagem a cores onde vai ser desenhado o resultado da função (retângulo)

//areaV - área mínima em pixéis dos objetos a identificar

public void Deteccao_Rectangulo(Image<Gray, Byte> img, Image<Bgr, Byte> showRecOnImg,

double areaV)

//Esta função deteta uma linha representada com uma cor escura numa imagem, guarda o

centroide da linha na variável Obj_centroid e desenha o centroide e o contorno da linha

selecionada sobre a imagem original

//img - imagem a cores BGR onde será detetada a linha e desenhada a informação do

centroide e contorno da linha

public Image<Gray, Byte> Deteccao_Linha(Image<Bgr, Byte> img)

//Esta função seleciona uma cor no espaço HSV de devolve uma imagem com a cor

selecionada a branco e o resto da imagem a preto

//imFrame - imagem a cores onde se quer selecionar a gama de cores;

//L1,H1 - limite inferior e superior do canal H;

//L2,H2 - limite inferior e superior do canal S;

//L3,H3 - limite inferior e superior do canal V;

//H - 1 ativa gama no canal H, 0 não considera o canal;

//S - 1 ativa gama no canal S, 0 não considera o canal;

//V - 1 ativa gama no canal V,0 não considera o canal;

//I – 1 para inverter a imagem – os pixéis branco passam a preto e os pixéis a preto passam a

branco

public Image<Gray, Byte> HsvROI(Image<Bgr, Byte> imgFame, int L1, int H1, int L2, int H2, int

L3, int H3, bool H, bool S, bool V, bool I)

//função que delimita a gama de um dos canais de uma imagem do tipo HSV e devolve uma

imagem com esse resultado

//hsvImage - imagem HSV

//Lo - limite inferior do intervalo da gama

//Hi - limite superior do intervalo da gama

//con - canal 0->H, 1->S, 2->V

private Image<Gray, Byte> inRangeImage(Image<Hsv, Byte> hsvImage, int Lo, int Hi, int con)