İçindekiler:

Moyamoya Görüntü İşleme: 8 Adım
Moyamoya Görüntü İşleme: 8 Adım
Anonim
Moyamoya Görüntü İşleme
Moyamoya Görüntü İşleme

Moyamoya, "duman pufu", beynin tabanındaki bir alan olan bazal ganglionlardaki arterlerin tıkanmasının neden olduğu nadir bir hastalıktır. Hastalık çoğunlukla çocukları etkileyen ilerleyici bir serebrovasküler hastalıktır. Moyamoya'nın semptomları, arterlerin ilerleyici daralmasının bir sonucu olarak ilk felç, sürekli mini vuruşlar, kas zayıflığı, felç veya nöbetleri içerir. Tedavi edilmezse moyamoya konuşma, duyusal bozukluk ve hasarlı bilinç sorunlarına neden olur. Projemizde, etkilenen alanı bulmak için görüntü içindeki gürültüyü azaltmak için çeşitli filtreler kullanarak bir MRI veya MRA görüntüsünü önceden işlemek için MATLAB'ı kullanacağız. Ayrıca, etkilenen alanları daha kesin bir şekilde bulmak için bir özellik geliştirmesi kullanacağız. Ayrıca, moyamoya'dan etkilenen bir beyinle karşılaştırıldığında normal bir beyindeki kan damarı miktarı arasında önemli bir fark olup olmadığını belirlemek için bağımsız bir örnekler t-testi yapacağız.

1. Adım: Normal Bir Beynin ve Moyamoya'dan Etkilenmiş Bir Beynin MRI ve MRA Taramalarını Bulun

Normal Bir Beynin ve Moyamoya'dan Etkilenmiş Bir Beynin MRI ve MRA Taramalarını Bulun
Normal Bir Beynin ve Moyamoya'dan Etkilenmiş Bir Beynin MRI ve MRA Taramalarını Bulun
Normal Bir Beynin ve Moyamoya'dan Etkilenmiş Bir Beynin MRI ve MRA Taramalarını Bulun
Normal Bir Beynin ve Moyamoya'dan Etkilenmiş Bir Beynin MRI ve MRA Taramalarını Bulun
Normal Bir Beynin ve Moyamoya'dan Etkilenmiş Bir Beynin MRI ve MRA Taramalarını Bulun
Normal Bir Beynin ve Moyamoya'dan Etkilenmiş Bir Beynin MRI ve MRA Taramalarını Bulun
Normal Bir Beynin ve Moyamoya'dan Etkilenmiş Bir Beynin MRI ve MRA Taramalarını Bulun
Normal Bir Beynin ve Moyamoya'dan Etkilenmiş Bir Beynin MRI ve MRA Taramalarını Bulun

Bu görüntüler, çevrimiçi bulduğumuz proje için kullandığımız taramalardır. Ortasında kan damarları bulunan iki görüntü MRA taramaları, diğer iki görüntü ise MRI taramalarıdır.

Aşağıdaki bağlantılar bu resimlerin bulunduğu yerlerdir:

static.cambridge.org/resource/id/urn:cambr…

static.cambridge.org/resource/id/urn:cambr…

Adım 2: Görüntüleri MATLAB'a Yükleyin ve Görüntüleri Göstermek İçin Bir Değişkene Görüntüleri Atayın

Görüntüleri MATLAB'a Yükleyin ve Görüntüleri Göstermek İçin Bir Değişkene Görüntüleri Atayın
Görüntüleri MATLAB'a Yükleyin ve Görüntüleri Göstermek İçin Bir Değişkene Görüntüleri Atayın

İşleme başlamak için, komut penceresini temizleyerek başlayın, zaten açık olabilecek tüm olası şekil ve grafikleri kapatın ve çalışma alanınızda zaten atanmış değişkenleri temizleyin.

Ardından, i = [1:2] komutunu kullanarak 1'den 2'ye kadar bir for döngüsü oluşturun.

