İçindekiler:
- 1. Adım: Normal Bir Beynin ve Moyamoya'dan Etkilenmiş Bir Beynin MRI ve MRA Taramalarını Bulun
- 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
- 3. Adım: Çok Ölçekli Filtreleme ile Yoğunluklu Görüntüdeki Uzatılmış Yapıları Geliştirin
- Adım 4: 2B Medyan Filtresi çalıştırın
- Adım 5: Görüntüyü Maskeleyin
- 6. Adım: İstatistiksel Test için MRA Taramalarını Seçin
- Adım 7: İstatistiksel Teste Hazırlanmakta Olan Kan Damarları Alanının Hesaplanması
- 8. Adım: Bağımsız Örnekler T-testi çalıştırın
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
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
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
İş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
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
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
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 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 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
İ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:
Excel, Arduino ve İşleme ile FK (İleri Kinematik): 8 Adım
FK (İleri Kinematik) Excel, Arduino ve İşleme ile: İleri Kinematik, 3B uzayda End Effector değerlerini (x, y, z) bulmak için kullanılır
Görüntü İşleme Tabanlı Yangın Tanıma ve Söndürme Sistemi: 3 Adım
Görüntü İşleme Tabanlı Yangın Tanıma ve Söndürme Sistemi : Merhaba arkadaşlar Arduino kullanan görüntü işleme tabanlı yangın algılama ve söndürme sistemidir
Raspberry Pi ile Görüntü İşleme: OpenCV Kurulumu ve Görüntü Renk Ayrımı: 4 Adım
Raspberry Pi ile Görüntü İşleme: OpenCV Kurulumu ve Görüntü Renk Ayrımı: Bu gönderi, takip edilecek birkaç görüntü işleme eğitiminden ilkidir. Bir görüntüyü oluşturan piksellere daha yakından bakıyoruz, Raspberry Pi'ye OpenCV yüklemeyi öğreniyoruz ve ayrıca bir görüntü yakalamak için test komut dosyaları yazıyoruz ve ayrıca c
Gesture Hawk: Görüntü İşleme Tabanlı Arayüz Kullanan El Hareketi Kontrollü Robot: 13 Adım (Resimlerle)
Gesture Hawk: Görüntü İşleme Tabanlı Arayüzü Kullanan El Hareketi Kontrollü Robot: Gesture Hawk, TechEvince 4.0'da basit bir görüntü işleme tabanlı insan-makine arayüzü olarak sergilendi. Faydası, farklı ortamlarda çalışan robotik arabayı kontrol etmek için bir eldiven dışında hiçbir ek sensör veya giyilebilir cihaz gerekmemesi gerçeğinde yatmaktadır
Kuantimetrik Görüntü İşleme: 5 Adım
Kuantimetrik Görüntü İşleme: (Yukarıdaki şekil, mevcut görüntü işleme yönteminin niceliksel görüntü işleme ile karşılaştırmasını göstermektedir. İyileştirilmiş sonuca dikkat edin. Sağ üstteki görüntü, resimlerin böyle bir şeyi ölçtüğüne dair yanlış varsayımdan kaynaklanan garip artefaktları gösteriyor