Índice:

Uso de limites de intensidade de escala de cinza variáveis para visualizar e identificar anormalidades em imagens de mamografia: 9 etapas
Uso de limites de intensidade de escala de cinza variáveis para visualizar e identificar anormalidades em imagens de mamografia: 9 etapas

Vídeo: Uso de limites de intensidade de escala de cinza variáveis para visualizar e identificar anormalidades em imagens de mamografia: 9 etapas

Vídeo: Uso de limites de intensidade de escala de cinza variáveis para visualizar e identificar anormalidades em imagens de mamografia: 9 etapas
Vídeo: Formação e qualidade da Imagem em Tomografia Computadorizada 2024, Novembro
Anonim
Uso de limites variáveis de intensidade de escala de cinza para visualizar e identificar anormalidades em imagens de mamografia
Uso de limites variáveis de intensidade de escala de cinza para visualizar e identificar anormalidades em imagens de mamografia

O objetivo deste projeto foi identificar e usar um parâmetro para processar imagens de mamografia em tons de cinza de várias classificações de tecido de fundo: Tecido adiposo, glandular gorduroso e tecido denso. Essa classificação é usada quando os radiologistas analisam mamografias e precisam considerar se a densidade do tecido irá obscurecer quaisquer anormalidades, como lesões ou tumores. Isso ocorre porque ambas as estruturas fisiológicas normais, como tecido glandular e tecido conjuntivo fibroso. e morfologias anormais, como calcificações e tumores, aparecerão muito brilhantes na mamografia, enquanto o tecido adiposo menos denso aparecerá preto. Portanto, foi apropriado programar um classificador que possa manipular os níveis de intensidade de pixel para melhor visualizar e identificar as massas.

Etapa 1: Organização de dados de mamografia

Organização de dados de mamografia
Organização de dados de mamografia