Ardından, toplu yükleme için sprintf kullanarak döngü için kullanılan numaranın ardından dosya adıyla belirtilen dosyalardan görüntüleri okumak için imread(sprintf('filename%.filetype', i)) komutunu kullanarak MRA görüntülerini yükleyin ve atama bir değişkene dönüştürülür.

Ardından görüntüyü bir şekilde görüntülemek için imshow(I) komutunu kullanın.

Gri bir renk haritası atamak için colormap(gri) komutunu kullanın.

Rengi tamamen ortadan kaldırmak ve görüntüler için 3B matrisi 2B'ye dönüştürmek için rgb2gray(I) komutunu kullanın ve onu ayrı bir değişkene atayın.

Ardından daha önce belirtilen veya imread(sprintf('filename%.filetype', i)) komutunu kullanarak MRI görüntülerini yükleyin ve yeni bir değişkene atayın

MRI görüntüleri için kullanılan yeni değişkenle rgb2gray komutunu tekrarlayın.

Gerekirse, imresize(A, scale) komutunu kullanarak bir görüntüyü yeniden boyutlandırabilir ve ayrı bir değişkene atayabilirsiniz.

3. Adım: Çok Ölçekli Filtreleme ile Yoğunluklu Görüntüdeki Uzatılmış Yapıları Geliştirin

Çok Ölçekli Filtreleme ile Yoğunluklu Görüntüdeki Uzatılmış Yapıları İyileştirin
Çok Ölçekli Filtreleme ile Yoğunluklu Görüntüdeki Uzatılmış Yapıları İyileştirin

Yeni bir değişken kullanarak, görüntülerdeki boru şeklindeki yapıları geliştirmek için fibermetric(A) komutunu kullanın.

Önceki değişkenle, görüntülerin yoğunluğunu dönüştürerek histogram eşitlemelerini geliştirmek için histeq(B) komutunu kullanın ve bunu yeni bir değişkene atayın.

imhist(B) komutunu kullanarak histogramı görüntüleyin

Filtre için bir eşik oluşturmak üzere yeni bir değişken oluşturun. Bu durumda önceki değişkeni> 0.875 atayın, piksel yoğunluğunu 0.875 değeri altında filtreleyin

Ardından, yeni bir şekil oluşturun ve yeni filtrelenmiş görüntüyü görüntülemek için imshow(A) komutunu kullanın.

Adım 4: 2B Medyan Filtresi çalıştırın

2B Medyan Filtresi Çalıştırın
2B Medyan Filtresi Çalıştırın

medfilt2(A, [m n]) komutunu kullanarak, her çıktı pikselinin giriş görüntüsündeki ilgili pikselin etrafındaki mxn sınırındaki medyan değerini içerdiği bir 2D medyan filtresi çalıştırın.

Yeni bir şekil oluşturun ve medyan filtrelenmiş görüntüyü görüntülemek için imshow(A)'yı kullanın.

Adım 5: Görüntüyü Maskeleyin

Resmi Maskele
Resmi Maskele

Medyan filtrelenmiş görüntüyü kullanarak, görüntüdeki beyaz lekelerin sayısını saymak için [labeledImage, numberOfBlots] = bwlabel(A) komutunu kullanın.

Ardından, her bir lekenin veya kan damarının alanlarını hesaplamak için bölge props fonksiyon durumları = zoneprops(labeledImage, 'Area') kullanın.

Tüm alanları tek bir değişkene atayın

Ardından başka bir değişken kullanarak 50 pikseli aşan lekeleri sayın.

Ardından, [sortedAreas, sortedIndicies] = sort(Areas, 'descend') komutunu kullanarak 50 pikselin altındaki lekeleri azalan sırada sıralayın.

Ardından, başka bir değişken kullanarak, mantıksal 1 (true) veya mantıksal bir 0 (yanlış).

Önceki adımdaki değişkenle, doğru olan noktaları (değerler > 0) bulun ve ikili bir görüntü oluşturmak için mantıksal bir dizi oluşturun ve onu yeni bir değişkene atayın.

