• Nenhum resultado encontrado

Descoberta e Rotulação de Mínimos Regionais

4.2 Análise Comparativa das Implementações

4.2.4 Descoberta e Rotulação de Mínimos Regionais

Em relação aos mínimos regionais, os algoritmos dividem-se em detectar por ordenamento dos pixels, na construção de caminhos de máxima inclinação, ou aplicar um algoritmo específico para isto. O último caso foge ao escopo deste trabalho, dada a variedade de algoritmos possíveis para rotulação de componentes conexos e detecção de mínimos regionais. No primeiro caso, a ordenação dos pixels é utilizada nas simulações de imersão, onde componentes conexos novos recebem seus rótulos definitivos assim que são descobertos, e estes são propagados a partir das bordas.

Todavia, ao construir caminhos entre os pixels e mínimos regionais, surgem, de forma geral, duas possibilidades, comumente associadas à forma de endereçamento e de rotulação dos caminhos utilizada. Em ambos os casos, parte-se do princípio de que sabe-se quais são os mínimos regionais, onde estes foram descobertos por serem componentes conexos sem pixels vizinhos de menor valor, ou seja, nenhum caminho é construído partindo destes. Assim, procede-se então atribuindo um rótulo

4.2 Análise Comparativa das Implementações 121

novo e propagando-o aos pixels vizinhos no componente conexo, ou selecionando-se um pixel como representante do mínimo regional, para onde os caminhos dos outros pixels passam a ser direcionados. Ao percorrer o caminho e encontrar este representante, seu rótulo será propagado ao caminho, que inclui os elementos restantes do mínimo.

De forma geral, pode-se dizer que a opção por rotular o mínimo regional em uma primeira etapa implica em mais eficiência computacional, pois o atravessamento dos caminhos até um rótulo não incluirá pixels já identificados como partes de mínimos regionais. Entretanto, dependendo do projeto do algoritmo, sendo baseado estritamente em grafos por exemplo, esta opção não é possível na etapa de construção destes, sendo necessário utilizar o representante como indicador do rótulo dos demais.

4.2.5

Estruturas de Dados

Uma parte importante das implementações de algoritmos de transformada watershed reside nas estruturas de dados utilizadas para controle de visitação dos pixels, rotulação e ordenação. Pode- se identificar quatro tipos de estruturas utilizadas: pilha (LIFO), fila (FIFO), fila de prioridade com desempate FIFO e conjuntos/listas. Foge do escopo deste trabalho um aprofundamento nas caracte- rísticas de cada estrutura, no entanto, deve-se considerar que o desempenho das suas operações de inserção e remoção é determinante para o desempenho geral do algoritmo que as utilizar.

A estrutura mais comum entre os algoritmos é a fila, utilizada majoritariamente para realizar a propagação das bordas para os pixels internos das zonas planas. Seu uso neste caso está associado à necessidade de propagação uniforme das bordas, garantido pela política FIFO, uma vez que inseridos todos os pixels de borda conhecidos, estes serão processados antes de qualquer pixel interno, inserido por algum pixel removido da fila. Intrinsecamente, o uso da fila é equivalente ao cálculo do custo lexicográfico.

O uso da fila de prioridade está ligado às técnicas de simulação de imersão, onde avalia-se os pixelspor ordem de nível de cinza, propagando seu rótulo para a vizinhança. A política FIFO garante que no desempate ocorra o mesmo comportamento da fila comentado acima, onde ocorre o cálculo intrínseco do custo lexicográfico, e a divisão das zonas planas de acordo com este. Uma forma simples de se visualizar a fila de prioridades FIFO é dada por Beucher e Meyer [11], onde se tem uma estrutura com N filas independentes, onde N é o número de níveis de cinza da imagem a ser analisada, com a inserção realizada na fila correspondente ao nível do pixel, e a remoção sempre realizada a partir do menor nível disponível. Outras implementações baseiam-se no conceito de árvores para organizar os elementos e otimizar seu desempenho. Estas, no entanto, necessitam de elementos adicionais na comparação para calcular o desempate com política FIFO.

O uso da estrutura de pilha é restrito a apenas um algoritmo, no entanto poderia ser expandido, substituindo o uso de filas onde estas servem apenas como estruturas de armazenamento. No entanto, no algoritmo de código de corrente, o uso da pilha caracteriza sua rotulação como uma busca em profundidade. Ao substituir, neste caso, a pilha por uma fila, o efeito do algoritmo seria de uma rotulação em largura, descaracterizando-o.

Assim como a pilha, o uso de conjuntos simples é restrito apenas ao algoritmo watershed cut, todavia poderia substituir filas no mesmo caso das pilhas citado acima. Conjuntos não implicam em ordem na inserção ou remoção de elementos, mas devem permitir acesso aleatório a seus elementos. No entanto, no algoritmo watershed cut esta propriedade - que pode acarretar em perda de desem- penho por requerir operações de busca aleatória na memória - não é utilizada, e assim, o conjunto

122 Análise Crítica dos Algoritmos

poderia ser substituído por outra estrutura mais simples, como uma pilha, onde o elemento a ser removido sempre tem sua posição em memória conhecida.

Além das estruturas citadas aqui, o armazenamento de grafos é recorrente nos algoritmos, optando- se geralmente por estruturas dinâmicas para estes, visto que matrizes de adjacência tornam-se in- viáveis devido às dimensões. Ocasionalmente também são utilizadas estruturas especiais, como na operação de ordenação por frequência sugerida para o algoritmo de imersão de Vincent e Soille [6].

Uma consideração válida a todas estruturas é referente ao gerenciamento de memória, dado o volume de dados trabalhados. Considerando-se que são geralmente armazenados nas estruturas os endereços dos pixels, e que uma imagem relativamente pequena pode fazer dezenas de milhares de operações de inserção e remoção, alocações e liberações de memória em estruturas totalmente dinâ- micas tornam-se muito custosas, dada a natureza destas operações. Entretanto, por não se conhecer previamente o tamanho máximo que as estruturas atingirão, não se pode utilizar abordagens completa- mente estáticas. Desta forma, abordagens híbridas são mais adequadas, por permitirem o crescimento das estruturas e por realizarem operações de alocação e liberação de memória para blocos maiores.

Documentos relacionados