O objetivo deste trabalho é realizar a
segmentação de estruturas de dentes em imagens de MicroCT, usando
técnicas de segmentação por limiar e técnicas de segmentação por
textura.
Para tanto, você deverá desenvolver
um programa que lê a imagem e identifica as estruturas(dentina e canal) colorindo-as com cores distintas.
A cor escolhida para uma estrutura deve ser aplicada a todas as partes desta estrutura na imagem.
Além disto, o programa deverá informar a quantidade de pixels de cada estrutura.
Exemplos imagens a ser usadas são apresentadas a seguir. Clique no link abaixo da imagem para obtê-la com a resolução original.
Figura 1 - Exemplos de Imagens
O trabalho está dividido em três partes:
Parte 0:
Cada aluno deve realizar a segmentação manual de 5 imagens, colorindo, manualmente, as estruturas da seguinte forma:
- Dentina: verde - RGB: (0,255,0)
- Canal: vermelho - RGB: (255,0,0)
- Pinos: azul - RGB: (0,0,255)
- Fundo: preto - RGB: (0,0,0)
As imagens a seguir apresentam um exemplo de segmetnação manual de uma das imagens.
Figura 2 - Exemplo de Segmentação Manual
As imagens resultantes devem ser
disponibilizadas ao professor por meio de um link, que será distribuído
aos demais colegas da turma. Estas imagens servirão como ground truth, para os algoritmos de segmentação a serem implementados.
Para obter os dados, acesse este link: https://www.inf.pucrs.br/~pinho/CG-PPGCC/Trabalhos/T3-2020-1/Dados/
A relação apresentada a seguir define quais são as imagens a serem tratadas por cada aluno:
Aluno
|
Arquivo
|
FELIPE TASONIERO | Dados 1 |
HENRY EMANUEL LEAL CAGNINI | Dados 2 |
MARCELO PARAVISI | Dados 3 |
MARIANA GOMES DA FONTOURA | Dados 4 |
MARTIN MORE | Dados 5 |
MURILO REGIO | Dados 6 |
PATRICK GARCIA | Dados 7 |
RAFAEL GEISS | Dados 8 |
RICARDO LUIS PIEPER | Dados 9 |
WILLIAM RIZZI | Dados 10 |
Parte 1:
Esta
parte consiste na segmentação das estruturas dos dentes usando
algoritmos de segmentação por limiar. Antes de aplicar estes
algoritmos, o programa deve aplicar filtros na imagem a fim de pertimir
uma melhor segmentação.
O programa deverá usar o ground truth para avaliar o resultados de seus
algoritmos. A saída deve ser dada na forma de imagens que demonstrem
quais os verdadeiros positivos e falsos positivos e falsos negativos
das estruturas dentina e canal.
Parte 2:
Esta parte consiste na
segmentação das
estruturas dos dentes usando algoritmos de segmentação por análise de
texturas.
Devem ser tulizados dois métodos:
O programa deverá usar o ground truth para avaliar o resultados de seus algoritmos.
Para reduzir a resolução da imagens, divida-a em retalhos" retangulares de 16, 32 e 64 pixels de largura, classificando estes retalhos.
2. Matrizes de Co-ocorrência de Níveis de Cinza
As Matrizes de Co-ocorrência de Níveis de Cinza, do
inglês Gray Level Coocurrence Matrices (GLCMs), servem para descrever correlações entre pixels vizinhos de uma
imagem.
A ideia desta correlação é determinar a frequência com que duas
intensidades i e j ocorrem em pontos “vizinhos” de uma imagem.
No caso,
o conceito de vizinho é definido por uma distância em colunas (dx), e
em linhas (dy) entre dois pontos da imagem. Desta forma, para cada
distância definida por um vetor D=(dx,dy) é possível criar uma matriz
de N linhas e N colunas, sendo N o número de intensidades diferentes na
imagem. Esta matriz recebe o nome de Matriz de Co-Ocorrência, ou MCO.
A Figura 3 mostra o exemplo de uma imagem e três GLCMs, para as
distâncias D(1,0), D(0,1) e D(1,-1). Como a imagem tem 3 tons de cinza
distintos, a MCOs geradas têm 3 linhas e 3 colunas cada.
Figura 3 - Exemplos de MCO
Para transformar a MCO em uma matriz com valores entre 0 e 1, e assim
tratá-la como um mapa de probabilidades, cada elemento é dividido pela
soma ou pelo maior de todos os valores existente na MCO, gerando a
chamada MCO Normalizada. A Figura 4 a seguir mostra o resultado da
normalização das matrizes da Figura 3, usado o maior valor.
Figura 4 - Exemplos de MCO normalizadas
2.1 Descritores Estatísticos
A partir de uma MCO normalizada são gerados descritores estatísticos, conforme as seguintes fórmulas:
Nestas fórmulas, a expressão Pi,j é o valor da MCO na posição [i,j].
2.2 Preparação das imagens para o cálculo das MCOs
Note que em uma imagem real, como as fornecidas para este trabalho, os
tons de cinza podem variar no intervalo entre 0 e 255. Entretanto,
muitos destes tons não ocorrem de fato na imagem.
Com isto, as MCOs geradas terão muitas células contendo o valor 0,
o que irá degradar a capacidade descritiva das medidas estatísticas.
Para solucionar este problema, pode-se reduzir a quantidade de tons de
cinza das imagens simplesmente dividindo o valor do tom de cinza por
uma constante, como no código a seguir. Neste exemplo, a quantidade de
tons é reduzida de 255 para QTD_TONS, o que irá gerar uma MCO de
QTD_TONS linhas e QTD_TONS colunas.
for(x=0; x<Largura x++)
{
for(y=0; y< Altura; y++)
{
Cor[x][y] = Cor[x][y]/(255/QTD_TONS);
}
}
A nova imagem gerada deve ser, então, usada para a gerar as MCOs.
Entretanto, caso seja preciso exibir a nova imagem, é
aconselhavel aumentar o brilho dos pixels, pois a transformação
aplicada no código reduz os tons de cinza para tons muito escuros.
Este processo de aumento de do brilho pode ser feito da seguinte forma:
Na Figura 5 se pode observar o resultado da redução de tons de uma imagem para 4 tons, seguido do aumento de brilho da imagem.
Figura 5 - Exemplo de redução para 4 tons de cinza, seguido de aumento de brilho
2.3 Exercícios
- Prepare as imagens reduzindo a quantidade de tons de cinza para 32 ou 64;
- Divida a imagem em retalhos" retangulares de 16, 32 e 64 pixels de largura e gere as MCOs para estes retalhos;
- Exiba as MCOs, geradas, como imagens em tons de cinza, para os tecidos dentina e canal;
- Monte histogramas com os valores de cada um dos descritores estatísticos gerados a partir das MCOs, para os tecidos dentina e canal.
3. Matriz de Comprimento de Corrida
As Matrizes de Comprimento de Corrida (MCCs) identificam a
quantidade de vezes que uma determinada tonalidade se repete em uma
imagem, dada uma certa direção.
3.1 Descritores Estatísticos
Para obter atributos de uma MCC, use, por exemplo, as fórmulas que estão na tabela 1 do artigo Automatic characterization of fracture surfaces of AISI 304LN stainless steel using image texture analysis.
3.2 Exercícios
- Prepare as imagens reduzindo a quantidade de tons de cinza para 32 ou 64;
- Divida a imagem em retalhos" retangulares de 16, 32 e 64 pixels de largura e gere as MCCs para estes retalhos;
- Exiba as MCCs, geradas, como imagens em tons de cinza, para os tecidos dentina e canal;
- Monte histogramas com os valores de cada um dos descritores estatísticos gerados a partir das MCCs, para os tecidos dentina e canal.
4. Classificação dos Tecidos
Para testar o poder de classificação das métricas aqui descritas, gere arquivos de treino e teste, conforme estes exemplos e teste com este script.
Para rodar o script, utilize o seguinte comando:
python Classificador.py Treino.csv Teste.csv
FIM.