OpenCV kütüphanesi ile Görüntü İşleme(Android)-2

Pelin Tunçel
lTunes Tribe
Published in
3 min readDec 7, 2020

Herkese tekrardan merhaba :) Önceki yazımda da bahsettiğim gibi, bu yazımda projenin analizi ile seriye devam edeceğim. O zaman başlayalım..

ANALİZ

OCR Araçları:

Projede OCR kullanmanın iki yolu vardır. İlki Tesseract kütüphanesi. İkincisi, Google Mobile Vision API. Her ikisi de Google ürünüdür. Proje, karakter tanıma için OCR kullanmalıdır ve geliştirme için Google Mobile Vision API seçilmiştir. Google Mobile Vision API, yapılandırılmamış sahnelerde Tesseract’tan daha iyi sonuçlar verir.

Ufuk Noktası Algılama:

Projenin son adımı ufuk noktasını bulmaktır. Bu aşama için, yakalanan tabelanın çizgi denklemleri OpenCV kütüphanesi ile Hough Line Transform yöntemi ile bulunmalıdır. Bunun için iki seçenek mevcut. Standard Hough Line Transform ve Probabilistic Hough Line Transform. Geliştirme aşamasında Probabilistic Hough Line Transform ile ilerledik. Ufuk noktası tespiti için çizgi segmentleri işleme yapıyoruz. Bizim bunun için yalnızca yatay ufuk noktasına ihtiyacımız var.

Yatay ufuk noktalarını kullanarak kameranın açısını ve konumunu belirleme yöntemi buradaki linkte detaylı bir şekilde, baz aldığım projenin tez yazısında açıklanmıştır. Önceki yazımda da hatırlarsanız buradan bir senaryo örneği koymuştum. Şimdi işin biraz matematiksel kısmına gireceğiz.

Görüntüde tespit edilen i. neredeyse yatay olan çizgi(Li) aşağıdaki gibi tanımlanırsa:

Equation 1

Yatay ufuk noktasının görüntü koordinatları şu şekilde tahmin edilebilir:

Equation 2 & Equation 3

A, B, C, D, E ve F değerleri aşağıdaki formüllerle bulunacaktır

Equation to calculate A, B, C, D, E and F

ve γ ai’nin karesi artı bi’nin karesiyle bulunabilir.

VPx değerine sahibiz ve bu değeri xhor(x horizontal) olarak alıyoruz. Xhor(x horizontal) ile, AOV(Angle of View- Bakış açısı) şu şekilde tahmin edilebilir:

Equation 4

Kullanıcının AOV(Angle of View- Bakış açısı) değeri θ ise ve gerçek genişlik ve OCR kutusunun görüntü genişliği sırasıyla W,w ise, kullanıcının derinliği aşağıdaki formül ile hesaplanabilir:

Depth Formula

Son olarak, derinlik ve AOV hesaplandıktan sonra, kullanıcı konumunun X ve Z koordinatları şu şekilde elde edilebilir:

Equation 5 & Equation 6

Görüntü işleme:

Görüntü işleme için en yaygın kütüphane OpenCV’dir. En iyi yol bu kütüphaneyi seçmektir. Projede, OpenCV yöntemleri, görüntü ikileştirme ve kenar algılama gibi, projenin temel adımları için kullanılmaktadır.

Mobil Cihazın İşletim Sistemi:

Bildiğiniz üzere iki seçeneğimiz mevcut. Android veya iOS. Android kullanıcıları iOS kullanıcılarından daha fazla olduğu için projede öncelikli geliştirme için Android işletim sistemi seçildi ve geliştirme için Android Studio IDE kullanıldı.

Her ne kadar Android kullanıcıları iOS kullanıcılarından fazla olsa da, bir iOS kullanıcısı olarak mesleki hayatımda da iOS developer olmayı tercih ettim :) Tabi bu yola çıkma kararını almadan önce bahsetmiş olduğum proje gibi deneyimler de edinmiş oldum. Android yazmayı elimden geldiğince bırakmamaya, oraya da hakim olmaya çalışmaktayım.

Ufak bir şekilde kendi uzmanlığımdan da bahsettiğime göre sonuca geçebiliriz :) Bu yazıda analiz kısmını detaylı bir şekilde incelemiş olduk. Projenin en önemli noktası olan kullanıcının yerini belirlerken izlediğimiz yolları ve bunları izlerken ne tür denklemler kullandığımızı gördük. Umarım bu yazımla sizlere yardımcı olabilmişimdir. Diğer yazımda projenin design ve implementation kısmına devam edeceğim. O zamana kadar bu pandemi döneminde kendinize çok dikkat edin ve sağlıkla kalın :) Görüşmek üzere..

--

--

Pelin Tunçel
lTunes Tribe

Senior iOS Developer, Professional Korfball Player