Matlab ile dicom Formatını avi’ye Çevirme

Dönüştüreceğimiz dicom dosyasının  seçimi için ‘uigetdir‘ komutu kullanılabilir yada direkt dosya yolu verilebilir.

%diyalog penceresi açarak seçilen dosya yolunu döndürür
%DICOMDIR_path=uigetdir;
%info=dicominfo('DICOMDIR_path');
info=dicominfo('D:\...\...); %dosya yolu
I=dicomread(info);  %dicom formatlı görüntü alınır

Alınan dosyanın avi formatına dönüşümü için aşağıdaki kodlar yazılır.

videoAd='video';  %yeni oluşturulacak video adı belirlenir
%strcat ile avi'nin kaydedileceği konum ile video adı birleştirilir
obj=VideoWriter(strcat('D:\...\...\',videoAd),'Uncompressed AVI');
open(obj);
writeVideo(obj,I); %Videoyu obj dosyasına yazar
close(obj);

Video formatı ‘Uncompressed AVI’ olarak seçilir. İstenirse diğer kayıt formatlarının listesine VideoWriter.getProfiles();  komutu ile ulaşılabilir.

Dicom Dosyasından Frame Alma

Dicom dosyasından istenen frameleri almak için öncelikle görüntü üç boyutlu hale dönüştürülür. Ardından üçüncü boyuttan görüntünün istenen frame’i alınabilir. Alınan resmi bilgisayara kaydetmek için de ‘imwrite’ komutu kullanılabilir.

I=I(:,:,:);  %3-D ye dönüştürme
indis=20; % alınacak indis
imshow(I(:,:,indis));
resim=I(:,:,indis);
resimAd='resim';
imwrite(resim,strcat('D:\Kullanıcılar\lenovo\Desktop\görüntü\',resimAd));

Matlab ile Nesne Bulma ve Sayma

Matlabın içerisinde hazır bulunan coins.png resmindeki paraları sayalım.

%-- Resim bw formatına dönüştürülüp boşlukları doldurulur.Kenar çizgileri belirlenir --%

resim = imread('coins.png');
bwResim=im2bw(resim); %resim bitwise'a dönüştürülür
fillResim = imfill(bwResim,'holes'); %paraların içinde kalan siyah bölgeleri beyazlatır
figure; imshow(imread('coins.png'));
kenarlar= bwboundaries(fillResim); %paraların kenar bilgilerini alır,siyah beyaz geçiş noktalarını
text(10,10,strcat('\color{red}',num2str(length(kenarlar)),'\color{red} nesne bulundu'))
%length: çizilen daire sayısıdır
%text(x,y,'string'):x ve y koordinatlardır.string'te son resmin üzerine basılacak yazıdır

%-- Kenarlar resmin üzerine çizilir--%
hold on; %ekrana yeni şeyler çizdirilecekken eski ekranın silinmemsini sağlar

for k=1:length(kenarlar) %length satır-sütundan büyük olan sayıyı alır
boundary = kenarlar{k}; %noktaların x y koordinatlarını tutan 2 boyutlu matris
plot(boundary(:,2),boundary(:,1),'b','LineWidth',2);
end

kenarlı

[Bilgi Sayi]=bwlabel(fillResim);
%default 8,isteğe bağlı 4 connected ile 1 sayılarını 1,2.. şeklinde etiket atayarak %resimdeki nesne sayısını bulur.

%sayı=etiket sayısı,bilgi=etiketlenmiş matris
prop=regionprops(Bilgi,'Area','Centroid'); %matrisin iki elemanı oluşturuldu

%prop belirlenen region'ların merkez koordinatlarını ve alan bilgilerini
%tutar

%----Paraların boyutlarına göre 5 veya 10 cent olduğu resmi üzerine yazdırılır----%

total=0;
figure; imshow(imread('coins.png'));hold on
for n=1:size(prop,1) %prop matrisinin 1.boyutunun eleman sayısını belirtir=10
cent=prop(n).Centroid;
X=cent(1);Y=cent(2); %paranın merkez koordinatları
if prop(n).Area>2000
text(X-10,Y,'5 C')
total=total+5;
else
total=total+10;
text(X-10,Y,'10 C')
end
end
hold on
title(['Toplam: ',num2str(total),'cent']) ;

cent

Kaynak:http://www.elektrikport.com/teknik-kutuphane/matlab-ile-goruntu-isleme-uygulamasi-elektrikport-akademi/8434#ad-image-0