Image Processing, Plane Project

Kategori: MATLAB , 11 Ağustos 2019 , JanFranco


Bu projemizde havadan çekilmiş iki uçak resmindeki farkı bulacağız. İlk resimde elimizde belirli bir sayıda uçak park halinde, ikinci resimde bazı uçaklar yerinde değil. Yerini terk eden uçakları tespit edeceğiz. Resimleri alalım:


plane1 = imread('img1.jpg');
plane2 = imread('img2.jpg');
figure,imshow(plane1);
figure,imshow(plane2);

plane project

plane project
Resimleri aldık. Şimdi iki resmi birbirinden çıkaralım:


difference = imabsdiff(plane1, plane2);
figure,imshow(difference);

plane project
Resmi temizleyelim, küçük objeleri silelim. Boyutu 30 pikselden küçük objeleri bwareaopen fonksiyonu ile yok edebiliriz:


bwDifference = difference > 20;
clear_bwDifference = bwareaopen(bwDifference, 30);

plane project
Uçakların içinde boşluklar mevcut. strel() fonksiyonu ile 3x3 boyutunda kare bir kernel oluşturalım ve imdilate() fonksiyonu ile dilation işlemini resim üzzerinde gerçekleştirelim:


se = strel('square', 3);
mClear_bwDifference = imdilate(clear_bwDifference, se);
Dilation işleminde kernel resim üzerinde slide edilir. Kernelin içinde 1 değerinde piksel mevcutsa, kernelin olduğu kısımdaki tüm pikseller 1 değerine çevrilir. Objeleri kalınlaştırmak için kullanırız. Daha önce yaptığımız gibi objeleri etiketleyelim ve regionprops() fonksiyonu ile önemli bilgileri alalım:


[boundaries, numOfObjects] = bwlabel(mClear_bwDifference);
stats = regionprops(boundaries, 'all');
centers = [stats.Centroid];
x = centers(1:2:end);
y = centers(2:2:end);
Burada centroid yani merkez bilgisini aldık. Daha sonra merkezin x ve y değerlerini aldık. Şimdi bu merkezlerin etrafına çemberler çizelim:


figure,imshow(plane2);
hold on
plot(x, y, 'yo', 'MarkerSize', 40, 'LineWidth', 4);
hold off

plane project


Sonraki Yazı: Image Processing, Finding Circles
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın