You are on page 1of 9

Fotoğraftaki nesnelerin konum ve

açılarının MATLAB kullanarak bulunması

İsmail H. ŞANLITÜRK
Fırat Üni. Müh. Fak. Mak. Müh.
Konst. ve İmalat AD
Amaç
Konveyör üzerinde hareket eden nesnelerin konum
ve açı bilgilerini elde etmek.
İşlem
 Gerçek bir sistem bulunamadığı için işleme uygun
bir fotoğraf seçildi.
 Fotoğraf 64x64‟lük 16 eşit parçaya bölündü.
 Her bir parça resim dosyası olarak kaydedildi.
 Bu resimler bir döngü içinde açılıp en sağdaki 3
nesnenin konum ve açıları elde edildi.
 Robot nesneleri 3‟er 3‟er alacağı için en sağdaki 3
kullanıldı. Tamamını elde etmek daha kolay.
Materyal
Kullanılan fonksiyonlar
 imread()  stem()
 imadjust()  text()
 graythresh()  getframe
 im2bw()  movie()
 bwareaopen()  sprintf()
 bwconncomp()
 regionprops()
 imshow()
Algoritma
 Resim sayısı kadar tekrar edecek bir for döngüsü açılır. Tekrar sayısı
16, sayaç değişkeni k.
 resim = sprintf(„piri (%d).jpg‟,k) ile resim adı elde edilir.
 I=imread(resim) : Belirtilen dosya resme dönüştürülür.
 I3=imadjust(I): Kontrast otomatik olarak ayarlanır.
 level = graythresh(I3): Eşik seviyesi otomatik olarak belirlenir.
 bw=im2bw(I3,level): Gri seviye olan I3 resmi, “level” değeri eşik
kabul edilerek siyah-beyaz resme çevrilir.
 bw=bwareaopen(bw,50): “bw” resminde gürültü olan, alanı 50
pikselden küçük nesneler silinir.
 cc=bwconncomp(bw,8): 8‟lik piksel komşuluğu ile resimdeki
nesneler belirlenir.
 graindata=regionprops(cc,‟Area‟,‟Centroid‟,‟Orientation‟): Belirlenen
nesnelerin alan, merkez koordinatlar ve oryantasyonları elde edilir.
Algoritma
for i=1:length(graindata) sira=zeros(3,2);
for j=1:2 for m=1:3
konum(i,j)=graindata(i).Centroid(j); for j=2:length(konum)
end if konum(j,1)>konum(j-1,1)
if m>1 && konum(j,1)==sira(m-1)
end
break
end
1. Daha kolay işlem yapmak için
sira(m,1)=konum(j,1);
merkez konumları bir diziye
sira(m,2)=j;
aktarılır.
else
if m>1 && konum(j-1,1)==sira(m-1)
break
end 2. En sağdaki
sira(m,1)=konum(j-1,1); 3 nesnenin
for i=1:3
sira(m,2)=j; konumları
aci(i)=graindata(sira(i,2)).Orientation;
end end belirlenir.
end
3. Her 3 nesnenin oryantasyonları end
belirlenir.
Algoritma
 imshow(bw): Resim figure ekranında görüntülenir.
 hold on: Koordinatlar ve açıları resmin üzerine yazdırmak için
resim figure ekranında tutulur.
 stem(konum(sira(:,2),1),konum(sira(:,2),2),'b+'): En sağdaki 3
nesne işaretlenir.
 str(1)={'Açılar:'}; str(2)={num2str(aci(1))}; str(3)={aci(2)};
str(4)={aci(3)}
: Figure ekranında gösterilecek bilgiler bir diziye kayıt
edilir.
 text(3,20,str,'Color','r','FontSize',14): Bilgiler figure ekranında
gösterilir.
 anim(i)=getframe: Figure ekranı animasyon olarak
gösterilmek üzere kayda alınır.
 movie(anim,1,12): animasyon 1 tekrar, 12fps hızında
gösterilir.
Çıktı

Animasyonu oynatmak
için tıklayınız.

You might also like