Hedeflerin Belirlenmesi ve İşlenmesi

Bir görüntü yakalandıktan sonraki adım, görüntüdeki Vision Target(s)-Görme Hedeflerini belirlemektir. Bu belge, 2016 hedeflerini belirlemek için tek bir yaklaşımdan geçecektir. Bu bölümde kullanılan görüntülerin kamera ile kasıtlı olarak düşük pozlama ayarlı olarak çekildiğini ve yanan hedefler haricinde çok karanlık görüntüler oluşturduğunu unutmayın, ayrıntılar için Kamera Ayarları bölümüne bakın.

Gerçek görüntü

Aşağıda gösterilen görüntü, burada açıklanan örnek için başlangıç görüntüsüdür. Görüntü, FIRST® konumunda bulunan yeşil halka ışığı kullanılarak alınmıştır Seçim, farklı boyutta ek bir halka ışıkla birleştirildi. Görüntü kodu örnekleriyle birlikte ek örnek görüntüler sağlanır.

Sample image using a green ring light showing the retroreflective tape.

HSL / HSV nedir?

Ton veya rengin tonu genellikle sanatçının renk çarkında görülür ve gökkuşağı Kırmızı, Turuncu, Sarı, Yeşil, Mavi, Çivit Mavisi ve Menekşe renklerini içerir. Renk tonu, tekerlek üzerindeki bir radyal açı kullanılarak belirlenir, ancak görüntülemede daire tipik olarak, sıfırdan kırmızıdan başlayarak, gökkuşağı boyunca dönerek ve üst uçta tekrar kırmızıya sararak yalnızca 256 birim içerir. Bir rengin doygunluğu, renk miktarını veya ton renginin gri gölgeye oranını belirtir. Daha yüksek oran, daha renkli, daha az gri demektir. Sıfır doygunluğun tonu yoktur ve tamamen gridir. Parlaklık veya Değer, tonun harmanlandığı gri tonunu gösterir. Siyah 0 ve beyaz 255’tir.

Örnek kod, hedefin rengini belirtmek için HSV renk uzayını kullanır. Birincil neden, Hedeflerin parlaklığını, görüntünün geri kalanına göre, Değer (HSV) veya Parlaklık (HSL) bileşenini kullanarak bir filtreleme kriteri olarak kullanmaya kolayca izin vermesidir. HSV renk sistemini kullanmanın bir başka nedeni, örnekte kullanılan eşikleme işleminin HSV renk uzayında yapıldığında roboRIO üzerinde daha verimli çalışmasıdır.

Maskeleme

Bu ilk adımda, aşağıda sarı renkte gösterilen bir ikili maske oluşturmak için piksel değerleri sabit renk veya parlaklık değerleriyle karşılaştırılır. Bu tek adım, hedefin geriye dönük yansıtıcı bandının parçası olmayan piksellerin çoğunu ortadan kaldırır. Renk tabanlı maskeleme, rengin nispeten doygun, parlak ve tutarlı olması koşuluyla iyi çalışır. Renk eşitsizlikleri genellikle HSL (Ton, Doygunluk ve Parlaklık) veya HSV (Ton, Doygunluk ve Değer) renk alanı kullanılarak belirtildiğinde RGB (Kırmızı, Yeşil ve Mavi) alanından daha doğrudur. Bu, özellikle renk aralığı bir veya daha fazla boyutta oldukça geniş olduğunda geçerlidir.

Hedefe ek olarak, görüntünün diğer parlak kısımlarının da (üstten ışık ve kule aydınlatması) maskeleme adımında yakalandığına dikkat edin.

Masked version of the image above showing the "bright" parts of the image.

Parçacık Analizi

Maskeleme işleminden sonra, alanı, sınırlayıcı dikdörtgeni ve parçacıklar için eşdeğer dikdörtgeni incelemek için bir parçacık raporu işlemi kullanılır. Bunlar, en dikdörtgen olan şekilleri seçmeye yardımcı olmak için birkaç puanlanmış terimi hesaplamak için kullanılır. Aşağıda açıklanan her test bir puan (0-100) oluşturur ve bu daha sonra parçacığın hedef olup olmadığına karar vermek için önceden tanımlanmış puan limitleriyle karşılaştırılır.

Kapsama alanı

Alan puanı, parçacığın çevresine çizilen sınırlayıcı kutunun alanıyla karşılaştırılarak parçacık alanı karşılaştırılarak hesaplanır. Arkadan yansıtmalı şeritlerin alanı 80 inç karedir (~ 516: matematik: “cm ^ 2”). Hedefi içeren dikdörtgenin alanı 240 inç karedir (~ 0,15: matematik: “m ^ 2”). Bu, alan ve sınırlayıcı kutu alanı arasındaki ideal oranın 1/3 olduğu anlamına gelir. 1 / 3’e yakın alan oranları 100’e yakın bir puan üretecektir, oran 1 / 3’ten farklılaştıkça puan 0’a yaklaşacaktır.

En Boy Oranı

En boy oranı puanı (Partikül Genişliği / Partikül Yüksekliği) temel alınarak belirlenir. Parçacığın genişliği ve yüksekliği “eşdeğer dikdörtgen” adı verilen bir şey kullanılarak belirlenir. Eşdeğer dikdörtgen, kenar uzunlukları olan dikdörtgendir : math:x ve: math:y burada: math:2x+2y, parçacık çevresine ve: math:x cdot y, parçacık alanına eşittir. Eşdeğer dikdörtgen, en boy oranı hesaplamasında kullanılır, çünkü dikdörtgenin eğrilmesinden sınırlayıcı kutuyu kullanmaktan daha az etkilenir. En boy oranı için sınırlayıcı kutu dikdörtgeni kullanıldığında, dikdörtgen eğriltildikçe yükseklik artar ve genişlik azalır.

