GRIP ‘e Giriş

GRIP, deneme yanılma kodlaması yerine etkileşimli olarak bilgisayarla görme algoritmalarını geliştirmek için bir araçtır. Algoritmanızı geliştirdikten sonra, GRIP ‘i roboRIO ‘nuzda, Sürücü İstasyonu Dizüstü Bilgisayarınızda veya robot ağınıza bağlı bir yardımcı işlemci üzerinde isimsiz modda çalıştırabilirsiniz. Grip ile, görsel algoritmayı tamamlamak için gerçekleştirilen işlemlerin sırasını temsil eden bir grafik işlem hattı oluşturmak için görüntü işlemlerini seçersiniz.

GRIP, araştırma, robotik ve vizyon algoritması uygulamaları için kullanılan en popüler bilgisayarla görme yazılımı kitaplıklarından biri olan OpenCV’ye dayanmaktadır. GRIP’te mevcut olan işlemler, aynı algoritmayı bazı metin tabanlı programlama dilleriyle elle kodluyorsanız, mevcut işlemlerle neredeyse 1’e 1 eşleşir.

GRIP kullanıcı arayüzü

../../../../_images/the-grip-user-interface.png

GRIP kullanıcı arayüzü 4 bölümden oluşur:

  • ** Image Sources-Görüntü Kaynakları ** görüntüleri GRIP ardışık düzenine aktarmanın yollarıdır. Ekli kameralar veya dosyalar aracılığıyla görüntü sağlayabilirsiniz. Kaynaklar neredeyse her zaman görüntü işleme algoritmasının başlangıcıdır.

  • ** Operation Palette-İşlem Paleti ** algoritmanızı oluşturmak için ardışık düzen içinde zincirleyebileceğiniz OpenCV kitaplığından görüntü işleme adımlarını içerir. Paletteki bir işleme tıklamak, onu boru hattının sonuna ekler. İşlemi ardışık düzen içinde hareket ettirmek için sol ve sağ okları kullanabilirsiniz.

  • **Pipeline-Boru hattı **, algoritmayı oluşturan adımların dizisidir. Boru hattındaki her adım (işlem), bir adımın çıkışından bir sonraki adıma bir önceki adıma bağlanır. Veriler, oluşturduğunuz bağlantılar aracılığıyla genellikle soldan sağa doğru akar.

  • ** Image Preview-Görüntü Önizleme ** ön izleme düğmesine basılan her adımın sonucunun ön izlemesini gösterir. Bu, her bir ara adımın çıktılarının ön izlemesini göstererek algoritmalarda hata ayıklamayı kolaylaştırır.

Sarı kareyi bulmak

../../../../_images/finding-the-yellow-square.png

Bu uygulamada resimdeki sarı kareyi bulmaya ve konumunu göstermeye çalışacağız. Kurulum oldukça basit, sadece bilgisayara bağlı bir USB web kamerası bazı renkli nesnelere bakıyor. Sarı plastik kare, resimde bulmak istediğimiz şeydir.

Görüntü kaynağını etkinleştirin

../../../../_images/enable-the-image-source.png

İlk adım, bir görüntü elde etmektir. Kaynağı kullanmak için, “Add Webcam-Web Kamerası Ekle” düğmesini tıklayın ve kamera numarasını seçin. Bu durumda Web Kamerası 0 olarak görünen Logitech USB kamera ve Bilgisayar monitörü kamerası Web Kamerası 1 ‘dir. Bu durumda web kamerası, kurulumda gösterildiği gibi bilgisayarın arkasındaki görüntüyü almak için seçilir. Ardından görüntü ön izleme düğmesini seçin ve kamera akışının gerçek zamanlı görüntüsü ön izleme alanında gösterilecektir.

Görüntüyü yeniden boyutlandırın

../../../../_images/resize-the-image.png