Uma das primeiras coisas que percebi que precisava lidar foi organizar os dados de uma forma muito clara, concisa e acessível. Estas são as variáveis que extraí da base de dados mini-MIAS de mamografias. Eu criei duas matrizes. Um contendo 4 colunas:

  1. Número da imagem:
  2. coordenada x de massa
  3. coordenada y de massa
  4. Raio de massa: (Isso definiu um tamanho aproximado para a massa

A segunda matriz continha informações de classificação:

  1. Tipo de tecido de fundo: gordo (F), glandular gorduroso (G), denso (D)
  2. Descrição da Massa: Bem definida (CIRC), espiculada (SPIC), outra mal definida (MISC) Distorção arquitetônica (ARCH), Assimetria (ASYM), Normal (NORM)
  3. Diagnósticos: Benigno (B), Maligno (M)

Como o objetivo deste projeto era determinar o melhor limite para cada tipo de tecido de fundo, nem todas as informações eram necessárias. No entanto, você pode expandir seu projeto para incluir análise de textura e testar seu classificador em relação às descrições de massa conhecidas.

Nota lateral: O banco de dados de onde obtive as imagens de mamografia diagnosticadas organizou as informações sobre cada mamografia em um arquivo de texto separado das imagens. Foi um tanto difícil para mim extrair os dados de um arquivo de texto e organizá-los em formatos de matriz, mas o link a seguir foi muito útil para descobrir tudo isso. Como alternativa, apenas ajuste o código que colei acima para seus propósitos.

Formato de arquivo de mamografia: mdb001 G CIRC B 535 425 197

mdb002 G CIRC B 522 280 69

Ajuda do TextScan: https://www.mathworks.com/help/matlab/ref/textsca…Mammogram Database:

Etapa 2: processamento de imagem

Processamento de imagem
Processamento de imagem

Bem, a segunda coisa que surgiu quando eu estava descobrindo como identificar massas foi que, para muitas mamografias anormais, eu não conseguia dizer visualmente onde a anormalidade estava ou quão grande ela era. Obviamente, como não sou um radiologista experiente, era de se esperar. No entanto, a maneira mais direta de encontrar anormalidades (de acordo com minhas longas pesquisas no Google) era observar as concentrações de áreas claras e escuras. Usei principalmente a função adapthisteq para aumentar o contraste da imagem e, em seguida, embinarizar para converter a imagem em uma imagem binária para experimentar diferentes níveis de limiar.

  1. adapthisteq: Esta função transforma os valores de intensidade de imagens em tons de cinza e rgb usando equalização de histograma adaptativa limitada por contraste. Em outras palavras, ele ajusta o histograma dos valores de intensidade para um tipo específico de distribuição. O link de matemática para esta função está anexado abaixo para leitura adicional.
  2. imbinarizar: cria uma imagem binária a partir de uma imagem em escala de cinza atribuindo todos os pixels acima de uma certa intensidade a 1s e os pixels abaixo desse valor a 0. Usei essa função para testar o limite ideal para reduzir o ruído do tecido de fundo.

Etapa 3: Código de Limiar

Código de Limiar
Código de Limiar

Um loop for é usado para binarizar a mamografia com limites variados. Para dar uma visão mais ampla, o loop for contém o código da Etapa 3 à Etapa 7. Assim, cada imagem binária será analisada quanto a anormalidades. Além disso, esse loop for está encerrado em outro loop for que importa uma nova imagem de mamografia do banco de dados a cada iteração.

Etapa 4: Encontrando Anormalidades para Cada Imagem Binária

Encontrando Anormalidades para Cada Imagem Binária
Encontrando Anormalidades para Cada Imagem Binária
Encontrando Anormalidades para Cada Imagem Binária
Encontrando Anormalidades para Cada Imagem Binária

Processei posteriormente as imagens binárias usando a função strel em conjunto com imopen para remover o ruído de fundo. A imagem binária da etapa anterior é invertida e filtrada usando a vizinhança definida por SE. Então usei bwlabel para rotular todas as áreas que tinham pelo menos 8 pixels conectados.

A função region props foi usada para encontrar as propriedades do centroide e da área de cada ponto identificado por bwlabel.

Em seguida, todos os pontos maiores do que 500 pixels foram identificados usando ismember. Os centróides para os pontos identificados foram plotados em uma imagem que exibia apenas os pontos com área maior que 500. Área identificada = ismember (etiquetada, indicies (SortAreas> 500)); Pontos = Identificados> 0;

Etapa 5: traçar a localização e o tamanho da massa diagnosticada para comparação visual

Traçando a localização e o tamanho da massa diagnosticada para comparação visual
Traçando a localização e o tamanho da massa diagnosticada para comparação visual
Traçando a localização e o tamanho da massa diagnosticada para comparação visual
Traçando a localização e o tamanho da massa diagnosticada para comparação visual
Traçando a localização e o tamanho da massa diagnosticada para comparação visual
Traçando a localização e o tamanho da massa diagnosticada para comparação visual

Queria ver se os pontos encontrados por bwlabel estavam corretos. Eu fiz isso de duas maneiras. Primeiro analisei a precisão do meu classificador fazendo uma comparação visual. Eu simplesmente plotei o tamanho real e a localização da anormalidade (círculo vermelho) e a localização determinada pelo código (x azul) na imagem da mamografia pré-processada. As seis imagens acima mostram os efeitos do aumento do valor do limite da escala de cinza.

Etapa 6: Implementando o Segundo Método de Comparação

Implementando o Segundo Método de Comparação
Implementando o Segundo Método de Comparação

A segunda maneira de testar o classificador e os valores de limite foi determinando se os locais encontrados pelo classificador estavam a uma certa distância das coordenadas de anomalia diagnosticadas. Salvei os limites para os quais pelo menos um dos pontos identificados estava dentro de 1,5 * r da anormalidade conhecida em um arquivo de texto separado chamado Dados de mamografia. O objetivo era encontrar o limite mínimo necessário para que meu classificador identificasse a anormalidade.

Etapa 7: Analisando os dados coletados

Analisando Dados Coletados
Analisando Dados Coletados
Analisando Dados Coletados
Analisando Dados Coletados

Eu executei o programa em todas as imagens anormais de mamografia e fiquei com um enorme arquivo de texto de dados. Para encontrar o melhor limite para cada tipo de tecido, organizei os dados por tipo de tecido e plotei um histograma dos valores de limite para cada tipo de tecido. O valor de limite adequado foi decidido com base em qual limite forneceu os resultados mais precisos para cada tipo de tecido. Salvei esses dados para fazer upload para meu classificador.

Etapa 8: Fazendo seu próprio classificador

Fazendo seu próprio classificador!
Fazendo seu próprio classificador!
Fazendo seu próprio classificador!
Fazendo seu próprio classificador!
Fazendo seu próprio classificador!
Fazendo seu próprio classificador!
Fazendo seu próprio classificador!
Fazendo seu próprio classificador!

Depois de encontrar os valores de limite mais adequados para cada tipo de tecido, editei meu código original para que um usuário insira o número da imagem e o tipo de tecido para escolher o limite para a imagem da mamografia. Em seguida, tracei a localização da mamografia diagnosticada com as localizações encontradas nas imagens originais da mamografia. Eu queria tornar isso mais divertido, então programei uma função para cortar uma região circular em torno do ROI. O usuário seria instruído a escolher um ponto central e vários pontos que melhor englobassem o ROI. Anexei os dois arquivos matlab aqui.

Etapa 9: melhorias? Alguma ideia?

Enquanto escrevia este instrutível, comecei a ver muitas melhorias que poderia fazer no classificador, como encontrar maneiras de distinguir entre diferentes tipos de massas identificadas com base na análise de textura ou melhorar meus testes de seção de precisão do SandBoxProject. Arquivo. Como este era um projeto com prazo, tive que parar em algum lugar, mas espero poder usar as habilidades de processamento de imagens que aprendi em outros aplicativos. Além disso, anexei o arquivo que foi usado para processar em lote todas as imagens de mamografia anormais.

Recomendado: