1986 Dünya Kupası Arjantin-İngiltere maçını çoğu futbolsever bilir. Bu çeyrek final maçında durum 1-1 iken sağ taraftan ceza sahası içine yüksek bir top geliyor. Maradona ve İngiliz kaleci topa birlikte yükseliyorlar fakat Maradona topa uzanamayacağını anlayınca eliyle golü atıyor. Hakem ise bunu göremeyip golü veriyor. Maçı 2-1 kazanan Arjantin sonrasında dünya kupasını da kazanıyor. Maçtan sonra Maradona’ya golü sorduklarında ise o Tanrı’nın eliydi cevabını veriyor. Bu gol futbol tarihine geçen en önemli hakem hatalarından biridir. Hataların haricinde bir o kadarda tartışmalı kararlar vardır. Belkide futbolu güzel yapan budur.

Örneğin 1966 Dünya Kupasında İngiltere’ye tek dünya şampiyonluğunu getiren Batı Almanya’ya karşı atılan ikinci gol. Senelerce topun kale çizginden geçip geçmediği tartışılmıştır. Geçenlerde pozisyon bilgisayar ortamında tekrar simule edilmiş ve gol olduğu kesinlik kazanmıştır.

Computer Vision

İnsanlara görsel problemlerde yardımcı olacak ve anlık karar verecek sistemleri nasıl geliştirebiliriz? Topun çizgiyi geçip geçmediğini, ne kadar uzunlukta geçtiğini, bir futbolcunun ofsayt olduğunu nasıl bulabiliriz? Aslında bu soruların cevabını Computer Vision alanı veriyor. Computer Vision bilgisayardan elde edilen bir görüntüden anlamlar çıkarmak için kullanılan disiplindir.

Edge Detection

Kenar Bulma’nın (Edge detection) temel amacı resim içindeki çizgilerin ani değişikliklerini yakalayabilmektir.

Resimdeki bir kenarı bulmak için sırasıyla şu işlemleri yapıyoruz.

  • Resmimizi Gaussian filtresinden geçiriyoruz.
  • Gradyanın büyüklüğünü ve yönünü buluyoruz.
  • Nesne tespiti için kullanılan Non-Maximum Supression algoritmasını uyguluyoruz.
  • Kenar noktalarının birleştiriyoruz.

Tahmin edersiniz ki renkli bir resimde işlem yapmak çok zordur. Bu nedenle öncelikle resmi siyah beyaz hale getirmemiz gerekir. Sonrasında Gaussian filtrelemesini kullanıyoruz. Gaussian filtresi, doğrusal bir filtredir. Genellikle görüntüyü bulanıklaştırmak veya gürültüyü azaltmak için kullanılır.Kenar algılama için kullanabilirsiniz. Gauss filtresi tek başına kenarları bulanıklaştıracak ve kontrastı azaltacaktır.

Siyah beyaz bir resimde bir çizginin devam edip etmediğine veya bunun bir çizgi olup olmadığına Image Gradient ile karar verebiliriz. Gradient (Gradyan) bir fonksiyonun birim değişiminin hangi yönde maksimum olduğunu belirlemek için kullanılır.

The Gradient Direction

Gradyan yönü yukarıdaki formülle bulunuyor.

Edge Strength – Source:Steve Seitz

Non-Maximum Supression algoritmasını kısaca şöyle açıklayabiliriz. Resim içindeki objelerin birden fazla bulunmasını azaltıp tek bir kere bulunmasını sağlamaya yarar diyebiliriz.

Andrew Ng – Convolutional Neural Networks

Yukarıdaki resimde objelerin bulunma olasılığının en yüksek olduğu 0.8 ve 0.9 orana sahip dikdörtgenler objeyi temsil edeceklerdir.

Kenar noktalarını birleştirmek için Hysteresis thresholding yöntemini kullanabiliriz.Bu sayede zayıf çizgiler güçlendirilip belirgin hale getirilir.

Bu temel bilgiler ışığında bir “offside detection” yazılımı geliştirmeyi deneyelim.Amacımız öncellikle bir ofsayt pozisyonu olan bir imaj bulmak 🙂

Offside

Kullanıcıdan burada beklentimiz defans yapan takımın kaleye en yakın son oyuncusunu ve atak yapan takımın kale çizgisine en yakın oyuncusunu işaretlemesi. Bu değerleri input değerlerimiz olarak alacağız.

Kullanıcıdan input değerlerinin alınması

Kullanıcıdan aldığımız noktalara göre imaj üzerinde iki adet çizgi oluşturuyoruz.

Kenarları tespit edebilmek için Canny veya Sobel kenar tespit algoritmalarını kullanabiliriz. Bundan önce resmi daha önce bahsetdiğimiz gibi rgb’den gray image’a dönüştürmeliyiz.

rgb2gray – Sobel Edge Detector

Yukarıdaki gibi imajımızı gray imaja dönüştürdükten sonra Matlab’ta sobel kenar bulma algoritmasını uyguluyoruz. Sonrasında aşağıdaki görüntüyü elde ediyoruz.

Sobel Edge Detection

Hough Transform

Hough Dönüşümü resim içerisindeki çizgileri tespit etmek amacıyla kullanılan yöntemlerden birisidir.

Hough Transform Matlab

Matlab’ın hough fonksiyonunu kenarları tespit ettiğimiz yukarıdaki siyah beyaz görüntüye uyguladık. Hough fonksiyonundan H,theta ve rho değerlerini aldık. Bu parametreleri görüntüden çizgiler elde etmek için kullanıyoruz.

Hough Transform ile çizgilerin bulunması

Çizgileri görüntü içinden bulmuş olmamız aslında yeterli değil. İki çizgi arasındaki farktan yararlanarak oyuncunun ofsayt olup olmadığını bulabiliriz. Aynı zamanda oyuncunun kaç cm ofsaytta olduğunuda bulabiliriz. Bu bilgileri bulabilmek için Homography Estimation ve Camera Calibration adı verilen iki teknikten yararlanıyoruz. Şimdiye kadar anlattığım tüm teknikler tek bir makaleye sığmayacak kadar büyük ve detaylı konular. Yinede kısaca değinmeye çalışacağım.

Kamera kalibrasyonunu hesaplamak için homografi tekniğini kullanıyoruz.

Camera calibration

Her bir görüntü için homografiler hesaplandıktan sonra, her homografiye karşılık gelen parametreleri bulmak gerekir. Ortak kameranın konumu için ilk tahmin, her bir görüntüden tüm kameranın konumlarının ortalamasıdır.

Ofsayt çizgisi ile son savunma hattı arasındaki boşluğu ölçmek

Resimdeki iki çizgi arasında ölçüm yapmak için öklid mesafesini kullanabiliriz. Görüntünün ilk satırı aslında saha çizgisi olmalı. Saha boyutları FIFA’ya göre standarttır, bu yüzden bu bilinen çizgiler arasındaki çizgileri karşılaştırabilir ve alttan üstten çıkarabilirim, bu bana mesafe değerini veriyor olmalı. Bilinen saha ölçüleri sayesinde savunma ile atak yapan takım oyuncusunun arasındaki mesafeyi bulabiliriz.

Bu makalede özetle bir görüntüden ofsayt pozisyonu nasıl yakalanabilir anlatmaya çalıştım. Sonraki yazılarımda makalede geçen özet olarak geçtiğim konuları detaylandırmaya çalışacağım. Başka bir makalede görüşmek üzere 🙂

Murat.

By mgm

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir