Hareket Eden Renkli Nesnelerin Takibinin PID ile Gerçekleştirilmesi



Benzer belgeler
AMAÇ Araçlardaki Kamera Sistemleri

Dijital (Sayısal) Fotogrametri

Melih Hilmi ULUDAĞ. Yazılım Mühendisi Mekatronik Mühendisi. a aittir.

Erzurum Teknik Üniversitesi RobETÜ Kulübü Robot Eğitimleri. ARDUİNO EĞİTİMLERİ I Arş. Gör. Nurullah Gülmüş

GÖRÜNTÜ TABANLI ALGILAMA İLE QUADROTORUN HAREKETLİ BİR CİSMİ TAKİBİ

MMT 106 Teknik Fotoğrafçılık 3 Digital Görüntüleme

Dijital (Sayısal) Fotogrametri

Arduino nedir? Arduino donanım ve yazılımın kolayca kullanılmasına dayalı bir açık kaynak elektronik platformdur.

Dijital (Sayısal) Fotogrametri

Görüntü Bağdaştırıcıları

Bilgisayarla Fotogrametrik Görme

Web kameranın genel özellikleri

Görüntü İşleme. K.Sinan YILDIRIM Cenk İNCE Tahir Emre KALAYCI. Ege Üniversitesi Bilgisayar Mühendisliği Bölümü 2003

GÖRÜNTÜ İŞLEME HAFTA 1 1.GİRİŞ

Görüntü İşleme. Dijital Görüntü Tanımları. Dijital görüntü ise sayısal değerlerden oluşur.

UYDU GÖRÜNTÜLERİ VE SAYISAL UZAKTAN ALGILAMA

CCD KAMERA KULLANARAK SAYISAL GÖRÜNTÜ İŞLEME YOLUYLA GERÇEK ZAMANLI GÜVENLİK UYGULAMASI

Bölüm 7 Renkli Görüntü İşleme

(Mekanik Sistemlerde PID Kontrol Uygulaması - 3) HAVA KÜTLE AKIŞ SİSTEMLERİNDE PID İLE SICAKLIK KONTROLÜ. DENEY SORUMLUSU Arş.Gör.

T.C. ERCİYES ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ ELEKTRONİK SİSTEMLER LABORATUVARI 1

Mikroişlemci ile Analog-Sayısal Dönüştürücü (ADC)

KENDĐ KENDĐNE YOL BULAN ARAÇ

5 İki Boyutlu Algılayıcılar

4. Bölüm Programlamaya Giriş

MEKATRONİĞİN TEMELLERİ

PROSES KONTROL DENEY FÖYÜ

SORULAR (1-36) SORU -2 Aşağıdakilerden hangisi klavye ve farenin takıldığı portlardan biridir?

Girdi ve Giriş Aygıtları

PROJE RAPORU. Proje adı: Pedalmatik 1 Giriş 2 Yöntem 3 Bulgular 6 Sonuç ve tartışma 7 Öneriler 7 Kaynakça 7

ESNEK ALGILAYICI KONTROLLÜ ANĐMATRONĐK EL UYGULAMASI FLEXIBLE SENSORS CONTROLLED ANIMATRONIC HAND APPLICATION

FBs-serisi. Programlanabilir Kontrol Cihazı. Kullanım Kitabı - II [ İleri Düzey Uygulamalar. Önsöz, İçerik. FBs-PLC Interrupt Fonksiyonu 9

SAKARYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ GÖMÜLÜ SİSTEMLER DENEY FÖYÜ

KST Lab. Shake Table Deney Föyü

MİKROİŞLEMCİ İLE A/D DÖNÜŞÜMÜ

Derste Neler Anlatılacak? Temel Mekatronik Birimler,temel birim dönüşümü Güncel konular(hes,termik Santral,Rüzgar Enerjisi,Güneş

Wolvox Kapı Ekranı. AKINSOFT Wolvox Kapı Ekranı Yardım Dosyası. Doküman Versiyon :

PLC (Programlanabilir Kontrol Cihazı) TABANLI SİSTEMLERİN İNTERNET ÜZERİNDEN İZLENMESİ

Öğr. Gör. Hakan YÜKSEL SÜLEYMAN DEMİREL ÜNİVERSİTESİ. Akademik Bilişim

3 Fazlı Motorların Güçlerinin PLC ile Kontrolü. Doç. Dr. Ramazan BAYINDIR

Digital Görüntü Temelleri Görüntü Oluşumu

Bilgisayarla Görüye Giriş

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Dijital Fotogrametri

Yrd. Doç. Dr. Saygın ABDİKAN Öğretim Yılı Bahar Dönemi

ARDUINO NEXTION UYGULAMASI. Bu makale, Arduino UNO kartı ile Nextion HMI ekranlarının nasıl kontrol edildiğini anlatmaktadır.

BEDEN EĞİTİMİ I: Haftalık ders 1 saattir (T-0 ) (U-l) (K-0).

Ege MYO Bilgisayar Donanım Ders Notları

Çalışma Adı : Uzaktan programlanabilir kayan yazı sistemi

Android Telefonlarla Yol Bozukluklarının Takibi: Kitle Kaynaklı Alternatif Çözüm

Bilgisayar, elektronik bir cihazdır ve kendi belleğinde depolanan talimatları sırasıyla uygulayarak çalışır. İşler. Bilgi İşlem Çevrimi

idea Kontrol Kartı (idea Board jv2.1) Kullanım Kılavuzu

MAK 1005 Bilgisayar Programlamaya Giriş. BİLGİSAYARA GİRİŞ ve ALGORİTMA KAVRAMI

İçİndekİler. 1. Bölüm - Mİkro Denetleyİcİ Nedİr? 2. Bölüm - MİkroDenetleyİcİlerİ Anlamak

SORULAR. A) Ses kartı. SORU -1 Aşağıdakilerden hangisi sadece giriş donanımıdır? D) Ekran. B) Klavye. C) Yazıcı

