Segmentação Respiratória Automática

A segmentação manual dos pulmões leva cerca de 10 minutos e requer alguma habilidade para obter o mesmo resultado de alta qualidade da segmentação automática. A segmentação automática leva cerca de 15 segundos.


Supus que, sem uma rede neural, seria possível obter uma precisão não superior a 70%. Sugeri também que as operações morfológicas estão apenas preparando uma imagem para algoritmos mais complexos. Porém, como resultado do processamento das pelo menos algumas 40 amostras tomográficas disponíveis, o algoritmo selecionou os pulmões sem erros e, após o teste nos cinco primeiros casos, o algoritmo não sofreu alterações significativas e, desde a primeira aplicação, funcionou corretamente nos 35 estudos restantes sem alterações. configurações.


As redes neurais também têm um sinal de menos - para o treinamento, você precisa de centenas de amostras de treinamento dos pulmões, que deverão ser rotuladas manualmente.



Conteúdo



A estrutura do sistema respiratório


O sistema respiratório inclui as vias aéreas e os pulmões. Aloque o trato respiratório superior e inferior. O ponto de separação entre o trato respiratório inferior e superior é o ponto de interseção dos canais respiratório e alimentar. Tudo acima da laringe é a seção superior e o restante é mais baixo.


Listamos os órgãos respiratórios:
Cavidade nasal : - nariz, seios maxilares, etc.
A faringe é o canal através do qual a comida e o ar viajam.
Laringe - responsável pela formação da voz. Localizado ao nível das vértebras cervicais C4-C6.
Traquéia - um tubo que liga a laringe e os brônquios.
Os brônquios são os canais respiratórios, a maioria dos quais estão localizados dentro dos pulmões.
Os pulmões são o principal órgão respiratório.



Escala de Hounsfield


Godfrey Hounsfield é um engenheiro elétrico britânico que, juntamente com o teórico americano Allan Cormack, desenvolveu tomografia computadorizada, pela qual recebeu o Prêmio Nobel em 1979.



Escala de Hounsfield - Uma escala quantitativa de densidade de raios-x que é medida em unidades de Hounsfield, indicada por HU.


A densidade de raios-x é calculada com base no coeficiente de atenuação da substância, ou seja, o grau de diminuição do poder de radiação ao passar por essa substância.


A densidade de raios X é calculada pela fórmula:


$$ display $$ {μ_ {X} -μ_ {water} \ over μ_ {water} -μ_ {air}} \ times 1000 $$ display $$


onde μX,μwater,μair - coeficientes de atenuação linear para a substância medida, água e ar.


A densidade de raios X é negativa porque a densidade zero de raios X corresponde à água. Isso significa que todas as substâncias através das quais as ondas de raios-X passam com uma diminuição menor no poder de radiação do que através da água (por exemplo, tecido pulmonar, ar) terão uma densidade negativa de raios-x.


A seguir, são apresentadas as densidades aproximadas dos raios X para vários tecidos:


  • Ar: -1000 HU.
  • Órgãos respiratórios: -950 a -300 HU.
  • Sangue (sem contraste vascular): 0 a 100 HU.
  • Ossos: 100 a 1000 HU.


Links da Wikipedia: Escala de Hounsfield , Godfrey Hounsfield , coeficiente de atenuação .


Morfologia matemática


O principal lugar entre os algoritmos selecionados neste artigo é ocupado por operações morfológicas.


No campo da visão computacional, as operações morfológicas chamam um grupo de algoritmos para transformar a forma dos objetos. Na maioria das vezes, operações morfológicas são aplicadas a imagens binarizadas, onde os voxels dos objetos correspondem a unidades e o vazio a zeros.


As principais operações morfológicas incluem:


Dilatação morfológica (dilatação, expansão) - adicionando novos voxels a todos os voxels de borda dos objetos. Ou seja, ao longo de todos os voxels de limite, é feita uma passagem com um núcleo com uma determinada forma (bola, cubo, cruz, etc.). Essa operação é frequentemente usada para conectar muitos objetos adjacentes em um único objeto.


Erosão morfológica (erosão, erosão) - a destruição de todos os voxels na borda dos objetos. Esta operação é o oposto da dilatação. Esta operação é útil para remover ruídos na forma de muitos objetos pequenos interconectados. No entanto, esse método de remoção de ruído deve ser usado apenas se o objeto segmentado tiver uma espessura significativamente maior que o raio de erosão.


O fechamento morfológico é uma dilatação seguida de erosão. É usado para fechar aberturas dentro de objetos e combinar objetos adjacentes.


Abertura morfológica (abertura) é erosão seguida de dilatação. É usado para remover objetos pequenos de ruído e dividir objetos em vários objetos.



Algoritmo de Lee e Compressão RLE


Para isolar objetos em um volume de voxel binarizado, o algoritmo de Lee é usado. Esse algoritmo foi originalmente inventado para encontrar o caminho mais curto. Mas nós o usamos para selecionar e mover objetos de uma matriz tridimensional de voxels para outra. Sua essência é o movimento paralelo em todas as direções possíveis desde o ponto de partida. Para o caso tridimensional, são possíveis 26 ou 6 direções de movimento de um determinado voxel (se o voxel não estiver localizado na borda da imagem).


Para otimizar a velocidade, usamos o algoritmo de codificação de execução. Sua essência está no fato de que as seqüências de uns e zeros são substituídas por um dígito igual ao número de elementos na sequência. Por exemplo, a cadeia "00110111" pode ser substituída como: "2; 2; 1; 3". Isso reduz o número de acessos à memória.



Links da Wikipedia: algoritmo de Lee , algoritmo RLE .


Conversão de volume base de limite


Usando um tomógrafo, foram obtidos dados sobre a densidade de raios-x em cada ponto do espaço. Os voxels do ar têm uma densidade de raios X que varia de -1100 a -900 HU, e os voxels dos órgãos respiratórios de -900 a -300 HU. Portanto, podemos remover todos os voxels em excesso com uma densidade de raios-X maior que -300 HU. Como resultado, obtemos um volume de voxel binarizado contendo apenas órgãos respiratórios e ar.



Recorte de ar externo


Para isolar o ar interno do corpo, removeremos todos os objetos adjacentes aos cantos da cena do voxel. Assim, nos livramos do ar externo.



No entanto, nem sempre o ar dentro da mesa do tomógrafo será removido, pois pode não ter conexão com os cantos da cena.



Portanto, examinaremos não apenas os cantos, mas também todos os voxels localizados em qualquer um dos planos de fronteira da cena. Mas, como resultado, por alguma razão, os próprios pulmões também foram embora. Acontece que a traquéia também teve uma conexão com o plano superior da cena.



É necessário excluir o plano superior da zona de digitalização. Existem também estudos em que os pulmões não foram completamente capturados e o plano inferior está associado aos pulmões. Portanto, se desejado, o plano inferior também pode ser excluído.



Mas esse método atua apenas em estudos de mama. No caso de capturar o volume total do corpo, uma conexão entre o ar interno e o externo através da cavidade nasal aparecerá na imagem. Portanto, é necessário aplicar erosão morfológica para separar o ar interno e o externo.



Após a aplicação da erosão, podemos voltar ao método de segmentação do ar externo obtido anteriormente, com base na proximidade dos planos laterais da cena.



Isolando o ar externo, é possível retirá-lo imediatamente do volume total de ar e pulmões e obter o ar interno do corpo e dos pulmões. Mas há um problema. Após a erosão, algumas informações sobre o ar externo foram perdidas. Para restaurá-lo, aplicamos a dilatação do ar externo.



Em seguida, subtraímos o ar externo de todos os órgãos respiratórios e do ar e obtemos o ar interno e os órgãos respiratórios.




Destacando o objeto máximo em volume


Em seguida, selecionamos os órgãos respiratórios como o maior objeto em volume. Órgãos respiratórios são um objeto separado. Não há conexão entre os pulmões e o ar no interior do trato gastrointestinal.



Vale ressaltar que a escolha correta do limiar de densidade de raios-X na etapa inicial da transformação do limiar é importante. Caso contrário, em alguns casos, pode não haver uma conexão entre os dois pulmões como resultado de baixa resolução. Por exemplo, se você considerar que os voxels dos órgãos respiratórios têm uma densidade de raios X de -500 HU ou menos, no caso abaixo, a alocação dos órgãos respiratórios como o maior objeto em volume levará a um erro, uma vez que não há conexão entre os dois pulmões. Portanto, o limite deve ser aumentado para -300 HU.



Fechamento vascular dentro dos pulmões


Para capturar os vasos dentro dos pulmões, usamos fechamento morfológico, ou seja, dilatação seguida de erosão com o mesmo raio. A densidade de raios-x dos vasos é de cerca de -100..100 HU.



Vasos sanguíneos grandes não fecharam. Mas isso não é necessário. O objetivo desta operação era destruir muitos pequenos orifícios no interior dos pulmões para facilitar a segmentação pulmonar.


Algoritmo de Segmentação Respiratória


Como resultado, obtemos o seguinte algoritmo de segmentação de órgãos respiratórios:


  1. Conversão do limiar do volume base pelo limiar <-300 HU.
  2. Erosão morfológica com um raio de 3 mm para a separação do ar externo e interno.
  3. A alocação de ar externo com base na proximidade dos planos laterais de fronteira da cena voxel.
  4. Dilatação morfológica do ar externo para restaurar as informações perdidas como resultado da erosão.
  5. Subtração do ar externo de todos os órgãos do ar e respiratórios para obter ar e órgãos respiratórios internos.
  6. Destacando o objeto máximo em volume.
  7. Fechamento morfológico dos vasos sanguíneos no interior dos pulmões.


Implementação do algoritmo no MATLAB


Método GetRespiratoryOrgans


%      (    ) %      . % V =         . % cr =    . % ci =      (, 3  %      3   . function RO = getRespiratoryOrgans(V,cr,ci) %     %   < -300 HU. AL=~imbinarize(V,-300); %    3   %     . SE=strel('sphere',3); EAL=imerode(AL,SE); %       %      . EA=getExternalAir(EAL); %      %      . DEA=EA; for i=1:4 DEA=imdilate(DEA,SE); DEA=DEA&AL; end %         %        . IAL=AL-DEA; %     . RO=getMaxObject(IAL); %     . RO=closeVoxelVolume(RO,3,2); 

Método GetExternalAir


 %  ,       % (  ,     %    ). % EAL =      . function EA = getExternalAir(EAL) %  bwlabeln  :   %    ,  –    .. V=bwlabeln(EAL); %    ,    %     . R=regionprops3(V,'BoundingBox','VoxelList'); n=height(R); %  3-D      . s=size(EAL); EA=zeros(s,'logical'); %        %    ,   . for i=1:n %   x  y,    %  . x0=R(i,1).BoundingBox(1); y0=R(i,1).BoundingBox(2); x1=x0+R(i,1).BoundingBox(4); y1=y0+R(i,1).BoundingBox(5); %        %  ,       %   EA. if (x0 < 1 || x1 > s(1)-1 || y0 < 1 || y1 > s(2)-1) %        %  : [[x1 y1 z1][x2 y2 z3] … [xn yn zn]]. mat=cell2mat(R(i,2).VoxelList); ms=size(mat); %  ,    . for j=1:ms(1) x=mat(j,2); y=mat(j,1); z=mat(j,3); EA(x,y,z)=1; end end end 

Método GetMaxObject


 %        "V". % O =    . % m =    . function [O,m] = getMaxObject(V) %  . V=bwlabeln(V); %        %  . R=regionprops3(V,'Volume','VoxelList'); %      . v=R(:,1).Volume; [m,i]=max(v); %  3-D      % . s=size(V); O=zeros(s,'logical'); %       . mat=cell2mat(R(i,2).VoxelList); ms=size(mat); for j=1:ms(1) x=mat(j,2); y=mat(j,1); z=mat(j,3); O(x,y,z)=1; end 

O código-fonte pode ser baixado aqui .


Conclusão


Os seguintes artigos estão planejados:


  1. segmentação da traquéia e brônquios;
  2. segmentação dos pulmões;
  3. segmentação dos lobos dos pulmões.

Algoritmos como:


  1. transformação à distância;
  2. transformação de vizinho mais próximo (transformação de vizinho mais próximo, também conhecida como transformação de recurso);
  3. cálculo de autovalores da matriz de Hessian para a segmentação de objetos 3D planos;
  4. segmentação pela segmentação da bacia hidrográfica.

Source: https://habr.com/ru/post/pt458268/


All Articles