Yaya tanıma (pedestrian detection)
video takip, kişi davranış analizi, akıllı arabalar için sürücü
destek sistemi gibi farklı uygulamalarda kullanılabilir. Yaya
tespiti probleminde makine öğrenmesi teknikleri yaygın olarak
kullanılmaktadır, bu tekniklerde eğitilmiş sınıflandırıcılar
ile görüntü içerisindeki yaya tespit edilmeye çalışılır.
Sınıflama yapılırken yani bizim örneğimizde görüntüdeki
insanları bulurken, uygun bir sınıflandırıcı bulmak kadar
bulunacak nesneye ait olan seçici/ayırt edici bir özelliğin
(feature) çıkarılabilir olması da çok önemlidir.
Yayaların tanınması probleminde HOG (Histograms of Oriented
Gradient) ile özellik çıkarılması yönteminin başarılı
sonuçlar verdiği gösterilmiştir.
23 Ocak 2017 Pazartesi
11 Ocak 2017 Çarşamba
C++ inline fonksiyon, önişlemci (preprocessor)
C++'da önişlemci(preprocessor)/önişleme derleme işlemiminin bir parçası değildir, daha önce gerçekleştirilen bir aşamadır. Önişlemci adı üstünde olduğu gibi derleme işleminden önce kaynak kod üzerinde bir takım düzenlemeler/değişiklikler yapar. # karakteri ile başlayan satırlar önişlemci tarafından işlenir.
7 Ocak 2017 Cumartesi
Arduino TFT ekran ve Timer
Şimdiye kadar Görüntü işleme, Python, C++ ile ilgili çeşitli örnekler paylaştım. Bu defa küçük bir farklılık yapıp Arduino ile bir örnek uygulama paylaşmak istiyorum. Gerçekleştirdiğim bu uygulamada Arduino Mega 2560 ve ER_TFTM043_3 lcd ekran kullanılmıştır. Uygulamada amaç tft lcd ekranı sürmek ve bu ekranı timer kullanarak güncellemektir. Bunun için UTFT ve TimerOne kütüphaneleri kullanılmıştır.
(Not: LCD görüntüsü aşağıdaki gibidir, yazının sonunda videoyu da izleyebilirsiniz)
5 Ocak 2017 Perşembe
Operatör Aşırı Yükleme (C++) - Operator Overloading
Operatör aşırı yükleme bir operatörün default tanımlı görevi dışında tanımlanan yeni bir görevi de yapabilecek hale getirilmesidir. Genel olarak syntax şu şekildedir.
type
operator sign (parameters) { /*... body ...*/ }
C++
için aşırı yüklenmesine izin verilen ve verilmeyen oparatörler
şunlardır;
6 Aralık 2016 Salı
Blob Detection Using OPENCV (C++)
GitHub (https://github.com/mribrahim/Blob-Detection) to download the codes and contribute the project
A Blob means a group of connected pixels in an image that share near intensity values. In the image below, the goal is to detect the blobs and identify some properties belong to that blobs, as if regionprobs in Python (http://scikit-image.org/docs/dev/api/skimage.measure.html#skimage.measure.regionprops).
Measure Properties of Regions
center: point2f -> Center coordinates of region
area: float -> Number of pixels of region.
perimeter: float -> Perimeter of region.
eccentricity: float -> Between 1 and 0. (1 for circle)
solidity: float -> Between 1 and 0. ( Area / ConvexHullArea )
compactness: float -> Between 1 and 0. ( Area / BoundingRect Area ) -- measure of how close to a rectangle
mean_intensity: Vec3b -> mean intensity values of three channel(blue,green,red) of the region
bounding_box: Rect -> Bounding box of the region
9 Kasım 2016 Çarşamba
C++ XML işlemleri
XML, farklı sistemler/yazılımlar arasında veri paylaşımını sağlamak için geliştirilmiş bir standarttır. Böylece paylaşılmak istenen verilerin, standart format kullanılarak yazılımdan bağımsız bir şekilde saklanması ve iletilmesi sağlanır.
C++ ile XML dökümanları
oluşturmak ve okuyup ayrıştırmak için çeşitli kütüphaneler
mevcuttur. Bunlardan bazıları :
RapidXml
(http://rapidxml.sourceforge.net)
TinyXml (
http://www.grinninglizard.com/tinyxml/)
6 Kasım 2016 Pazar
HSV renk uzayı, Renk filtreleme
RGB renk uzayı renkleri farklı
tonlardaki üç ana rengin (kırmızı,yeşil,mavi) karışımı ile
tanımlar.
HSV renk uzayı ise Hue,
Saturation ve Value terimleri ile rengi tanımlar. RGB
de renklerin karışımı kullanılmasına karşın HSV de renk,
doygunluk ve parlaklık değerleri kullanılır. Doygunluk rengin
canlılığını belirlerken parlaklık rengin aydınlığını ifade
eder. HSV uzayında siyah renk için renk ve doygunluk
değerleri 0 ile 255 arasında herhangi bir alabilir iken parlaklık
değeri sıfırdır. Beyaz renkte ise ise parlaklık değeri 255'dir.
Buna göre herhangi bir bilgisayarlı
görme/görüntü işleme uygulamasında belirli renkteki bir nesneyi
ayırt etmek istediğimizde HSV renk uzayını kullanmak daha
elverişlidir. Çünkü RGB nin aksine sadece hue değerini
kullanarak eşik değer uygulama suretiyle renkleri daha net ayırt
edebiliriz.
Örneğin; Aşağıda soldaki Muslera fotoğrafından kırmızı bölgeleri ayırt etmek istediğimizde; HSV renk uzayını kullanınca sağ üstteki sonucu, RGB renk uzayını kullanınca sağ alttaki sonucu elde ediyoruz. İlgili Python kodlarına yazının devamında ulaşabilirsiniz.
27 Ekim 2016 Perşembe
Python - Opencv kamera kalibrasyonu
Kamera kalibrasyonu 3 boyutlu bilgisayarlı görme uygulamalarında son
derece önemlidir. Malumunuz kamera ile elde edilen görüntüler 2
boyutludur ve ayrıca kullanılan lensten kaynaklanan bozulmalar da
vardır. Örneğin kullanılan lense göre görüntünün
merkezindeki pikseller ile kenarlardaki piksellerin yer değiştirme
oranları(nasıl tarif edeceğimi tam bulamadım ama literatürde
bknz. lens distortion) farklı olabilir (Şekil 1). Kameranın
üretiminden kaynaklanan bu bozukluğu gidermek için; kameranın iç
parametreleri diye adlandırılan lens parametrelerini tahmin edip
görüntüye düzeltme işlemi uygulamak gerekir. Bunun için gerçek
büyüklüğü bilinen bir nesne referans olarak kullanılmalıdır.
Genelde satranç tahtası (chessboard) bu amaçla
kullanılır ve görüntü işlemede yaygın kullanılan OPENCV
içerisinde de bu amaçla geliştirilmiş fonksiyonlar mevcuttur.
Şekil 1
19 Ekim 2016 Çarşamba
Python - VTK ile 3 Boyutlu (3D) görüntü oluşturma
Bu yazıda .stl uzantılı dosyayı okuyup VTK kütüphanesi ile 3 Boyutlu görüntüyü oluşturan Python kodunu paylaşacağım.
8 Ekim 2016 Cumartesi
Python - Dicom medikal görüntülerin açılması (SimpleItk, Vtk, Pydicom)
Medical
görüntülerin depolanması/saklanması için DICOM dosya formatı
yaygın olarak kullanılmaktadır. DICOM görüntüler hastane
ve kliniklerdeki görüntüleme cihazlarından elde edilen
görüntülerin kalitelerinin korunmasını sağlar ve görüntünün
elde edilişine dair kesit aralığı, modalite, protokol adı gibi
parametreleri de içerir. Bu yazımda dicom görüntülerin Python
ile nasıl açılacağına/okunacağına dair bilgiler vereceğim.
25 Eylül 2016 Pazar
Python - Webcam Capture GUI with PyQT
I will show an example how to capture webcam and display into QT widget. Opencv is used to capture the video and the stream is shown in a GUI. The main reason for integrating PyQT and Opencv is to be able to provide UI for computer vision applications using Opencv and Python.
QT Designer is used to design the GUI. User Interface in this example is so simple with only two buttons and a Qlabel(videoframe) is to show the stream.
QT Designer is used to design the GUI. User Interface in this example is so simple with only two buttons and a Qlabel(videoframe) is to show the stream.
Kaydol:
Kayıtlar (Atom)