Hedef 1,6 oran için 20 “(508 mm) genişliğinde ve 12” (304,8 mm) yüksekliğindedir. Tespit edilen en boy oranı bu ideal oran ile karşılaştırılır. En boy oranı puanı, oran hedef oranla eşleştiğinde ve oran aşağı veya yukarı değiştikçe doğrusal olarak düştüğünde 100’e geri dönecek şekilde normalleştirilir.

An

The “moment” measurement calculates how spread out each pixel is from the center of the blob. This measurement provides a representation of the pixel distribution in the particle. It can be thought of as analogous to a physics moment of inertia calculation. The ideal score for this test is ~0.28.

X / Y Profilleri

A graph and LabVIEW plot showing X/Y Profiles.

Kenar puanı, parçacığın hem X hem de Y yönlerinde uygun profille eşleşip eşleşmediğini açıklar. Gösterildiği gibi, orijinal görüntüden çıkarılan sınırlayıcı kutu boyunca satır ve sütun ortalamaları kullanılarak ve bunu bir profil maskesi ile karşılaştırarak hesaplanır. Puan, üst ve alt sınır değerleri arasındaki satır veya sütun ortalamaları içindeki değerlerin sayısına bağlı olarak 0 ile 100 arasında değişir.

Ölçümler

Bir parçacık hedef olarak değerlendirilebilecek kadar iyi puan alırsa, konum ve mesafe gibi bazı gerçek dünya ölçümlerini hesaplamak mantıklıdır. Örnek kod bu temel ölçümleri içerir, bu yüzden onu daha iyi anlamak için ilgili matematiğe bakalım.

Durum

Hedef konum, hem parçacık hem de sınırlayıcı kutu tarafından iyi tanımlanmıştır, ancak tüm koordinatlar, ekranın sol üst köşesinde 0,0 ve kamera çözünürlüğü tarafından belirlenen sağ ve alt kenarlar olmak üzere piksel cinsindendir. Bu, piksel matematiği için kullanışlı bir sistemdir, ancak bir robotu sürmek için neredeyse hiç kullanışlı değildir; Öyleyse daha yararlı olabilecek bir şeyle değiştirelim.

Bir noktayı piksel sisteminden nişan alma sistemine dönüştürmek için aşağıda gösterilen formülü kullanabiliriz.

The resulting coordinates are close to what you may want, but the Y axis is inverted. This could be corrected by multiplying the point by [1,-1] (Note: this is not done in the sample code). This coordinate system is useful because it has a centered origin and the scale is similar to joystick outputs and Drive inputs.

\[A_{x,y} = \left(P_{x,y} - \frac{\textit{resolution}_{x,y}}{2}\right) / \frac{\textit{resolution}_{x,y}}{2}\]
Two images one of a pixel based axis and another from -1 to 1 that can be directly used with motors for aiming.

Görüş alanı

Hedeften mesafenizi, sapmanızı ve eğiminizi belirlemek için bilinen sabitleri ve hedefin koordinat düzlemindeki konumunu kullanabilirsiniz. Ancak, bunları hesaplamak için FOV’nuzu (görüş alanınızı) belirlemelisiniz. Dikey görüş alanını ampirik olarak belirlemek için, kameranızı düz bir yüzeyden belirli bir mesafe uzağa ayarlayın ve en üstteki ve en alttaki piksel sırası arasındaki mesafeyi ölçün.

\[\frac{1}{2}FOV_{vertical}=tan\left(\frac{\frac{1}{2}distance_{y}}{distance_{z}}\right)\]

Yatay FOV’u aynı yöntemi kullanarak, ancak ilk ve son piksel sütunu arasındaki mesafeyi kullanarak bulabilirsiniz.

Pitch and Yaw

FOV’larınızı ve hedef koordinat sistemindeki hedefinizin konumunu öğrendikten sonra, robotunuza göre hedefin eğimini ve sapmasını bulmak basittir.

\[pitch=\frac{A_y}{2}FOV_{vertical}\]
\[yaw=\frac{A_x}{2}FOV_{horizontal}\]

Mesafe

Hedefiniz robotunuzdan önemli ölçüde farklı bir yükseklikte ise, kameranız ile kamera arasındaki mesafeyi hesaplamak için hedefin ve kameranızın fiziksel yüksekliği ve kameranızın monte edildiği açı gibi bilinen sabitleri kullanabilirsiniz. hedef.

\[distance=\frac{height_{target}-height_{camera}}{tan(angle_{camera}+pitch)}\]

Diğer bir seçenek, alan-mesafe için bir arama tablosu oluşturmak veya alan ve mesafenin ters varyasyon sabitini tahmin etmektir. Ancak bu yöntem daha az doğrudur.

Not

Yukarıdaki açı ve mesafe tahmin yöntemlerinden en iyi sonuçları elde etmek için, kalibrasyon matrisini kullanarak hedefin piksellerini yeniden projekte ederek doğruluğu etkileyebilecek tüm bozulmalardan kurtulmak için OpenCV kullanarak kameranızı kalibre edebilirsiniz.