Öncelikle Merhaba, for döngüsü içindeki algoritmanın mantığını çözemedim.Bu konuda yardımcı olursanız çok sevinirim…
for k=1:length(stats) thisboundingbox=stats(k).BoundingBox; if stats(k).Area>10000 rectangle('Position',[thisboundingbox(1),thisboundingbox(2),thisboundingbox(3),thisboundingbox(4)],'EdgeColor','r','LineWidth',2); else rectangle('Position',[thisboundingbox(1),thisboundingbox(2),thisboundingbox(3),thisboundingbox(4)],'EdgeColor','b','LineWidth',2); end if stats(k).Perimeter^2/stats(k).Area > 18 text(stats(k).Centroid(1),stats(k).Centroid(2),'ÜÇGEN','Color','r'); elseif stats(k).Perimeter^2/stats(k).Area < 14 text(stats(k).Centroid(1),stats(k).Centroid(2),'DAİRE','Color','g'); else text(stats(k).Centroid(1),stats(k).Centroid(2),'KARE','Color','b'); end end
4 Cevap
Tam olarak neresini anlamadınız? Genel olarak hacimlerine göre farklı geometrileri bir nevi sınıflandırıyorsunuz.
Neden 18 ve 14 değerleri alınmış acaba birde
stats(k).Perimeter^2/stats(k).Area > 18 bu satırdaki işlem mantığı nedir
18 ve 14 alınmasının sebebini benim bilebilme mümkün değil. 18 ve 14 diye bir kriter belirlenmiş. Tamamen keyfi olduğunu düşünüyorum. Belirttiğiniz satırda stats vektörünün herbir elemanının karesini alarak (sanırım her eleman bir çevre uzunluğuna karşılık geliyor) sonrasında yine aynı elemanın Alan'ı ile çaparak 18'den büyük olup olmadığına bakıyor.