Esta etapa de processamento converte os aglomerados de pixels resultantes da bi- narização em polinômios do segundo grau que representam possíveis faixas ou fragmentos de faixas, no domínio do mundo (bird’s eye view). Estes polinômios são agrupados dentro de duas regiões de validação (RdV), esquerda e direita, resultando em um polinômio final para cada lado. Cada um dos polinômios finais recebe uma nota de confiabilidade que varia de acordo com a qualidade e quantidade da informação visual usada na sua constru- ção. O algoritmo proposto apresenta duas inovações, são elas: a etapa de conexão entre fragmentos adjacentes é feita com o auxílio de polinômios de segundo grau; e quando hou- ver mudança brusca de direção (𝑑𝑥/𝑑𝑦) em uma linha gerada a partir de um aglomerado de pixels, a linha é dividida no ponto de mudança de direção pois entende-se que não se trata de uma condição normal.
3.2.3.1 Construção das cadeias conectadas por 8
Após o processamento dos pixels, o resultado obtido é uma imagem binária con- forme mostrado na Figura 29-a, onde os pixels classificados como pertencentes à faixa aparecem em preto (pixels ativos). Este pixels são agrupados com seus vizinhos para formarem cadeias conectadas por 8. O processamento é feito dentro de duas regiões de validação (RdV), uma para a esquerda e outra para direita, linha a linha, iniciando de baixo para cima. Cada cadeia conectada tem a sua linha média calculada (esqueleto) e a informação armazenada em um vetor de pontos [y, x(y)], chamado de fragmento. O resultado são dois conjuntos de fragmentos, um associado à faixa esquerda e outro à faixa direita, conforme Figura 29-b.
As RdVs estão centralizadas de acordo com o estado atual do modelo que descreve a estrada e acompanha sua curvatura. O valor máximo de curvatura da RdV é estabelecido pelo limite visual da câmera (campo de visão) onde a informação visual de uma faixa começa a ser perdida. Considerando que ao aproximar-se de uma curva acentuada o veículo esteja em velocidade baixa, é aceitável que a informação visual considerada esteja à distância de até 15m (metade do alcance do sistema de visão). Considerando-se também uma largura de pista de 3,0m e os parâmetros da câmera utilizados no carro protótipo, isso resultaria em uma curvatura máxima 0,065 rad/m (R = 15,8m). A largura inicial da RdV (região próxima do veículo) é de 1/3 da largura total da imagem, reduzindo linearmente até a largura da região final (região distante do veículo) que é de 1/9 da largura total da imagem.
A Figura 27-a mostra uma condição onde parte do meio fio está dentro da RdV direita e, como seu brilho é mais claro que os arredores, ele é classificado como uma faixa. Na Seção 3.2.4, será apresentado o algoritmo de construção da melhor representação da faixa, aproveitando a informação de uma linha adicional paralela, como por exemplo o
Capítulo 3. Direção Autônoma Baseada em seguimento de Marcadores de Pista 64
(a) Imagem Binaria
(b) Fragmentos encontrados
Figura 29 – Construção dos fragmentos de faixa.
meio fio, para melhorar a reconstrução da faixa. O problema é que o trecho de meio fio em questão corresponde a uma entrada de ponto de ônibus, caracterizada por uma "quebra"de direção acentuada. Se fosse usado um agrupamento (clustering) de pixels por conexão por 8, como em (BROGGI et al., 1999), o resultado seria um fragmento com características tão diferentes da esperada (segundo o modelo), que ele seria inteiramente descartado no processo de reconstrução da faixa.
Para evitar esse problema, foi proposto um filtro para detectar esta condição, que se baseia na análise do valor absoluto da derivada segunda (𝜕2𝑥
𝜕𝑦2) para todos os pontos 𝑦𝑖
de cada fragmento gerado, segundo o teste definido por: |𝑥𝑖+6− 2𝑥𝑖+ 𝑥𝑖−6| > 9. O valor
de limiar 9 foi encontrado com base nos testes com vídeo gravado, descrito na Seção3.5.1. Quando o resultado da comparação for verdadeiro, como indicado na Figura29-b, um ponto de "quebra"é inserido, criando dois novos fragmentos independentes. Em (CHOI et al., 2012) este problema foi resolvido usando-se RANSAC para tirar os pontos outliers do cálculo. Esse método produz bons resultados, testando-se diversas hipérboles ajustadas a partir um subconjunto de dados retirados aleatoriamente do conjunto principal (CHOI; KIM; YU, 1997). Em cada teste é contado a quantidade de inliers, por um critério de erro, e o ajuste que apresentar o maior número, é usado como solução. A necessidade se realizar vários ciclos de ajuste, e verificação do erro, torna esse algoritmo mais pesado do que o proposto aqui.
3.2.3.2 Projeção Perspectiva e transformação em polinômios
Cada fragmento tem seus pontos mapeados da referência da imagem da câmera para a referência do mundo (𝑥, 𝑦) ↦→ (𝑋, 𝑍), usando projeção perspectiva inversa (IPM),
Capítulo 3. Direção Autônoma Baseada em seguimento de Marcadores de Pista 65
conforme as Equações 3.6 e 3.5. A transformação IPM projeta os pontos da imagem no plano da estrada à frente do veículo, assumindo um modelo de estrada plana. Diferente da abordagem proposta em (BROGGI et al., 1999) onde a projeção IPM é feita sobre todos os pontos da imagem monocromática, neste caso a transformação é feita somente sobre um conjunto reduzido de pixels e, portanto, gasta-se menos tempo. A projeção é feita pelas expressões
𝑍 = −𝐻𝑐𝑎𝑚 𝑦 tan 𝛼 + 1 𝑦 − tan 𝛼 , (3.5) 𝑋 = 𝐻𝑐𝑎𝑚𝑥 √ tan2𝛼 + 1 𝑦 − tan 𝛼 , (3.6)
onde: 𝐻𝑐𝑎𝑚 é a altura de montagem da câmera em relação ao plano da estrada; 𝑦 = (𝑦 −
𝑦0)/𝐷𝑓 𝑜𝑐 é o valor de 𝑦 normalizado em relação à distância focal da câmera e centralizado
no eixo óptico; 𝑥 = (𝑥 − 𝑥0)/𝐷𝑓 𝑜𝑐 é o valor de 𝑥 normalizado em relação à distância focal
da câmera e centralizado no eixo óptico; e 𝛼 é o ângulo de inclinação do eixo focal da câmera para baixo em relação à linha do horizonte.
A transformação de cada fragmento gera um novo vetor de pontos, denominado fragmento mapeado, mostrado na Figura 30. Os fragmentos mapeados são então trans- formados em polinômios para acelerar o processo de conexão entre fragmentos, detalhado na seção seguinte. O algoritmo proposto nesse trabalho funciona da seguinte forma:
∙ Se houver apenas um ponto, ele é descartado; ∙ Se houver dois pontos, calcula-se a reta.
∙ Se houver três ou mais pontos, calcula-se um polinômio de segundo grau que con- tenha os dois pontos da extremidade e um ponto próximo do centro do intervalo.
A Figura 30mostra o caso da transformação em polinômio de um fragmento com três ou mais pontos. Devido à característica não linear da transformação 𝑦 ↦→ 𝑍, os incrementos de 𝑍 são não lineares. Para acelerar o algoritmo, o ponto central escolhido é o ponto imediatamente acima do centro. Uma vez que se tenha os três pontos definidos (𝑃1, 𝑃2 e 𝑃3), o cálculo dos coeficientes do polinômio é rápido e direto. Os coeficientes de cada polinômio e seu intervalo de validade (𝑍𝑖𝑛𝑖 e 𝑍𝑒𝑛𝑑) também são armazenados na
estrutura de dados criada para esse propósito.
A Figura31mostra o resultado final após o mapeamento e construção dos polinô- mios a partir dos fragmentos mostrados na Figura29-b. Em vermelho estão os polinômios associados aos fragmentos capturados dentro da RdV esquerda e em azul os da RdV di- reita. A "quebra"do fragmento associado ao meio fio, discutido na seção anterior, resultou na construção dos polinômios 3 e 4 em azul.
Capítulo 3. Direção Autônoma Baseada em seguimento de Marcadores de Pista 66
Figura 30 – Mapeamento de um fragmento e transformação para polinômio.
Figura 31 – Visão da perspectiva inversa dos fragmentos.