Yeni bir şekil oluşturun ve yeni ikili görüntüyü imshow(A) kullanın.

Ardından, impcomplement(A) komutunu kullanarak görüntüyü ters çevirin ve onu farklı bir değişkene atayın.

Maskelenmiş bir görüntü oluşturmak için resizeimage.*uint8(invertedimage) komutuyla yeni bir değişken kullanın.

Yeni bir şekil oluşturun ve maskelenmiş görüntüyü görüntülemek için imshow(A)'yı kullanın.

Kodun tamamını sonlandırmak için, for döngüsünün tamamını sonlandırmak için 'end' komutunu kullandığınızdan emin olun.

6. Adım: İstatistiksel Test için MRA Taramalarını Seçin

İstatistiksel Test için MRA Taramalarını Seçin
İstatistiksel Test için MRA Taramalarını Seçin
İstatistiksel Test için MRA Taramalarını Seçin
İstatistiksel Test için MRA Taramalarını Seçin
İstatistiksel Test için MRA Taramalarını Seçin
İstatistiksel Test için MRA Taramalarını Seçin

İstatistiksel teste hazırlanmak için bağımsız örnekler t testi için kullanılacak MRA taramalarını seçin. İki örneğimiz Moyamoya'dan etkilenen beyinler ve normal beyinler olacağından, her gruptan yeterli miktarda MRA taraması seçin.

Adım 7: İstatistiksel Teste Hazırlanmakta Olan Kan Damarları Alanının Hesaplanması

İstatistiksel Teste Hazırlanmakta Olan Kan Damarları Alanının Hesaplanması
İstatistiksel Teste Hazırlanmakta Olan Kan Damarları Alanının Hesaplanması

İstatistiksel test, MRA taramalarında gösterilen kan damarlarının uzunluğuna veya miktarına odaklanacaktır. Bu nedenle, karşılaştırmadan önce kan damarlarının alanını hesaplamalıyız.

Normal beyinlerin MRA'larını filtreleyerek ve kan damarlarının miktarını hesaplayarak başlayın. Bunu yapmak için bir for döngüsü çalıştırın. Üç görüntü olduğu için koşul i = [1:3] olacaktır.

İmread komutu ile imajı açın ve bir değişkene atayın.

Ardından, if, else komutuyla bir if/else ifadesi oluşturun. if ifadesi için size(A, 3)==3 komutunu kullanın; burada A, görüntüyü açmak için kullanılan değişkendir, dizinin üçüncü boyutu 3 olduğunda bir if ifadesi oluşturun. Ardından görüntüyü dönüştürün. 2D'ye dönüştürün ve rgb2gray(A) komutunu kullanarak renkten kurtulun ve onu yeni bir değişkene atayın. Resmi yeniden boyutlandırmak için imresize(A, [m n]) komutunu kullanın. Bu durumda, görüntüleri 1024 x 1024 matris olarak yeniden boyutlandırdık. Görüntünün boru şeklindeki yapılarını geliştirmek için fibermetrik komutu tekrar kullanın ve onu yeni bir değişkene atayın.

Aşağıdaki else ifadesi içindir. Görüntü bir 3B matris değilse, dönüştürmeyi atlamak istiyoruz. if ifadesiyle aynısını yapın, ancak rgb2gray(A) komutu olmadan.

0,15'ten büyük fibermetrik adımdaki değişkene eşit ayarlayarak yeni bir değişken oluşturun. Bu, görüntüyü 0.15'ten büyük yoğunluklar için eşikler.

Medyan filtre satırından imshow(I) satırına kadar komut satırının 4. ve 5. adımlarındaki kod satırlarını tekrarlayacağız. Ardından, kan damarlarını oluşturan tüm pikselleri toplamak ve onu ayrı bir değişkene atamak için sum(I(:)) komutunu kullanın. Yeni bir değişken NormalBloodVessels(i) olarak adlandırın ve onu sum(I(:)) komutundaki değişkene eşit olarak ayarlayın. Bu, verileri matrise ekler.

