Professional Documents
Culture Documents
Görüntülerin Bölütlenmesi
Avtive Contour (Snakes) modeli, bir görüntüdeki objelerin kenarlarını tespit etmek ve objeleri
bölütlemek için kullanılan bir yapıdır. Basitçe açıklamak gerekirse görüntüdeki objenin etrafını
çevreleyen bir şeridi oluşturan noktalar kademeli olarak objeye doğru yaklaşırlar ve obje kenarlarına
gelindiğinde bu işlem sona erer. Böylece obje kenarları tespit edilmiş olur (Şekil 1).
Şekil 1
Bu yazıda MATLAB’de bu işlemi gerçekleştirmek için kullanılan activecontour fonksiyonu
kullanılarak bu metodun nasıl uygulandığı anlatılmıştır.
Bu fonksiyon şu şekilde çağrılır:
bw = activecontour(A,maske,n,metot);
A = imread('coins.png');
subplot(1,2,1)
imshow(A)
title('Orjinal Görüntü');
maske = zeros(size(A));
maske(25:end-25,25:end-25) = 1;
subplot(1,2,2)
imshow(maske)
title('Active Contour Başlangıç Konumu');
Şekil 2
Görüntüyü varsayılan metot olan ‘Chan-Vese’ ile iterasyon sayısını 300 olarak belirleyerek
bölütleyelim ve bölütlenmiş görüntüyü gösterelim (Şekil 3).
bw = activecontour(A,maske,300);
figure, imshow(bw);
title('Bölütlenmiş Görüntü, Chan-Vese, 300 iterasyon ile');
Aynı işlemi iterasyon sayısını belirtmeden (varsayılan olarak 100 alınacaktır) gerçekleştirdiğimizde
elde edeceğimiz sonuç çok farklı olacaktır (Şekil 3).
bw = activecontour(A,maske);
figure, imshow(bw);
title('Bölütlenmiş Görüntü, Chan-Vese, 100 iterasyon ile');
Şekil 3
Aynı görüntüyü Edge metodu ile iterasyon sayısını 300 olarak belirleyerek bölütleyelim ve
bölütlenmiş görüntüyü gösterelim (Şekil 4)
bw = activecontour(A,maske,300,’edge’);
figure, imshow(bw);
title('Bölütlenmiş Görüntü, Edge, 300 iterasyon ile');
Şekil 4
Görüldüğü gibi görüntü bölütlemede metot seçimi ve iterasyon sayısında sabit bir kural bulunmayıp
bu parametreler görüntünün özelliklerini göre seçilmelidir. Örneğin Edge metodu içbükey hatlara
sahip objelerin kenarlarını ortaya çıkarmak için elverişli olmayabilir. Aşağıdaki örnekte hem Edge
metodu hem de Chan-Vese metodu iç bükey hatlara sahip olan ve olmayan iki farklı obje üzerine
uygulanmış ve sonuçları gösterilmiştir (Şekil 5).
A = imread('sample-image-1.jpg');
A = rgb2gray(A);
subplot(4,2,1)
imshow(A)
title('Orjinal Görüntü (A)');
maskeA = zeros(size(A));
maskeA(35:170,45:210) = 1;
subplot(4,2,3)
imshow(maskeA)
title('Active Contour Başlangıç Konumu (A)');
bwA_edge = activecontour(A,maskeA,300,'edge');
bwA_chan = activecontour(A,maskeA,300,'Chan-Vese');
subplot(4,2,5)
imshow(bwA_edge)
title(sprintf('%s\n%s','Bölütlenmiş Görüntü','Edge metodu, 300 iterasyon ile (A)'));
subplot(4,2,7)
imshow(bwA_chan)
title(sprintf('%s\n%s','Bölütlenmiş Görüntü','Chan-Vese metodu, 300 iterasyon ile (A)
'));
B = imread('sample-image-2.jpg');
B = rgb2gray(B);
subplot(4,2,2)
imshow(B)
title('Orjinal Görüntü (B)');
maskeB = zeros(size(B));
maskeB(35:170,45:210) = 1;
subplot(4,2,4)
imshow(maskeB)
title('Active Contour Başlangıç Konumu (B)');
bwB_edge = activecontour(B,maskeB,300,'edge');
bwB_chan = activecontour(B,maskeB,300,'Chan-Vese');
subplot(4,2,6)
imshow(bwB_edge)
title(sprintf('%s\n%s','Bölütlenmiş Görüntü','Edge metodu, 300 iterasyon ile (B)'));
subplot(4,2,8)
imshow(bwB_chan)
title(sprintf('%s\n%s','Bölütlenmiş Görüntü','Chan-Vese metodu, 300 iterasyon ile (B)
'));
Şekil 5
Görüntünün ve objelerin özelliklerine göre uygun metodu seçmek kadar uygun maskeyi belirlemek
de önemlidir. Özellikle Edge metodunda şeridin noktaları dışardan içeriye doğru hareket ettiği için
belirlenecek olan maske sınırlarının objenin dışında yer alması ile birlikte objeye olabilecek en yakın
mesafede yerleştirilmesi daha hızlı ve doğru sonuçlar elde edilmesinde yararlı olacaktır.
Active Contour modelinin teorik alt yapısı ve MATLAB’de kullanımıyla ilgili daha fazla ayrıntıya
aşağıdaki kaynaklardan ulaşılabilir.
Bu yazıdaki çalışmalar MATLAB R2013a sürümü ile gerçekleştirilmiştir. Kullandığınız sürüme bağlı
olarak bazı fonksiyonlar çalışmayabilir ya da kullanımı farklı olabilir.