Herkese merhaba :)
Elimde 128*128 lik matrislerden olusan toplam 48 ayri acilardan alinmis 3 boyutlu bir veri dosyasi var ( 48 projection li CT goruntuleri). Tum veri tek bir dosyada tutuluyor (dosya.a00 da)
Yazdigim kod asagidadir
Clear;
Fid=fopen('dosya.a00');
[BB]=fread(fid,[128,128], 'single');
Status=fclose(fid);
Rwithnoise=imnoise(uint16(BB), 'poisson'); //poisson noise ekledi
Figure,imshow(Rwithnoise, []) //noise ekli goruntuyu goster
Bu kod sonucunda yalnizca ilk 128e 128lik goruntuyu gorebiliyorum. Ama istedigim 48 tane poisson noise ekli goruntu elde etmek ve tum goruntulerini gostermek. For donguduyle yapilacagini dusundum ama bir turlu kuramadim. nasil yapabilirim?
Simdiden yardimlariniz icin tesekkurler,
Iyi calismalar.
Merhaba,
Yazdığınız kod 128x128lik bir matris okuyor dosyadan ve bunu BB isimli değişkene atıyor. Sizin bir görüntünüz de 128×128 boyutunda olduğu için sadece ilk görüntüyü almış oluyorsunuz. Dosya formatının nasıl düzenlendiğini söyleyebilir misiniz? 128x128x48 lik bir üç boyutlu matris varsa aşağıdaki kod işinize yarayabilir. Bu döngüyle her bir görüntüyü tek tek yüklemiş oluyorsunuz.
for ii=1:48 [BB]=fread(fid, [128 128 ii], 'single'); ... end
Öncelikle cevabınız için teşekkürler.
bu şekilde hata alıyor maalesef. 128×128 lik bu 48 tane görüntüyü oluşturmak için bir simulasyon programı kullanıyorum. Sonuçta bana tek bir dosya üretiyor. Görüntüleme programlarında bu dosyayı import ederken projection sayısı sorduğundan 48 yazıp direkt tüm görüntüleri açabiliyorum ama benim matlab de açmam lazım. Aslında dosya formatının nasıl düzenlendiğiyle ilgili hiçbir bilgi yok. Yalnızca tüm görüntülerin bu dosyada olduğunu biliyorum.
[BB]=fread(fid,[128,128], ‘single’);
şu komut yerine, dosyadaki tüm verileri aynı anda okuyabileceğim bir matlab komutu var mıdır acaba?
Yalnızca fread(fid) derseniz bütün dosyayı okuyacaktır sanırım. Buradan sonra, Workspace penceresinde BB'nin kaç boyutlu bir matris olduğuna bakın, oradan alacağınız bilgi verinin nasıl düzenlendiği hakkında fikir verebilir.