Döngüyü sonlandırın ve tekrarlayın, ancak Moyamoya'dan etkilenen beyinlerin MRA'ları için. Normal beyin MRA'ları ile karıştırmamak için sondaki değişkeni MoyaMoyaBloodVessels(i) olarak adlandırın.

8. Adım: Bağımsız Örnekler T-testi çalıştırın

Bağımsız Örnekler T-testi çalıştırın
Bağımsız Örnekler T-testi çalıştırın

İki bağımsız örneklem ve küçük bir popülasyon olduğundan bağımsız bir örneklem t testi yapın.

Normal beyinlerin MRA'larındaki kan damarı miktarının, Moyamoya'dan etkilenen beyinlerin MRA'larına önemli ölçüde eşit olup olmadığını belirlemek için bağımsız örnekler t-testini çalıştıran bir işlev oluşturun ve adlandırın.

disp('X') komutunu kullanarak test için ayarlanmış hipotezi görüntüleyin. İlk satırda, "İki örneklem t testi için hipotezler"i görüntüleyin. İkinci satırda, sıfır hipotezini belirtmek için "H0 = Normal bir beynin kan damarlarının miktarı, Moyamoya hastalığı olan bir beynin kan damarlarının miktarına eşittir" ifadesini görüntüleyin. Üçüncü satırda, "HA = Normal bir beynin kan damarlarının miktarı, Moyamoya hastalığı olan bir beynin kan damarlarının miktarına eşit değil" ifadesini gösterin. alternatif hipotezi belirtmek için.

%95 güven aralığı ve 3 örnek boyutu kullanarak, tinv([0.025 0.975], 2) komutunu kullanarak t puanını hesaplayın ve t değişkenine atayın. var(NormalBloodVessels) ve var(MoyaMoyaBloodVessels) komutunu kullanın ve her iki veri kümesinin varyanslarını hesaplamak için bunları değişkenlere atayın.

Varyansların eşite yakın olup olmadığını kontrol edin. Bunu if, else komutuyla bir if/else ifadesi oluşturarak yapın. if ifadesindeki koşul için A / B == [0.25:4] yazın; burada A, normal kan damarlarının varyansını açıklayan değişkendir ve B, Moyamoya kan damarlarının varyansını açıklayan değişkendir. 0.25 ve 4, varyansların eşit olup olmadığını belirlemek için genel bir tahminden gelir. Ardından, [h, p] = ttest2(A, B, 0.05, 'both', 'equal') ile iki örnek t testini çalıştırın, A ve B daha önce bahsedildiği gibi aynı değişkenlerdir. Else ifadesi için, varyansların eşit olmadığı durumda iki örnek t testi çalıştırmak için [h, p] = ttest2(A, B, 0.05, 'her ikisi, 'unequal') kullanın. if/else ifadesini sonlandırın. Bu, p'yi hesaplayacaktır.

p değerine dayalı bir sonuç görüntüleyecek bir if/else ifadesi oluşturun. if ifadesinin koşulu p > 0.05 olacaktır. p değeri 0,05'ten büyük olduğunda genellikle boş hipotezi reddetmeyi başaramadığımız için disp('X') komutunu kullanarak "p değeri 0,05'ten büyük olduğu için boş hipotezi reddedemeyiz" ve "göstermek için kullanın. Bu nedenle, normal bir beyindeki kan damarı miktarının Moyamoya hastalığı olan bir beyninkine eşit olduğunu reddedemeyiz." Else ifadesinde, p değeri 0,05'in altında olduğunda genellikle boş hipotezi reddettiğimiz için, disp('X') komutunu kullanarak "p değeri 0,05'ten küçük olduğu için boş hipotezi reddediyoruz" ve "göstermek için kullanın. Bu nedenle, normal bir beyindeki kan damarı miktarının Moyamoya hastalığı olan bir beyninkine eşit olmadığını reddedemeyiz." if/else ifadesini sonlandırın.

Önerilen: