Özgür Yazılımlarla Görüntü İşleme

8,731 views

Published on

Görüntü işlemenin özgür yazılımlarla nasıl yapılabileceğine dair Akademik Bilişim 2013'te bilgilendirme amaçlı yaptığım sunum.

Published in: Technology
  • Be the first to comment

Özgür Yazılımlarla Görüntü İşleme

  1. 1. ÖZGÜR YAZILIMLARLA GÖRÜNTÜ İŞLEME Enes Ateş enes@enesates.com Akademik Bilişim 2013, Antalya
  2. 2. İçerik● Görüntü, Sayısal Görüntü● Görüntü İşleme● Görüntü İşleme İçin Özgür Kütüphaneler: – OpenCV (Open Source Computer Vision) – Python (PIL, NumPy, SciPy)● Görüntü İşlemleri● Görüntü İşleme Algoritmaları: – Histogram Eşitleme – Matematik Temelli Algoritmalar – Filtreler● Örnek Uygulamalar ve Sonuç
  3. 3. Görüntüİki boyutlu bir sahneyi temsil eden veri (resim, video vb.) http://www.gnu.org/graphics/meditate.html
  4. 4. Sayısal Görüntü Sayısal değerlerden oluşan görüntüPikseller matrisi – RGB (hsv, cmyk vb.) 94, 55, 50, 255, 61, 19, 241, 43 … 151, 2, 26, 255, 186, 93, 15, 24 … 80, 46, 42, 255, 146, 62, 129, 4 … 247, 48, 46, 255, 34, 1, 51, 231 ... … …
  5. 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. 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. 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. 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. 9. Renkli (Colour) Görüntü Her pikselin, renk bilgisi için farklı değerleri alabildiği sayısal görüntülerPiksellerin 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.
  10. 10. Görüntü İşlemeSayısal olarak elde edilmiş görüntülerin bilgisayar yardımı ile analiz edilmesi ve işlenmesi
  11. 11. Görüntü İşleme Kaynak [2]den düzenlenmiştir.
  12. 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. 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
  14. 14. Görüntü İşleme İçin Özgür KütüphanelerOpenCV (Open Source Computer Vision) Python (PIL, NumPy, SciPy) SimpleCV GNU Octave Aforge.NET VTK, FIJI ...
  15. 15. Diğer YaygınÖzgür Kütüphane ve Araçlar OpenGLGIMP (GNU Image Manipulation Program) Inkscape Blender ...
  16. 16. OpenCV(Open Source Computer Vision)GNU/Linux, Android, Windows ve Mac OS destekli BSD Lisanslı 2500den fazla eniyilenmiş algoritma
  17. 17. OpenCV(Open Source Computer Vision) Gerçek zamanlı bilgisayarlı görü ve makine öğrenmesi kütüphanesiIntel, Willow Garage, Itseez tarafından geliştiriliyor Python, C, C++ ve Java arayüzlerine sahip
  18. 18. OpenCV Kullanım Alanları Görüntü işleme Yüz, yüz ifadesi, nesne tanıma Hareket, nesne belirleme, izleme Hareket anlamaRobot bilim, insan bilgisayar etkileşimi ...
  19. 19. Python – Python Imaging LibraryPython yorumlayıcısı için görüntü işleme kütüphanesi Temel, kullanışlı görüntü işlemleri
  20. 20. Python - NumPyPython için bilimsel hesaplama aracı n-boyutlu dizi nesneleri (vektör, matris, görüntü vb.) Lineer Cebir fonksiyonları Fourier dönüşümleri
  21. 21. Python - SciPyPython için NumPy tabanlı hesaplama kütüphanesi Eniyileme, istatistik, sinyal işleme, görüntü işleme
  22. 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ı
  23. 23. Görüntü İşlemleriNokta Yerel Global Kaynak [2]den düzenlenmiştir.
  24. 24. Görüntü İşleme AlgoritmalarıGörüntü Histogramlarına Bağlı Algoritmalar Matematik Temelli Algoritmalar Convolution (Evrişim) Algoritmaları Filtreler
  25. 25. Yoğunluk HistogramlarıPiksel yoğunluk sayılarını tutan histogramlardır. http://en.wikipedia.org/wiki/Histogram_equalization
  26. 26. Histogram EşitlemeGörüntünün belli bir gri seviyesinde yoğunlaşmış histogramını tüm gri seviyesi aralığına yaymak http://en.wikipedia.org/wiki/Histogram_equalization
  27. 27. Histogram Eşitlemeimage = cv.LoadImage(file_name, cv.CV_LOAD_IMAGE_COLOR)gray_image = cv.CreateImage(cv.GetSize(image), image.depth, 1)cv.CvtColor(image, gray_image, cv.CV_BGR2GRAY)image = gray_imagecv.EqualizeHist(image, image)---------------------------------------------------------------------------------------------------------------------------------------def histeq(im, nbr_bins=256): Imhist, bins = histogram(im.flatten(),nbr_bins,normed=True) cdf = imhist.cumsum() # cumulative distribution function cdf = 255 * cdf / cdf[-1] # normalize im2 = interp(im.flatten(),bins[:-1],cdf) # use linear interpolation of cdf to find new pixel values return im2.reshape(im.shape), cdf
  28. 28. Matematik Temelli Algoritmalar İkili İşlemler: NOT, OR, AND, XOR Aritmetik İşlemler: +, -, *, /, LOG, EXP, SQRT
  29. 29. Matematik Temelli Algoritmalar a b NOT b a OR b a AND b a XOR b a-b
  30. 30. Matematik Temelli Algoritmalarcv.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 + YDiff → X - YXOR → numpy.logical_xor(x1, x2[, out])
  31. 31. FiltrelemeGö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
  32. 32. Filtreler Doğrusal (Linear) Filtreler:uniform, üçgen, yumuşatma, kenar belirleme Doğrusal Olmayan (Non-linear) Filtreler: median, min, max, percentile
  33. 33. Ortanca (Median) FiltreSeç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
  34. 34. Ortanca (Median) Filtre 1 1 5 5 30 5 5 1 10 1 1 1 5Sırala 1 1 5Sonuç 1
  35. 35. Ortanca (Median) Filtre 1 1 5 5 30 5 5 1 10 1 1 10 1Sırala 1 1 10Sonuç 1 5 5 5 5 5 5 1
  36. 36. Düşük Frekanslı Filtreler Görüntüyü yumuşatır Detayları ve gürültüyü yok eder
  37. 37. Yüksek Frekanslı Filtreler Bulanık görüntüleri keskinleştirir Piksellerin göreceli zıtlığını artırır = -
  38. 38. Kenar Belirleme (Edge Detection) Görüntü içindeki nesne ya da farklılıkların elde edilmesi Görüntüdeki renk geçişleri keskinleştirilir
  39. 39. Sobel Filtresi Görüntünün ilk türevidirKenar belirleme amacıyla kullanılır Yatay Sobel Dikey Sobel
  40. 40. Filtrelercv.Smooth(src, dst, smoothtype = CV_GAUSSIAN, param1=3, p2=0, p3=0, p4=0)cv.Smooth(src, dst, smoothtype = CV_MEDIAN, param1=3, p2=0, p3=0, p4=0)cv.Smooth(src, dst, smoothtype = CV_BLUR, param1=3, p2=0, p3=0, p4=0)cv.Sobel(src, dst, xorder, yorder, apertureSize = 3) # xorder → dikey, yorder → yatay--------------------------------------------------------------------------------------------------------------------scipy.ndimage.filters.median_filter(input, size=None, footprint=None, output=None,mode=reflect, cval=0.0, origin=0)scipy.ndimage.filters.gaussian_filter(input, sigma, order=0, output=None, mode=reflect,cval=0.0)scipy.ndimage.filters.sobel(input, axis=-1, output=None, mode=reflect, cval=0.0)
  41. 41. Filtreler (Python ile OpenCV) OpenCV kütüphanesini Python arayüzü ile kullanabiliriz from opencv import cv
  42. 42. Filtreler (Python ile OpenCV)from opencv import cvdef 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. 43. Örnek Uygulamalar Catch Me If You Can OpenCV, Pythonhttps://github.com/nsates/catch_me_if_you_can
  44. 44. Örnek Uygulamalar Kedi Bölütleme OpenCV, Pythonhttp://www.youtube.com/watch?v=Cb_J91u89HU#!
  45. 45. Örnek Uygulamalar Gerçek Zamanlı Nesne Takibi OpenCV, cvBlobhttp://www.youtube.com/watch?v=LNaL58GRou4
  46. 46. Sonuçlar Görüntü işlemede özgür yazılımları kullanmak; Sizi özgür kılarFarklı ortam (işletim sistemleri) ve farklı programlama dillerinde geliştirme yapmanızı sağlarYüksek miktarlarda yazılım ücreti ödemekten kurtarır Güçlü kütüphanelerle çalışma olanağı sağlar
  47. 47. Sonuçlar OpenCV, Python gibi özgür yazılımlar için basılı ya daweb ü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ı ilelisanslayarak özgürce paylaşabilir, böylece başkalarınında sizin bilgilerinizden yararlanmasını sağlayabilirsiniz.
  48. 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
  49. 49. DİNLEDİĞİNİZ İÇİN TEŞEKKÜRLER...

×