Bir Görüntüyü Eşikleme

Kameranız tarafından çekilmiş gibi renkli bir görüntüyü hedefin “foreground-ön plan” olduğu ikili bir görüntüye dönüştürmek için, her pikselin tonunu, doygunluğunu ve değerini kullanarak görüntüyü eşik yapmamız gerekir.

HSV Modeli

RGB’den farklı olarak HSV, yalnızca piksellerin renklerine göre değil, aynı zamanda renk yoğunluğuna ve parlaklığa göre de filtre uygulamanıza olanak tanır.

  • Ton: Pikselin rengini ölçer.

  • Doygunluk: Pikselin renk yoğunluğunu ölçer.

  • Değer: Pikselin parlaklığını ölçer.

The effects hue, saturation, and value each have on a color.

Bir BGR görüntü matrisini HSV’ye dönüştürmek için OpenCV’yi kullanabilirsiniz.

hsv_img = cv2.cvtColor(input_img, cv2.COLOR_BGR2HSV)

Not

OpenCV’nin ton aralığı, ortak 1 ° ila 360 ° yerine 1 ° ila 180 ° arasındadır. Ortak bir ton değerini OpenCV’ye dönüştürmek için 2’ye bölün.

Thresholding-Eşik

Bu alan görüntüsünü tüm görüntü işleme süreci için örnek olarak kullanacağız.

A low brightness image with the retroreflective tape showing green.

Görüntüyü HSV kullanarak eşleyerek, görüntüyü hedef (ön plan) ve kameranın gördüğü diğer şeyler (arka plan) olarak ayırabilirsiniz. Aşağıdaki kod örneği, bir HSV görüntüsünü HSV değerleriyle eşikleyerek ikili görüntüye dönüştürür.

binary_img = cv2.inRange(hsv_img, (min_hue, min_sat, min_val), (max_hue, max_sat, max_val))

Not

Ortam aydınlatması mekanlar arasında farklılık gösterebileceğinden, bu değerlerin mekana göre ayarlanması gerekebilir. Anında düzenlemeyi kolaylaştırmak için bu değerlerin NetworkTables aracılığıyla düzenlenmesine izin verilmesi önerilir.

Eşiklemeden sonra, görüntünüz böyle görünmelidir.

After thresholding most of the rest or the image is masked out and the green tape is returned at white.

Gördüğünüz gibi, eşikleme işlemi% 100 temiz olmayabilir. Gürültüyle başa çıkmak için morfolojik işlemleri kullanabilirsiniz.