quarta-feira, 11 de março de 2015

Teoria de W-operadores - Operações entre imagens

Teoria de W-operadores - Operações entre imagens

\[ \newcommand{\E}[0]{\mathbb{E}} \newcommand{\Z}[0]{\mathbb{Z}} \newcommand{\L}[0]{\mathcal{L}} \newcommand{\P}[0]{\mathcal{P}} \]

Imagens podem ser interpretadas como reticulados e operações entre imagens como operações entre reticulados. Neste texto procuro apresentar a relação os diversos aspectos de teoria de reticulados apresentados anteriormente e o processamento de imagens digitais. Em especial, mostrarei que o operador intervalo produz resultados visualmente intuitivos e como ele pode ser composto para produzir resultados mais complexos.

Imagens como elementos de reticulados

Dados um domínio \(\E \subset \Z^2\) e um intervalo \(K = [0, \dots, k]\), uma imagem em \(k+1\) níveis de cinza pode ser interpretada como um elemento \( I \in Fun[\E, K]\). Em outras palavras, \(I\) atribui para cada ponto do domínio um nível de cinza.

O conjunto \(Fun[\E, K]\) é um reticulado com a operação \(\preccurlyeq\) definida abaixo.

\[ f \preccurlyeq g \Leftrightarrow f(x) \leq g(x) \forall x \in \E \]

De maneira equivalente, uma imagem binária \(B \in Fun[\E, [0,1]]\) também pode ser interpretada como um subconjunto de \(B' \subseteq \E\), onde \(p \in B' \Leftrightarrow B(p) = 1\). Seguindo a interpretação de conjuntos, o reticulado \((\P(\E), \subseteq)\) das imagens binárias é formado pelo conjunto de todos subconjuntos de \(\E\), \(\P(\E)\), e pela relação de inclusão usual em conjuntos \(\subseteq\).

Note que a noção de ordem (parcial) entre imagens é fundamental para a interpretação de imagens como reticulados.

Muitas vezes é interessante selecionar um pequeno recorte da imagem, selecionando os pixels que pertencem à vizinhança, chamada de janela, de um pixel. Estas imagens são chamadas de imagens-janela e são elementos em \(Fun[W, K]\), onde \(W \subset \Z^2\) é um conjunto de pontos que define a vizinhança considerada. A imagem janela \(I_z^{(W)}\) obtida ao centralizar a janela \(W\) no pixel \(z \in \Z^2\) na imagem \(I\) é dada por

\[ I^{(W)}_z(p) = I(z + p) \forall p \in W.\]

Processamento de imagens como uma operação de reticulados

Um operador de imagens é uma função que transforma uma imagem em outra imagem diferente. Logo, um operador \(\Psi\) é um elemento de \(Fun[ Fun[\E, K], Fun[\E, K] ]\) e é tanto uma função entre reticulados quanto um elemento no reticulado dos operadores. Um classe de especial interesse entre os operadores de imagens é a classe dos \(W-\)operadores.

Um operador \(\Psi\) é u \(W-\)operador se ele possui as duas seguintes propriedades:

  1. invariante à translação: \(\Psi(t(I, p)) = t(\Psi(I), p)\), onde \(t(I, p)\) representa a translação da imagem \(I\) por \(p \in \Z^2\);
  2. localmente definido: existe uma janela \(W \in \Z^2\) tal que \(\Psi(I)(p) = \Psi(I_p^{(W)}), \forall I \in Fun[\E, K], p \in \Z^2\).

Todo \(W-\)operador \(\Psi\) pode ser unicamente caracterizado por uma função \(\psi \in Fun[ Fun[W, K], K]\), de maneira que

\[ \Psi(I)(p) = \psi(I_z^{(W)}) \forall I \in Fun[\E, L], p \in \Z^2.\]

Como \(\psi\) é um operador entre um reticulado (\(Fun[W, K]\)) e uma cadeia (\(K\)), \(\psi\) pode ser expresso utilizando a decomposição canônica:

\[\psi(I)(p) = \sum_{y=0}^m \vee \{ \lambda[A,B](I_p^{(W)} : [A,B] \in \textbf{B}_\psi(k) \}.\]

Lembrando que o operador \(\lambda[A,B] \in Fun[ Fun[W, K], \{0, 1\}]\) tem a seguinte forma:

\[ \lambda_{A,B}(I) = \begin{cases} 1 \textrm{, if } I \in [A,B] \\ 0 \textrm{, otherwise. } \end{cases} \]

Por um lado, o operador de imagens \(\Psi\), não importa tão complexo ele seja, pode ser decomposto em uma série de operadores de imagens fundamentais. Por outro lado, qualquer operação de imagens pode ser desenvolvida ou aprendida se for possível determinar quais intervalos devem ser usados para representar o operador.

O operador intervalo em imagens

Nesta seção mostrarei como utilizar operadores intervalo para construir um operador que detecta bordas em imagens binárias como a imagem abaixo.

O operador intervalo é parametrizado por dois extremos \(A\) e \(B\). Todos os pontos cuja imagem janela contem o primeiro e está contida no segundo extremo terão como saída um pixel branco. Para identificar os cantos superiores direitos podemos utilizar os seguintes intervalos:

De maneira similar, os seguintes intervalos podem ser utilizados para detectar os extremos verticais esquerdos das formas:

O mesmo raciocínio pode ser aplicado para os outros cantos e extremos verticais e horizontais, resultando no seguinte conjunto de intervalos:

Veja abaixo o resultado da união dos operadores intervalo acima na imagem de exemplo.

Note que este conjunto de intervalos não é capaz de detectar todas as bordas diagonais, pois elas possuem uma variação maior que as bordas em 90 graus.


Nenhum comentário:

Postar um comentário