Bu durumda, kamera çözünürlüğü bizim amacımız için çok yüksektir ve aslında görüntünün tamamı ön izleme penceresinde bile görüntülenemez. “Resize-Yeniden Boyutlandır” işlemi, işlem paletinin sonuna eklemek için İşlem Paletinden tıklanır. Yeniden Boyutlandırma işleminin bulunmasına yardımcı olmak için, paletin üst kısmındaki arama kutusuna “Resize-Yeniden Boyutlandır” yazın. Adımlar:

  1. Paletteki arama kutusuna “Resize-Yeniden Boyutlandır” yazın

  2. Paletten Resize-Yeniden Boyutlandır işlemine tıklayın. Katman-level bilgisinde görünecektir.

  3. Katman-level bilgisinde yeniden boyutlandırma işlemine x ve y yeniden boyutlandırma ölçek faktörünü girin. Bu durumda her ikisi için de 0.25 seçildi.

  4. Web kamerası görüntü çıkış paspası soketinden Yeniden boyutlandırma görüntü kaynağı mat soketine sürükleyin. Kamera çıkışının yeniden boyutlandırma girişine gönderildiğini gösteren bir bağlantı gösterilecektir.

  5. İşlem hattındaki “Resize-Yeniden Boyutlandır” işleminde hedef ön izleme düğmesine tıklayın. Küçük görüntü, daha büyük orijinal görüntünün yanında görüntülenecektir. Her ikisini de gösterildiği gibi görmek için yatay olarak kaydırmanız gerekebilir.

  6. Son olarak, aynı anda hem büyük hem de daha küçük görüntüye bakmak için bir neden olmadığından, Web kamerası kaynak önizleme düğmesini tıklayın.

Görüntünün yalnızca sarı parçalarını bulun

../../../../_images/find-only-the-yellow-parts-of-the-image.png

Bir sonraki adım, görüntüdeki algılanan nesnenin sarı rengiyle eşleşmeyen her şeyi kaldırmaktır. Bunu yapmak için, sonuçta ortaya çıkan ikili görüntüye hangi piksellerin dahil edilmesi gerektiğini belirtmek için HSV değerlerinin üst ve alt sınırlarını ayarlamak üzere bir HSV Eşiği işlemi seçilir. Eşik değerleri dahilinde olmayan her şey siyah renkte gösterilirken hedef alanın beyaz olduğuna dikkat edin. Yine, daha önce olduğu gibi:

  1. HSV Eşiği işlemini bulmak için arama kutusuna HSV yazın.

  2. Paletteki işleme tıklayın ve katman-level bilgisinin sonunda görünecektir.

  3. Yeniden boyutlandırma işlemindeki dst (çıkış) soketini HSV Eşiğinin girişine bağlayın.

  4. HSV Eşiği işleminin önizlemesini etkinleştirin, böylece işlemin sonucu önizleme penceresinde görüntülenir.

  5. Ton, Doygunluk ve Değer parametrelerini ayarlayın, önizleme penceresinde yalnızca hedef nesne gösterilir.

Kirlilikten ve gereksiz darbelerden kurtulun

../../../../_images/get-rid-of-the-noise.png

Şimdiye kadar oldukça iyi görünüyor, ancak bazen başka şeylerden tam olarak filtrelenemeyen kirlilik geliyor. Tespit edilen bu ara sıra pikselleri azaltmak için olası bir tekniği göstermek için bir Erozyon işlemi seçilmiştir. Erozyon, ilgilenilen alanın parçası olmayan küçük piksel gruplarını kaldıracaktır.

Orijinal görüntüde yalnızca sarı alanı maskeleyin

../../../../_images/mask-just-the-yellow-area.png

Here a new image is generated by taking the original image and masking (and operation) it with the results of the erosion. This leaves just the yellow card as seen in the original image with nothing else shown. And it makes it easy to visualize exactly what was being found through the series of filters.

Sarı alanı (blob) bulun

../../../../_images/find-the-yellow-area.png

The last step is actually detecting the yellow card using a Blob Detector. This operation looks for a grouping of pixels that have some minimum area. In this case, the only non-black pixels are from the yellow card after the filtering is done. You can see that a circle is drawn around the detected portion of the image. In the release version of GRIP (watch for more updates between now and kickoff) you will be able to send parameters about the detected blob to your robot program using NetworkTables.

GRIP Konumu

As you can see from this example, it is very easy and fast to be able to do simple object recognition using GRIP. While this is a very simple example, it illustrates the basic principles of using GRIP and feature extraction in general. Over the coming weeks the project team will be posting updates to GRIP as more features are added. Currently it supports cameras (Axis ethernet camera and web cameras) and image inputs. There is no provision for output yet although NetworkTables and ROS (Robot Operating System) are planned.

Kodun önceden oluşturulmuş bir sürümünü GitHub sayfasındaki “Releases-Sürümler” bölümünden (https://github.com/WPIRoboticsProjects/GRIP) indirebilir veya kaynak havuzunu klonlayıp kendiniz oluşturabilirsiniz. GRIP oluşturma ile ilgili talimatlar proje sayfasındadır. Wiki projesine belgeler eklenmiştir.

Bu nedenle, lütfen GRiP ile oynayın ve forumda bize geri bildirimde bulunun. Hatalar bulursanız, bunları buraya veya proje sayfasında GitHub proje sorunu olarak gönderebilirsiniz.