ÖZEL EGE LİSESİ GÜNEBAKAN PANELLER

FPGA İLE UYGULAMA ÖRNEKLERİ FPGA ile Seri Haberleşme (RS232) Uygulaması

MUSTAFA KEMAL ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ MAKİNE MÜHENDİSLİĞİ BÖLÜMÜ

5.41. UYDU ANTENİ YÖNLENDİRME OTOMASYON PROJESİ

BLUETOOTH KUMANDA KONSOLU ĐLE KONTROL EDĐLEN ROBOT KOLLU PALETLĐ MOBĐL ARAŞTIRMA ROBOTU

KOCAELİ ÜNİVERSİTESİ ELEKTRONİK VE HABERLEŞME MÜHENDİSLİĞİ BÖLÜMÜ 2018/2019 GYY BİTİRME ÇALIŞMASI ÖNERİ FORMU. (Doç.Dr. M.

BLG 1306 Temel Bilgisayar Programlama

TÜRKİYE CUMHURİYETİ DEVLETİNİN temellerinin atıldığı Çanakkale zaferinin 100. yılı kutlu olsun.

MOD419 Görüntü İşleme

Web Üzerinden Labview Kullanarak Altı Eksenli Robot Kolu Kontrolü

VIERO ARAÇ SAYIM SİSTEMİ

Örnek. int analogpin = 3; int val = 0; void setup() { Serial.begin(9600); } void loop() { val = analogread(analogpin); Serial.

KAMERA YARDIMI İLE AYIRT EDİLEN VE TANIMLANAN CİSİMLERİN 3 EKSENLİ ROBOT MEKANİZMASI İLE TAŞINMASI

KONTROL VE OTOMASYON KULÜBÜ

ENDÜSTRİYEL GÖRÜNTÜ İŞLEME. atel sistem

Giyilebilir Teknolojiler ve Solar Enerjili Şapka Uygulaması

1. PROGRAMLAMA. PDF created with pdffactory Pro trial version

DENEY 3: DTMF İŞARETLERİN ÜRETİLMESİ VE ALGILANMASI

Bazı Gömülü Sistemlerde OpenCV ile Performans Analizi

R ile Programlamaya Giriş ve Uygulamalar

5.63. YÜK KONTROLLÜ ASANSÖR ROBOT TASARIMI

Yrd. Doç. Dr. Caner ÖZCAN

İÇİNDEKİLER VII İÇİNDEKİLER 1 ARDUINONUN TEMELLERİ 1

MCR02-AE Ethernet Temassız Kart Okuyucu

TMMOB Harita ve Kadastro Mühendisleri Odası Ulusal Coğrafi Bilgi Sistemleri Kongresi 30 Ekim 02 Kasım 2007, KTÜ, Trabzon

1. PS/2 klavye fare 2. Optik S/PDIF çıkışı 3. HDMI Giriş 4. USB 3.0 Port 5. USB 2.0 Port 6. 6 kanal ses giriş/çıkış 7. VGA giriş 8.

VIERO, görüntü tabanlı analiz sayesinde, ortalama araç hızı bilgisi üretmekte ve araç yoğunluğunu da ölçmektedir. VIERO Araç Sayım Sistemi

SAYISAL ÇÖZÜMLEME. Yrd.Doç.Dr.Esra Tunç Görmüş. 1.Hafta

icono Kullanıcı Kılavuzu

Neden CnlnlRTID. Elektronik Sinyalizasyon. Kontrol. Estetik. Tümüyle Endüstriyel. Kontrol ve Koruma Gerçek Verme. Karar

TÜBİTAK BIT-MNOE

OPC KullanılarakGerçek Zamanlı Haberleşen Matlab ve PLC Kontrollü Sistem

AKILLI KÜRSÜ KULLANIM KILAVUZU

GörüntüĐşlemede Yeni Bir Soluk, OpenCV

Temel Bilgisayar Bilgisi

Kablosuz Ağ Tabanlı Gezgin Keşif Robotu: Kaşif

Mekatroniğe Giriş Dersi

EEM 419-Mikroişlemciler Güz 2017

Algılayıcılar / Transmitter

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

T.C. ERCİYES ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ ELEKTRONİK SİSTEMLER LABORATUVARI 1. ARDUINO LCD ve Sensör Uygulamaları

1.1. Yazılım Geliştirme Süreci

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi İNTENT VE İNTENT. BLM401 Dr.Refik SAMET

UltraView IP XP3 Gündüz/Gece Sabit Kamera Hızlı Başlangıç Kılavuzu

Yapay Sinir Ağları. (Artificial Neural Networks) DOÇ. DR. ERSAN KABALCI

Transkript:

Hareket Eden Renkli Nesnelerin Takibinin PID ile Gerçekleştirilmesi Yalçın Karakoç 1, Sıtkı Öztürk 2, Melih Kuncan 3 1 Elekronik ve Haberleşme Mühendisliği Bölümü Kocaeli Üniversitesi, Umuttepe {yalcinkarakoc87}@hotmail.com 2 Elekronik ve Haberleşme Mühendisliği Bölümü Kocaeli Üniversitesi, Umuttepe {sozturk}@kocaeli.edu.tr 3 Mekatronik Mühendisliği Bölümü Kocaeli Üniversitesi, Umuttepe {melih.kuncan}@kocaeli.edu.tr Özetçe Bu çalışmada renkli nesnelerin gerçek zamanlı tespiti ve takibini yapacak yazılım, donanım çalışması yapılmıştır. Yazılım kısmı için Linux işletim sistemi altında çalışılmış olup, OpenCV kütüphanesinden yararlanılmıştır. Donanım kısmında Arduino geliştirme kartı ve bu karta bağlı iki adet servo motor kullanılmıştır. OpenCV ile usb portu üzerinden haberleşen Arduino, servo motorlara koordinat bilgileri gönderilerek nesnenin takibi sağlanmıştır. 1. Giriş Sayısal bir resim (görüntü), nesneler tarafından yansıtılan ışık enerjisinin (analog sinyal) bir algılayıcı tarafından öngörülen elektromanyetik aralıkta algılanarak sayısal sinyal haline dönüştürülmesi ile oluşur. Bir görüntünün temel bileşeni pikseldir. Sayısal bir görüntü MxN boyutlu piksellerden oluşan bir matris ile ifade edilir. Gri tonlu görüntülerde, görüntü farklı gri ton değerlerinden oluşur. Gri değer aralıkları {0,1,2,...,255} şeklinde ifade edilir. Video kamera ve tarayıcı gibi görüntü yakalayıcı cihazlarla alınarak sayısallaştırılan görüntülerin geliştirilen yöntemlerle işlenip analiz edilerek görüntülerden bilgi elde edilmesi ve bu bilgilerin yorumlanması, görüntü işleme alanının temelini oluşturur. Görüntü işleme uygulamalarına örnek olarak fabrika otomasyon uygulamalarından endüstriyel kalite/üretim kontrolleri, tıbbi uygulamalardan kan hücrelerinin sayımı, bilgi işlem uygulamalarından karakter tanıma, güvenlik amaçlı uygulamalardan yüz tanıma, askeri uygulamalardan akıllı silahlar üretimi gibi örnekler verilebilir[1]. Son yıllarda ise şüphe çeken kişi veya nesnelerin doğrudan görüntü işleme teknikleri kullanılarak belirlenmesine yönelik çalışmalar yapılmaktadır.[5] Bu çalışmada, görüntü işleme algoritmalarından yararlanılarak renkli nesne algılama teknikleri kullanılmıştır. Görüntü işleme kısmını İntel in açık kaynaklı görüntü işleme kütüphanesi olan Open Source Computer Vision (OpenCV) kullanılmıştır. Bu çalışmada OpenCV kütüphanesini kullanılmasındaki asıl amaç gerçek zamanlı görüntü işleme uygulamalarına izin vermesidir. OpenCV nin sağlamış olduğu renk algılama ve algılanan renk bileşenlerinin aralarında benzerlik gösteren belirli bölgelere ayırma işlemi yapılmış ve nesnemizin konumu koordinat olarak belirlenerek nesnelerin takibini gerçekleştirecek algoritma yazılmıştır. Donanımın çalışma prensibi kısaca bilgisayar yardımıyla işlenen görüntü sayesinde renkli nesnemizin kamera koordinat üzerinde yeri belirlenmiştir. Belirlenen koordinatlar USB portu aracılığıyla Arduino geliştirme kartına gönderilmiştir. Arduino geliştirme kartına bağlı iki adet servo motor gelen koordinat bilgilerini kullanarak servo motorların hangi yönde kaç derecelik açıyla hareket edeceğine karar verir. Servo motorların hareketi için PID denetçi kontrolü kullanılmıştır. PID kontrolüyle Arduino nun verilen koordinatlara sıfır hatayla yaklaşması amaçlanmıştır. Sonuç olarak görüntü işleme yazılımı sayesinde renkli nesnenin kamera üzerindeki konumu belirlenir ve yön vektörlerinin sonuçlarına göre hareket tespit edilen yöne servo motorlar hareket ettirilir. Kameramız servo motorlara bağlı olduğundan motorlar hareket ettikçe hareketli nesne kamera görüntüsünün merkezine doğru alınmaktadır. 2. Hareketli Nesne Takip Metodu Hedef takibi; hareket eden objenin durumunun tahmin edilmesidir. Burada durum ifadesi pozisyon, hız, ivme v.b. şeklinde ihtiyaca bağlı olarak seçilebilir. Hedef takibinde bir veya daha fazla değişik platforma monteli sensörler kullanılarak gerçekleştirilebilir. Hedef takibi kestirimden daha geniş bir anlam taşımaktadır. Çünkü hedef takibinde sadece kestirim araçlarını kullanmakla kalmaz, karar verme teorisinin istatistiksel kurallarını da kullanır[2]. Literatürdeki hedef takip sistemleri incelendiğinde, hedefin t anındaki durumuna göre sadece t+1 anında 281

bulunacağı konumunun tahmin edildiği gibi ve bu tahmini konumda küme veya kapsama ağacı gibi yapılandırmalar gerçekleştirilerek hedef takibi sağlandığı görülmektedir. Ayrıca, literatürde birçok çalışmada hedef hızının 20-30 m/sn yi aşmadığı varsayılmıştır. Mevcut yaklaşımlarda hedefin hızı arttıkça düğümler tarafından algılanmadan, ilerleme durumu ortaya çıkabilmektedir ve bu da hedefin konumunun hesaplanamamasına yol açmaktadır. Önermiş olduğumuz algoritmalar ile hedefin gideceği yön önceden tahmin edilir ve bu doğrultudaki düğümler uyandırılarak gerekli yapılandırmalar gerçekleştirilir [3]. Öncelikle görüntü işleme teknikleri için hareketin dış dünyadan zengin bir bilgi kaynağı olduğunu söylemek yerinde olacaktır. Bundan dolayı kısa bir şekilde görüntü hareketine göz atılması uygun olacaktır. Şekil 1 de görüntü hareketi gösterilmiştir. Zamanla değişen bir X(t) güzergâhında hareket eden üç boyutlu noktanın hız denklemi aşağıdaki gibidir. korelasyon belirlenir. En iyi karşılaştırma değeri en iyi yer değiştirme bilgisini verir. Yani her işlem adımında uzaysal olarak kayan ve geçici olarak türevlendirilen bir alan üzerinde inceleme yapılır. Bu yaklaşımla çok daha sağlam vektör alanları, türevlendirme işlemi geçici olarak sadece araştırma alanlarında yapıldığı için, diğer yöntemlere göre çok daha hızlı olarak elde edilir. ( ) Üç boyutlu güzergâhın görüntü düzlemi üzerine perspektif izdüşümü iki boyutlu bir güzergâh ortaya çıkarır: ( ) ( ) Buradan anlık iki boyutlu hız aşağıdaki şekilde ifade edilebilir: Şekil 1: Hareketli ve Sabit Işıkla Duran ve Dönen Lambert Küreleri Çalışmada, görüntüler bloklara bölünmüştür ve her bloğun orta noktası optik akış vektörlerinin başlangıç noktası olarak alınmıştır. Birbirini izleyen iki görüntü için, ilk görüntüdeki her blok çevre blokların içinde aranmıştır. ( ) ( ) ( ) İki boyutlu hareket alanı bütün görünür noktalar için iki boyutlu hızı ifade eder. Optik akış alanı ise hareket alanının bir kestirimidir. Optik akış konseptinde iki temel problemle karşılaşılır; izlenecek görüntü özelliğinin belirlenmesi, bu özelliğin nasıl izleneceği. Daha açık ifade edilecek olursa, yüzey parlaklığının zamanla değişmez olduğunu varsayılarak, öncelikle sabit parlaklığın noktaları denklem 4 teki gibi ifade edilir. Genellikle araştırmacılar tarafından parlaklığın sabit olduğu kabul edilir, ancak doğa farklı şartlar ortaya koyar. Bundan dolayı optik akış hareket alanı kestiriminde bazen çok zayıf yakınsamalar elde edilebilir. Örneğin; dönen bir Lambert küresi sabit bir ışık kaynağı altında sabit görüntü verir. Fakat sabit bir küre hareket eden ışık kaynağı altında hatalı yoğunluklar ortaya çıkarır. Çalışmada, alan karşılaştırma tabanlı optik akış algoritması uygulanmıştır. Alan karşılaştırma algoritmaları diğer optik akış algoritmalarından, bir önceki görüntü için elde edilen bilgilerden de yararlanarak vektör hesaplamaları yaptığı için farklıdır. Bir önceki resim ile sonraki resim arasında bazı mesafe ölçüm yöntemleri kullanılarak Şekil 2: Blok Karşılaştırma Birbirini izleyen iki görüntü için, bloklardaki kayma, farkların kareleri toplamı (Sum of Squares Differences) metoduyla hesaplanmıştır. İki pozisyon için SSD ölçümü şu şekilde gerçekleştirilir: ( ) ( ( 282

Mevcut blok ile araştırma penceresindeki olası blokların farklarının kareleri toplamı en küçük olan bloğun orta noktaları, optik akış vektör çizimi için kullanılmıştır. Görüntülerin üzerine çizdirilen optik akış vektörleri yardımıyla hareket tahmininde bulunmamız kolaylaşmıştır [4]. 2.1. OpenCV ile Hareketli Nesne Takibi OpenCV görüntü işlemek üzere 1999 da İntel tarafından açık kaynaklı olarak C yazılım dilinde geliştirilmiş olan görüntü işleme kütüphanesidir. Bu çalışma OpenCV Kütüphanesi ile C yazılım dilinde gerçekleştirilmiştir. Renkli nesne algılamak ve algılanan nesnenin hareketinin takibi için HSV renk uzay modelinden yararlanılmıştır. HSV (Hue, Saturation, Value) veya bazı kaynaklarda HSB (Hue, Saturation, Brightness) renk uzayı, renkleri sırasıyla renk özü, doygunluk ve parlaklık olarak tanımlar. HSV renk modunun kullanılma amacı RGB(Red, Green, Blue) uzayına göre insan görü düzeneğine daha yakın bir yapı oluşturmaktadır. HSV, RGB renk uzayından doğrusal olmayan bir dönüşüm ile elde edilir. HSV, aygıt bağımlıdır. Yani bu uzayda tanımlı bir renk, rengi üreten aygıt cihazına göre değişim gösterebilir. Şekil 4: Görüntü alınan web kamerası Kullanılan kamera, renkli kameradır ve 640*480 piksel boyutunda çözünürlüğe sahiptir. Kameranın renkli olması önemlidir. Çünkü renk modellerinden birbirlerine dönüşüm sadece renkli görüntülerde olur. Siyah beyaz görüntülerde renk sadece siyah/beyaz olduğundan renkli nesneden söz edilemez. Kamera görüntüleri 25fps (frame per second) saniyede 25 kare olarak kayıt etmektedir. Kamera görüntüsünü işlemek için bir frame(resim) alırız ve o frame üzerinden işlem yaparız. Video görüntüsünden frame almak için OpenCV de aşağıdaki komut kullanılır. IplImage* cvqueryframe( CvCapture* capture ); Bu komut görüntü aldığımız kamera nesnesinin içerisinden bir framelik görüntü alır. Alınan bu görüntü RGB formatından olduğundan bu formatın asıl kullanacağımız renk uzayı olan HSV uzayına dönüştürmemiz gerekir. HSV uzayında dönüştürülen framede görüntü işleme algoritmasını geliştirilmesi ve renkli hedef takibinin yazılım kısmının tamamlanması amaçlanmaktadır. OpenCV nin renk dönüşümü için hazır komutlar vardır. void cvcvtcolor( const CvArr* src, CvArr* dst, int code ); Kaynak dosyası (src) 8-bit (8u), 16-bit (16u) ya da floatingpoint 32-bit (32f) olabilir. Hedef dosyası (dst) kaynak dosyasıyla aynı tipte ve aynı boyutta olur. Kaynak dosyasının int code ile belirtilen dönüşüm yöntemiyle dönüşümü yapılır ve hedef dosyaya kaydedilir. Aşağıda bazı int code dönüşümleri gösterilmiştir. Şekil 3: Konik ve silindirik biçimli HSV renk uzayı 2.2. Renkli Nesne Algılama Yazılımın Gerçekleştirilmesi Çalışmanın bu kısmında OpenCV de görüntü işleme yöntemlerine yer verilmiştir. OpenCV de görüntü işleme için öncelikle renkli bir görüntü algılayıcısına ihtiyacımız vardır. Burada işimizi bir web kamerası görebilir. Şekil 4 de görüntü alınan kamera görünmektedir. Web kamerasının görüntü almak için OpenCV de bir görüntü işaretçisi tanımlanır ve o işaretçinin ayırdığı alana görüntü kare kare kayıt edilir. CvCapture* cvcreatecameracapture( int index ); Komutu ile kamera görüntüsü alınır. Kameradan alınan görüntü renkli ya da siyah/beyaz olabilir. RGB<=>HSV (CV_BGR2HSV, CV_RGB2HSV, CV_HSV2BGR, CV_HSV2RGB) RGB<=>HLS (CV_BGR2HLS, CV_RGB2HLS, CV_HLS2BGR, CV_HLS2RGB) Renk dönüşümleri yapıldıktan sonra renkli hedefimizin istediğimiz renk aralıklarıyla algılanması ve takibi gerçekleştirilecektir. Dönüştürülen imgenin renk uzayında kaç bit renk kullanacağını aşağıdaki komut kullanılarak belirlenebilir. IplImage* cvcreateimage(cvsize size, int depth, int channels); CvSize: İmgenin eni ve boyunu belirtmemiz gerekir. Depth: Bir piksel kaç bit derinliği kullanacağını belirten değişkendir. Channels: Pikselin kullandığı kanal sayısını belirtir. Bu aşamadan sonra kamera görüntüsünden aldığımız bir framelik 283

görüntüyü takip edilmesi gereken hedefin renk bilgilerini girerek takip edilmesi gerçekleştirilecektir. Renk algılanması ve renkli nesnenin takibi için OpenCV kütüphanesinden CvInRanges komutu kullanılır. void cvinranges( const CvArr* A src, CvScalar SL, CvScalar SU, CvArr* D dst ); 6 sı PWM çıkışı olarak kullanılabilir. 6 analog giriş pinine sahiptir. 16 MHz kristal osilatörü, USB bağlantısı, 2.1mm güç girişi, ICSP başlığı ve reset butonu vardır. Mikroişlemciyi destekleyecek her şeye sahiptir. Çalıştırmak için DC 7~12V güç kaynağına bağlamak yeterlidir. Şekil 6 da Arduino nun pinleri ve giriş/çıkışları gösterilmiştir. Arduino tüm işletim sistemlerinde çalışabilmektedir.. Bahsi geçen komut da ilk değişken kaynak frame işaretçisidir. Kaynağın üzerinde algılanacak olan rengin belirlenmesi için ikinci argüman olarak CvScalar SL komutu renk bilgisinin alt değerini alır. CvScalar SU komutu ise renk bilgisinin üst değerini alır. HSV uzayında renk değerleri alt ve üst değerler olarak girildikten sonra CvInRangeS komutu girilen renk değerini frame üzerinden arar ve bulduğu renkteki piksellerin piksel değerini 0 yapar. Diğer geri kalan pikseller 1 değerini alır. Şekil 5 de bu durum kısaca gösterilmiştir. Bir sonraki bölümde algılanan renkli hedefin piksellerinin aldığı değerlere göre hedef ayrışımı ve hedefin takibine yönelik algoritmalar geliştirilmiştir. Piksellerin aldığı değerlerin bir algoritmaya göre aranması ve bulunmasıyla hedef takibi yapılacaktır. Şekil 6: Arduino üzerinde bulana pinler ve giriş/çıkış bağlantıları 3.2. Arduino Geliştirme Kartı ile Servo Sürmek Servo motor daha çok robotlarda, sanayilerde ve modelcilikte sıkça kullandığımız, girişine uyguladığımız darbe genişliği ile 0-180 derece açılarda dönebilen motorlardır. Bu motorlar kullanım yerlerine göre çeşitlendirilebilirler. Otomasyonda kullanılan yüksek torklu servolar olduğu gibi modelcilikte kullanılan mikro servo motorlara kadar çok fazla çeşidi bulunmaktadır. RC (Radio Control), Hobi servoları olarak da geçebilir. Arduino nun kütüphanelerinde servo sürmek için bir servo kütüphane bulunmaktadır. Servo sürmek için PWM sinyalini Arduino içerisindeki servo kütüphanesi yardımıyla oluşturulacaktır. Şekil 7 de servo motorların Arduino ya nasıl bağlandığı gösterilmiştir. Şekil 5: Algılanan renkli nesnenin piksel bit durumu 3. Takip Donanımının Gerçekleştirilmesi Takip yazılımını tamamladıktan sonra donanım kısmının gerçekleştirilmesi gerekmektedir. Donanım kısmında, görüntü işleme sonucunda hedefimizin koordinat bilgisinin bilgisayarın USB portundan Arduino geliştirme kartına gönderilmesi amaçlanmaktadır. Arduino USB den aldığı bilgilerle X ve Y komuna göre servo motorlara hareket bilgisi göndererek hedefin takibi sağlanmıştır. 3.1. Arduino Geliştirme Kartı Arduino açık kaynaklı bir geliştirme kartıdır. Atmel firmasının ürettiği geliştirme kartında C yazılım dilinde projeler geliştirilebilmektedir. Donanım kısmında kullanacağımız Arduino Uno ATmega328 işlemci kullanan Arduino çeşididir. 14 dijital giriş/çıkış pini bulunur, bunlardan Şekil 7: Servo motorların Arduino ya bağlantısı Servolardan biri X düzleminde diğeri ise Y düzleminde hareket etmektedir. Görüntü işleme sonucunda algılanması 284

gereken renkli hedefin koordinat bilgileri seri olarak Arduino ya gönderilir. Arduino üzerindeki yazılım sayesinde servoları gereken koordinat bilgilerine göre hareket ettirir. 3.3. Görüntü İşleme Yazılımı Yardımıyla Nesne Takibi OpenCV ile algılanan hedefin kamera görüntüsü düzleminde X ve Y koordinatları belirlenmiştir. Belirlenen koordinatlar posx ve posy değişkenlerine gönderilmiştir. Bu değişkenleri USB ile göndermemiz için öncelikle bir mantık kontrolüyle değerlerin değişip değişmeyeceğini kontrol etmemiz gerekir. Eğer posx ve posy değişkenleri değişmiyorsa servo motorlarımız hareket etmeyeceğinden bu bilginin sürekli gönderilmesine gerek yoktur. Yani hedefimiz hareketsiz konumdaysa hedef koordinatları gönderilmeyecektir. Hedefimiz ne zaman hareket etmeye başlarsa hareketin algılandığı bölgenin koordinat bilgileri posx ve posy değişkenlerine atanacağından bu bilgileri USB aracılığıyla Arduino ya ve Arduino ile servo motorlara gönderilecektir. Arduino ya USB olarak bilgi göndermek için aşağıdaki kod kullanılır. FILE* serial = fopen("/dev/ttyacm0", "w"); Buradaki kodun yaptığı iş seri portu yazma durumuna açmak için bir serial işaretçisi tanımlanır ve kullanılacak port girilir. İkinci argüman ise yapılacak işi gösterir. Burada porta bilgi göndereceğimizden w (write) olarak ayarlanmaktadır. Bir başka husus ise servo motorlarımızın 180 derece dönme kabiliyeti olduğundan 0-180 arası değerler alması gerekmektedir. Kamera çözünürlüğü X de 640 ve Y de 480 olduğundan bu değerleri 180 e göre modunu alıp göndermekteyiz. Arduino seri bilgiyi aşağıdaki komut ile okuruz. int posx = Serial.read(); int posy = Serial.read(); Olarak okunan seri bilgileri X ve Y koordinat bilgilerini alırız. Aldığımız bu bilgilerini Arduino ya bağlı servo motorlara iletmek için aşağıdaki komut kullanılır. servox.write(posx); servoy.write(posy); integral I ile gösterilir türev değerleri, D ile gösterilir. Mevcut hata P, geçmişteki hataların toplamı I, ve değişimin mevcut oranı D ye dayanarak, gelecekteki hatanın bir tahmini hesaplanır. Bu üç eylemin ağırlıklı toplamı yoluyla kontrol edilen süreç istenilen seviyeye ayarlamak için kullanılır. Böylece örnek olarak bir kontrol valfının pozisyonu ya da bir ısıtma elemanı çıkış gücü kontrol edilerek istenilen akış veya sıcaklık seviyesi en düşük hata ile elde edilmeye çalışılır[6]. Tablo 1 de nesnemizin istenilen noktaya olan uzaklığını yani hatasını ve PID katsayıları verilmiştir. Tablo 1 e göre nesne görüntünün tam ortasında olması istenilmektedir. Yani X eksenindeki konumu 320 ve Y eksenindeki konumunun ise 240 olması istenilmektedir. Buna göre nesnenin konumu ve PID katsayıları Tablo 1 de verilmiştir. Tablo 1: Nesnenin Konumuna Göre PID Katsayıları Nesnenin X deki Konumu Nesnenin Y deki Konumu P I D 278 232-8.04 4,12-4,79 319 241-0,12 3,07-1,01 407 153 17,40 13,5-5,12 423 380 25,32 16,08-6,56 4. Sonuçlar Sonuç olarak bu çalışmada görüntü işleme ile renkli hedef takibi nasıl yapılır? Hedef takibi yaparken nelere dikkat edilir? Renk algılama nedir? Renk algılama teknikleri nelerdir? Kısaca bunlara değinilmiştir. Yazılım kısmında renkli hedef ekranın tam orta noktasında olmasına dikkat edilmiş ve takip aşaması bu koşula göre yapılmıştır. Takip edilecek olan hedefin ağırlık merkezi görüntümüzün merkezinde olduğu için hareketteki sapmaları kontrol edilecek sisteme yani servo motorlara bilgiler gönderilmiştir. Yazmış olduğumuz görüntü işleme yazılımına bağlı olarak çalışan donanım şekil 11 ve 12 de gösterilmiştir. Donanım kısmı iki servonun biri X, diğeri Y yönünde hareket edecek şekilde tasarlanmıştır. Gönderilen koordinat bilgileri servo için 0-180 derece arasında dönme hareketi yapar. Servo motorlara gelen posx bilgisi X yönünde hareket eden servo motora kaç derece dönmesi gerektiğini söyler. Aynı şekilde gelen posy bilgisi de Y yönünde hareket eden servo motora kaç derece dönmesi gerektiğini söyler. Servo motorlarımızın Arduino geliştirme kartı aracılığıyla kontrolü kısaca bu şekildedir. 3.4. PID Kontrolünün Yapılması PID (proportional, Integral, Derivative) oransal-integraltürevsel denetleyici PID kontrol döngüsü yöntemi, yaygın endüstriyel kontrol sistemlerinde kullanılan genel bir kontrol döngüsü geribildirim mekanizmasıdır. Bir PID denetleyici ölçülü bir süreç içinde değişen ve istenilen ayar noktası ile arasındaki farkı "hata" değeri olarak hesaplar. Kontrolör proses kontrol girişini ayarlayarak hatayı en aza indirerek istenilen ayar değerine ulaşmak için çalışır. PID algoritması üç ayrı sabit parametreyi içerir ve buna göre bazen üç aşamalı kontrol denir: oransal, P ile gösterilir. Şekil 8:Yazılım sonuçları test görüntüsü 1 285

Şekil 9: Yazılım sonuçları test görüntüsü 2 Şekil 12: Donanımın Yandan Görüntüsü Şekil 10: Yazılım sonuçları test görüntüsü 3 5. Kaynakça [1] M. Özden, Ortalama Kayma Algoritmasının Geliştirilerek Görüntü Dizilerinde Hareketli Nesne Takibi ve Görüntü Kesimleme Amaçlı Kullanılması, Kırıkkale Üniversitesi Fen Bilimleri Enstitüsü, Yüksek Lisans Tezi, 2005. [2] A. G. Pakfiliz, Parazit Yankılı Ortamda Manevra Yapan Birden Çok Hedefin Takibi İçin Olasılıksal Bir Takip Algoritması Geliştirilmesi, Ankara Üniversitesi Fen Bilimleri Enstitüsü, Doktora Tezi, 2004. [3] A. Beyoğlu, A. Kantarcı ve K. Erciyes Telsiz Duyarga Ağlarında Çok Hızlı Hareket Eden Hedefler için Hedef Takip Algoritmaları, 2012 [4] E. Dur, H. Temeltaş, S. Kurnaz, Optik Akışın Hesaplanması ve Yapay Sinir Ağları ile Yorumlanarak Mobil Robotlar İçin Engel Tespiti ve Kaçınma Davranışında Kullanılması, Havacılık ve Uzay Teknolojileri Dergisi Cilt 4 Sayı 1(77-87), Ocak 2009 [5] M. Şanlı, F. Zengin, O. Urhan, M. K. Güllü, Web Kamerasıyla Hareketli Nesne Takibi Elektronik ve Haberleşme Mühendisliği Bölümü Mühendislik Fakültesi, İzmit/KOCAELİ, 2005 [6] http://tr.wikipedia.org/wiki/pid (Erişim Tarihi: 06/2012) Şekil 11: Donanımın Önden Görüntüsü 286