5. Piksel Değerleri
Piksel değeri aralığı görüntünün niteliğini değiştirir.
0 genelde siyahı temsil ederken n-1 beyazı temsil eder.
n = 2b 'dir.
b = 8 için; n = 256 olur.
Bu değerler için 0 siyahı, 255 beyazı temsil eder.
(b: Görüntünün 1 pikselini ifade etmek için gereken bit sayısı)
6. Sayısal Görüntü Çeşitleri
İkili (Binary) Görüntü
Gri Ölçekli (Grayscale) Görüntü
Renkli (Colour) Görüntü
7. İkili (Binary Görüntü)
Her pikselin, renk bilgisi için sadece iki değerden birini
alabileceği sayısal görüntüler
Düşük renk değerleri → 0 (siyah)
Yüksek renk değerleri → 1 (beyaz)
8. Gri Ölçekli (Grayscale) Görüntü
Her pikselin, renk bilgisi için aynı değeri aldığı
sayısal görüntüler
Gri = (R + G + B) / 3
9. Renkli (Colour) Görüntü
Her pikselin, renk bilgisi için farklı değerleri alabildiği
sayısal görüntüler
Piksellerin renk değerleri bir renk uzayındaki genellikle
üç kanalın karışımıyla elde edilir.
RGB için kırmızı, yeşil ve mavi kanallarının farklı
tonlarından ortak bir renk ortaya çıkar.
12. Görüntü İşleme Kullanım Amaçları
Görüntü İyileştirme
Görüntü Onarma
Görüntü Sıkıştırma
Görüntü Analiz Etme
Görüntü Tanıma
vb.
13. Görüntü İşleme Uygulama Alanları
Tıp
Astronomi
Coğrafya
Biyoloji
Endüstriyel Uygulamalar
Mühendislik
Belge İşleme
Güvenlik, Savunma ve Hukuk
Parmak İzi, Plaka, İris, Yüz Tanıma
16. OpenCV
(Open Source Computer Vision)
GNU/Linux, Android, Windows ve Mac OS destekli
BSD Lisanslı
2500'den fazla eniyilenmiş algoritma
17. OpenCV
(Open Source Computer Vision)
Gerçek zamanlı bilgisayarlı görü ve
makine öğrenmesi kütüphanesi
Intel, Willow Garage, Itseez tarafından geliştiriliyor
Python, C, C++ ve Java arayüzlerine sahip
18. OpenCV Kullanım Alanları
Görüntü işleme
Yüz, yüz ifadesi, nesne tanıma
Hareket, nesne belirleme, izleme
Hareket anlama
Robot bilim, insan bilgisayar etkileşimi
...
19. Python – Python Imaging Library
Python yorumlayıcısı için görüntü işleme kütüphanesi
Temel, kullanışlı görüntü işlemleri
20. Python - NumPy
Python için bilimsel hesaplama aracı
n-boyutlu dizi nesneleri
(vektör, matris, görüntü vb.)
Lineer Cebir fonksiyonları
Fourier dönüşümleri
21. Python - SciPy
Python için NumPy tabanlı hesaplama kütüphanesi
Eniyileme, istatistik, sinyal işleme,
görüntü işleme
22. Görüntü İşlemleri
a[m,n] gibi bir girdi görüntüsünü,
b[m,n] gibi bir çıktı görüntüsüne çevirir.
Nokta : Çıktı, alınan noktanın değerine bağlı
Yerel : Çıktı, alınan nokta ve komşularına bağlı
Global : Çıktı, tüm görüntünün değerlerine bağlı
24. Görüntü İşleme Algoritmaları
Görüntü Histogramlarına Bağlı Algoritmalar
Matematik Temelli Algoritmalar
Convolution (Evrişim) Algoritmaları
Filtreler
30. Matematik Temelli Algoritmalar
cv.Not(src, dst)
cv.Or(src1, src2, dst, mask=NULL)
cv.And(src1, src2, dst, mask=NULL)
cv.Add(src1, src2, dst, mask=NULL)
cv.AbsDiff(src1, src2, dst)
--------------------------------------------------------------------------------------------------------------------
X ve Y görüntü bilgilerinin bulunduğu matrisler ise:
Add → X + Y
Diff → X - Y
XOR → numpy.logical_xor(x1, x2[, out])
31. Filtreleme
Görüntü üzerinde bir filtre var gibi her pikselin değerinin
yeniden hesaplanması
Görüntülerdeki gürültüleri azaltma, görüntüleri
bölütleme gibi işlemlerde kullanılır
33. Ortanca (Median) Filtre
Seçilen pikselin etrafındaki piksellerin ortalamalarına
göre değer alması
Bulanıklığı azaltır
Görüntü üzerindeki gürültüleri yok eder
41. Filtreler (Python ile OpenCV)
OpenCV kütüphanesini
Python arayüzü ile kullanabiliriz
from opencv import cv
42. Filtreler (Python ile OpenCV)
from opencv import cv
def gaussianBlur ( image ) :
result = cv . cvCreateMat ( image . rows , image . cols , image . type )
filterSize = 43
cv . cvSmooth ( image , result , cv . CV_GAUSSIAN , filterSize )
return result
Gaussian Blur
43. Örnek Uygulamalar
Catch Me If You Can
OpenCV, Python
https://github.com/nsates/catch_me_if_you_can
44. Örnek Uygulamalar
Kedi Bölütleme
OpenCV, Python
http://www.youtube.com/watch?v=Cb_J91u89HU#!
45. Örnek Uygulamalar
Gerçek Zamanlı Nesne Takibi
OpenCV, cvBlob
http://www.youtube.com/watch?v=LNaL58GRou4
46. Sonuçlar
Görüntü işlemede özgür yazılımları kullanmak;
Sizi özgür kılar
Farklı ortam (işletim sistemleri) ve farklı programlama
dillerinde geliştirme yapmanızı sağlar
Yüksek miktarlarda yazılım ücreti ödemekten kurtarır
Güçlü kütüphanelerle çalışma olanağı sağlar
47. Sonuçlar
OpenCV, Python gibi özgür yazılımlar için basılı ya da
web üzerinden paylaşılan bir sürü belgeye, kaynak koda
ve eğitim videolarına erişebilirsiniz.
Ayrıca siz de çalışmalarınızı özgür yazılım lisansları ile
lisanslayarak özgürce paylaşabilir, böylece başkalarının
da sizin bilgilerinizden yararlanmasını sağlayabilirsiniz.
48. Kaynaklar
● [1] “Görüntü İşleme (Image Processing)” Ders Notu, Doç. Dr. Aybars Uğur, İzmir
● [2] “Görüntü İşleme” Sunumu, K.Sinan Yıldırım, Cenk İnce, Tahir Emre Kalaycı, 2003, İzmir
●
[3] Introduction to Computer Vision in Python, Brian Thorne, University of Cantenbury, 2009
●
[4] Programming Computer Vision with Python, Jan Erik Solem, 2012
● [5] http://opencv.org/
● [6] http://python.org/
● [7] http://www.pythonware.com/products/pil/
● [8] http://www.numpy.org/
● [9] http://www.scipy.org/
● [10] http://tux.crystalxp.net/en.id.1871-rap-tux.html
● [11] http://www.gnu.org/graphics/
● [12] http://en.wikipedia.org/wiki/Histogram_equalization