(PIC li)Kamera ile nesne tanıma

Başlatan nuri2978, 22 Mayıs 2008, 20:55:18

nuri2978

s.a arkadaşlar
benim kafama takılan bir konu var robot yapmayı düşünüyorum ama nesneleri veya nesne renklerini tanıyan mesela sarı topu veya kırmızı top olduğu zaman kamera ile robot hareket edecek onu takip edecek...

Bana bu konuda yol gösterecek arkadaşlar varmı acaba walla çok makbul gecersiniz...

internette bi ara görmüştüm ama tekrar bulamadım sadece videosunu vermişti sarı topu takip ediyordu. Buna benzer bişi yapmak istiyorum...

şimdiden yardımlarınız için teşekkur ederimm...
Benimle gel arkadaşım gel ve sonu gor

OG

as

nesne tanımak ile renk tanımak çok farklı şeyler, renk için, https://320volt.com/pic16f877-renk-algilayici
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

SpeedyX

Bunu yapmanın birkaç yolu var aslında.
Bu meseleye nasıl baktığına göre değişir.
Nesneyi tanıyarak takip etmesi başka, renk takip etmesi başka.

Mesela kırmızı topun ayırt edici özellikleri nedir, baktığınızda merkezindeki renk en kırmızıdır(ışığın düştüğü yöne göre değişir)
Geri kalan kısımlar azalarak beyaza yaklaşırlar. Kamera onları öyle görür, sizde bunu algoritmalaştırırsanız klasik kırmızı top takip eden bişey yapmış olursunuz. Hatta daha basiti hep fuarlarda öyle bir konu vardır, bir kare kağıt 4 parçaya bölünmüş ve her parça başka renk (kırmızı, mavi, sarı, yeşil)...
En basit tanıma algoritmasına sahiptir. Bunun merkezini kendi kameranın gördüğü alana merkezlemeye çalışıp durursunuz. Histereziz değerleriniz vardır.. böylece takip edersiniz.

Ama bunlar cismi tanıyarak yapılan işler diye adlandırılmaz. Cisim tanıma denen şey biraz yapay sinir ağları ile alakalıdır. Tam olarak o olması değil benzemesi... Çok yöntem var bunlar içinde..

ilk yöntemle yapmak istiyorsanız pic yeterli olabilir.

Donanımsal bakarsak mesela benim çalıştığım sensor 10mhz den yavaş çalışamıyor. 10mhz de çalışsa, master clock u 2 ye böldüğü için 200ns de 1 pixel verir, o işlemci ile buna yetişmeniz gerekiyor yada hızlı lojik çözümler aramanız.. ki 10mhz oldukça düşük bir hız, 3 megapixel bir kamera ortalama 48mhz de çalışır ve ona microchip in hiç bir ürünü ile getişmenizin imkanı yok.

lojikmemo1

v a.s.
Arkadaşım senin yapmak istediği şey için diğer arkadaşların da dediği gibi bir çok yöntem var ama ben direkt pic yada arm kullanmana karşıyım.
Şöyle bir yöntem izleyebilirsin:
piyasada 50 ytl civarı satılan kablosuz kameralar var bunlar 50 metre uzaklıktan veri iletebiliyorlar. Bunlardan bir tane alıp tobotuna koy bu kemarın gönderdiği veriyi pc ye aktar gerisini pc programı ile çözebiliriz.
PC tarafında, önce gelen resimleri (video aslında ardarda resimler olarak gelir) alan bir uygulama yapmalıyız ama şansılısn web cam gibi kameralrdan görüntü alabilen hazır ocx ve userControl (dll dosyaları) dosyalrı bedava olarak hizmetinde. İkinci aşama olarak resim içindeki yuvarlak nesneyi taramak bu noktada kişisel algoritam yeteneğin ve tecrüben devreye giriyor. Bana kalırsa algoritamn yaklaşık aynı değere sahip renk taşıyan ve kapalı bir çevrim oluşturan pixselleri tarayarak nesneyi algılamak olabilir. Kapalı çevrimden kastettiğim mesela mavi renk yuvarlak bir nesne resmin ortasında ise bu resmiden taşmayacak ve resmi tamamen doldurmayacaktır buradan faydalanabilirsin. Bir önceki resim ile bir sonraki resimi karşılaştırıp nesnenin nereye kaydığını kontroledebilirsin.

C# .Net ile kabaca aşağıdaki gibi olabilir:
private int[] merkez_bul(bitmap gelen_resim)
{
int[] merkez = new int[2];
/// bu fonksiyon yuvarlak bir cismin aşağı yukarı merkezini bulup
// döndürür
merkez[0]=x;
merkez[1]=y;

return merkez;
}

private bool resim_karsilastir(int[] kordinatlar1, int[]kordinatlar2)
{
// iki kordinatı karşılaştırsın ve sağa kayma varsa true sola kayma varsa false döndürsün

return true;
}

private void araci_yonlendir(bool sonuc)
{

if(sonuc==true)
{
// rf sinyalleri ile sağ trafa gitmesini söyle
}

if(sonuc==false)
{
// rf sinyalleri ile sol trafa gitmesini söyle
}

}

//=========== ANA Fonksiyon =========================
private void resim_karsilastir()
{
bool sonuc;
bitmap[] resimler= new bitmap[2]; // iki resim alıp karşılaştırma yapmak olabilir

sonuc=resim_karsilastir(merkez_bul(resimler[0],merkez_bul(resimler[1]);

araci_yonlendir(sonuc);

}


rf için sana udeanın UFM-WPA A12 (galiba) modülünü önerebilirim seni üzmeden gönderir. Yok iyi bir yazılımcı isen atx34 ve arx34 le de yaparsın ama pramble senyc ,header,footer ve crc güvenliği sana kalmış.

Kolay gelsin.
İnsanlara Akılları Ölçüsünde Söz Söyleyiniz.

nuri2978

Arkadaşlar vrdiğiniz cevaplar için teşekurler hepsini okudum hepinizinki aslında mantılı geldi...Kamera ile bilgisayara gönderme belkide en basit yöntem olaacak onu yapalım en iyisi...
Benimle gel arkadaşım gel ve sonu gor