Índice:
- Etapa 1: Encontre imagens de ressonância magnética e ressonância magnética de um cérebro normal e um cérebro afetado por Moyamoya
- Etapa 2: carregar imagens no MATLAB e atribuir imagens a uma variável para exibir imagens
- Etapa 3: aprimorar estruturas alongadas em imagem de intensidade com filtragem multiescala
- Etapa 4: execute um filtro mediano 2D
- Etapa 5: mascarar a imagem
- Etapa 6: Selecione as varreduras MRA para testes estatísticos
- Etapa 7: Calcular a área dos vasos sanguíneos na preparação para o teste estatístico
- Etapa 8: Executar um teste T de amostras independentes
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Moyamoya, "nuvem de fumaça", é uma doença rara causada pelo bloqueio das artérias nos gânglios da base, que é uma área na base do cérebro. A doença é uma doença cerebrovascular progressiva que afeta principalmente crianças. Os sintomas da moyamoya incluem um derrame inicial, mini-derrames constantes, fraqueza muscular, paralisia ou convulsões como resultado do estreitamento progressivo das artérias. Sem tratamento, moyamoya causará problemas de fala, deficiência sensorial e consciência prejudicada. Em nosso projeto, utilizaremos o MATLAB para pré-processar uma imagem de ressonância magnética ou ressonância magnética usando vários filtros para reduzir o ruído na imagem e localizar a área afetada. Além disso, usaremos um aprimoramento de recurso para localizar as áreas afetadas com mais precisão. Além disso, executaremos um teste t de amostras independentes para determinar se há uma diferença significativa entre a quantidade de vasos sanguíneos em um cérebro normal em comparação com um cérebro afetado por moyamoya.
Etapa 1: Encontre imagens de ressonância magnética e ressonância magnética de um cérebro normal e um cérebro afetado por Moyamoya
Essas imagens são os scans que usamos para o projeto que encontramos online. As duas imagens com os vasos sanguíneos localizados no meio são exames de ressonância magnética, enquanto as outras duas imagens são exames de ressonância magnética.
Os links a seguir são onde essas imagens são encontradas:
static.cambridge.org/resource/id/urn:cambr…
static.cambridge.org/resource/id/urn:cambr…
Etapa 2: carregar imagens no MATLAB e atribuir imagens a uma variável para exibir imagens
Para iniciar o processo, comece limpando a janela de comando, feche todas as figuras e gráficos possíveis que podem já estar abertos e limpe as variáveis já atribuídas em sua área de trabalho.
Depois, crie um loop for de 1 a 2 usando o comando i = [1: 2]
Depois, carregue as imagens MRA usando o comando imread (sprintf ('filename%.filetype', i)) para ler as imagens dos arquivos especificados pelo nome do arquivo seguido pelo número usado para o loop usando sprintf para carregamento em lote e atribuição para uma variável.
Então, para exibir a imagem em uma figura, use o comando imshow (I).
Para atribuir um mapa de cores cinza, use o comando mapa de cores (cinza).
Para eliminar completamente a cor e converter a matriz 3D das imagens em 2D, use o comando rgb2gray (I) e atribua-o a uma variável separada.
Em seguida, carregue as imagens de ressonância magnética usando o comando indicado anteriormente ou imread (sprintf ('filename%.filetype', i)) e atribua-o a uma nova variável
Repita o comando rgb2gray com a nova variável usada para as imagens de ressonância magnética.
Se necessário, você pode redimensionar uma imagem usando o comando imresize (A, escala) e atribuí-la a uma variável separada.
Etapa 3: aprimorar estruturas alongadas em imagem de intensidade com filtragem multiescala
Usando uma nova variável, use o comando fibreometria (A) para realçar as estruturas tubulares nas imagens
Com a variável anterior, use o comando histeq (B) para aprimorar as equalizações do histograma, transformando a intensidade das imagens e atribuindo-a a uma nova variável.
Exiba o histograma usando o comando imhist (B)
Crie uma nova variável para criar um limite para o filtro. Neste caso, atribua a variável anterior> 0,875, filtrando a intensidade do pixel sob o valor de 0,875
Depois, crie uma nova figura e use o comando imshow (A) para exibir a nova imagem filtrada.
Etapa 4: execute um filtro mediano 2D
Usando o comando medfilt2 (A, [m n]), execute um filtro de mediana 2D, onde cada pixel de saída contém o valor mediano no limite mxn em torno do respectivo pixel na imagem de entrada.
Crie uma nova figura e use imshow (A) para exibir a imagem filtrada mediana.
Etapa 5: mascarar a imagem
Usando a imagem filtrada mediana, use o comando [labelImage, numberOfBlots] = bwlabel (A) para contar o número de manchas brancas na imagem
Em seguida, use a função region props states = regionprops (rotulada Image, 'Area') para calcular as áreas de cada mancha ou vaso sanguíneo
Atribuir todas as áreas em uma variável
Em seguida, usando outra variável, conte o número de manchas que excedem 50 pixels
Depois, classifique quaisquer manchas que estejam abaixo de 50 pixels em ordem decrescente usando o comando [SortAreas, SortIndicies] = sort (Areas, 'descend')
Em seguida, usando outra variável, use o comando ismember (LabelImage, SortIndicies (1: numberToExtract)) para retornar uma matriz com elementos de LabelImage encontrados em SortIndicies do número 1 ao número de vasos sanguíneos para retornar um 1 lógico (verdadeiro) ou um 0 lógico (falso).
Com a variável da etapa anterior, encontre os pontos que são verdadeiros (valores> 0) e crie uma matriz lógica para fazer uma imagem binária e atribuí-la a uma nova variável.
Crie uma nova figura e use imshow (A) a nova imagem binária.
Em seguida, inverta a imagem usando o comando imcomplement (A) e atribua-a a uma variável diferente.
Para criar uma imagem mascarada, use uma nova variável com o comando resizedimage. * Uint8 (imagem invertida)
Crie uma nova figura e use imshow (A) para exibir a imagem mascarada.
Para terminar todo o código, certifique-se de usar o comando 'end' para terminar todo o loop for
Etapa 6: Selecione as varreduras MRA para testes estatísticos
Para se preparar para o teste estatístico, selecione as varreduras MRA que serão usadas para o teste t de amostras independentes. Como nossas duas amostras serão Moyamoya de cérebros afetados e cérebros normais, selecione uma quantidade decente de varreduras MRA de cada grupo.
Etapa 7: Calcular a área dos vasos sanguíneos na preparação para o teste estatístico
O teste estatístico se concentrará no comprimento ou quantidade de vasos sanguíneos mostrados nas varreduras de MRA. Portanto, devemos calcular a área dos vasos sanguíneos antes da comparação.
Comece filtrando os MRAs de cérebros normais e calculando a quantidade de vasos sanguíneos. Para fazer isso, execute um loop for. Como existem três imagens, a condição será i = [1: 3].
Abra a imagem com o comando imread e atribua-a a uma variável.
Em seguida, crie uma instrução if / else com o comando if, else. Para a instrução if, use o comando size (A, 3) == 3, onde A é a variável usada para abrir a imagem, para criar uma instrução if para quando a terceira dimensão da matriz for 3. Em seguida, converta a imagem para 2D e livre-se da cor usando o comando rgb2gray (A) e atribua-a a uma nova variável. Use o comando imresize (A, [m n]) para redimensionar a imagem. Nesse caso, redimensionamos as imagens para uma matriz de 1024 x 1024. Para aprimorar as estruturas tubulares da imagem, use o comando fibreometria novamente e atribua-o a uma nova variável.
O seguinte é para a instrução else. Se a imagem não for uma matriz 3D, queremos pular a conversão. Faça o mesmo que a instrução if, mas sem o comando rgb2gray (A).
Crie uma nova variável, definindo-a igual à variável do passo da fibra maior que 0,15. Isso limita a imagem para intensidades maiores que 0,15.
Repetiremos as linhas de código dos passos 4 e 5 do instrutível desde a linha mediana do filtro até a linha imshow (I). Depois, use o comando sum (I (:)) para somar todos os pixels que constituem os vasos sanguíneos e atribua-o a uma variável separada. Nomeie uma nova variável NormalBloodVessels (i) e defina-a igual à variável do comando sum (I (:)). Isso adiciona os dados à matriz.
Termine o loop e repita, mas para os MRAs de cérebros afetados por Moyamoya. Nomeie a variável no final MoyaMoyaBloodVessels (i) para não confundi-la com os MRAs cerebrais normais.
Etapa 8: Executar um teste T de amostras independentes
Como existem duas amostras independentes e uma pequena população, execute um teste t para amostras independentes.
Crie e nomeie uma função que execute um teste t de amostras independentes para determinar se a quantidade de vasos sanguíneos nos MRAs de cérebros normais é significativamente igual ou não à dos MRAs de cérebros afetados por Moyamoya.
Exiba o conjunto de hipóteses para o teste usando o comando disp ('X'). Na primeira linha, exiba "Hipóteses para o teste t de duas amostras". Na segunda linha, exiba "H0 = A quantidade de vasos sanguíneos de um cérebro normal é igual à quantidade de vasos sanguíneos de um cérebro com doença de Moyamoya", para afirmar a hipótese nula. Na terceira linha, exiba, "HA = A quantidade de vasos sanguíneos de um cérebro normal não é igual à quantidade de vasos sanguíneos de um cérebro com doença de Moyamoya." para expor a hipótese alternativa.
Usando um intervalo de confiança de 95% e um tamanho de amostra de 3, calcule o escore t usando o comando tinv ([0,025 0,975], 2) e atribua à variável t. Use os comandos var (NormalBloodVessels) e var (MoyaMoyaBloodVessels) e atribua-os a variáveis para calcular as variações de ambos os conjuntos de dados.
Verifique se as variâncias são próximas ou não. Faça isso criando uma instrução if / else com o comando if, else. Para a condição na instrução if, escreva A / B == [0,25: 4], onde A é a variável responsável pela variação dos vasos sanguíneos normais e B é a variável responsável pela variação dos vasos sanguíneos de Moyamoya. 0,25 e 4 vêm de uma estimativa geral para determinar se as variâncias são iguais ou não. Em seguida, execute o teste t de duas amostras com [h, p] = ttest2 (A, B, 0,05, 'ambos', 'igual'), com A e B sendo as mesmas variáveis mencionadas anteriormente. Para a instrução else, use [h, p] = ttest2 (A, B, 0,05, 'both', 'desiguais') para executar um teste t de duas amostras no caso em que as variâncias não são iguais. Encerre a instrução if / else. Isso calculará p.
Crie uma instrução if / else que exibirá uma conclusão com base no valor de p. A condição para a instrução if será p> 0,05. Como normalmente falhamos em rejeitar a hipótese nula quando o valor de p é maior que 0,05, use o comando disp ('X') para exibir "Como o valor p é maior que 0,05, falhamos em rejeitar a hipótese nula" e " Portanto, falhamos em rejeitar que a quantidade de vasos sanguíneos de um cérebro normal seja igual à de um cérebro com doença de Moyamoya. " Na instrução else, uma vez que normalmente rejeitamos a hipótese nula quando o valor de p está abaixo de 0,05, use o comando disp ('X') para exibir "Como o valor de p é menor que 0,05, rejeitamos a hipótese nula" e " Portanto, não rejeitamos que a quantidade de vasos sanguíneos de um cérebro normal não seja igual à de um cérebro com doença de Moyamoya. " Encerre a instrução if / else.