SlideShare uma empresa Scribd logo
1 de 49
ÖZGÜR YAZILIMLARLA
 GÖRÜNTÜ İŞLEME

           Enes Ateş
       enes@enesates.com

   Akademik Bilişim 2013, Antalya
İç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ç
Görüntü


İki boyutlu bir sahneyi temsil eden veri

          (resim, video vb.)




         http://www.gnu.org/graphics/meditate.html
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 ...
                       …
                       …
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ı)
Sayısal Görüntü Çeşitleri


       İkili (Binary) Görüntü

  Gri Ölçekli (Grayscale) Görüntü

     Renkli (Colour) Görüntü
İ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)
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
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.
Görüntü İşleme



Sayısal olarak elde edilmiş görüntülerin
         bilgisayar yardımı ile
     analiz edilmesi ve işlenmesi
Görüntü İşleme




  Kaynak [2]'den düzenlenmiştir.
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.
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
Görüntü İşleme İçin
    Özgür Kütüphaneler
OpenCV (Open Source Computer Vision)

     Python (PIL, NumPy, SciPy)

             SimpleCV

            GNU Octave

            Aforge.NET

             VTK, FIJI
                ...
Diğer Yaygın
Özgür Kütüphane ve Araçlar

              OpenGL

GIMP (GNU Image Manipulation Program)

              Inkscape

               Blender
                  ...
OpenCV
(Open Source Computer Vision)

GNU/Linux, Android, Windows ve Mac OS destekli

                 BSD Lisanslı

      2500'den fazla eniyilenmiş algoritma
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
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
                  ...
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
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
Python - SciPy



Python için NumPy tabanlı hesaplama kütüphanesi

       Eniyileme, istatistik, sinyal işleme,
                görüntü işleme
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ı
Görüntü İşlemleri



Nokta                                    Yerel




              Global

        Kaynak [2]'den düzenlenmiştir.
Görüntü İşleme Algoritmaları


Görüntü Histogramlarına Bağlı Algoritmalar

      Matematik Temelli Algoritmalar

    Convolution (Evrişim) Algoritmaları

                 Filtreler
Yoğunluk Histogramları


Piksel yoğunluk sayılarını tutan histogramlardır.




             http://en.wikipedia.org/wiki/Histogram_equalization
Histogram Eşitleme


Gö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
Histogram Eşitleme
image = 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_image
cv.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
Matematik Temelli Algoritmalar


          İkili İşlemler:
       NOT, OR, AND, XOR


          Aritmetik İşlemler:
     +, -, *, /, LOG, EXP, SQRT
Matematik Temelli Algoritmalar

              a             b




 NOT b   a OR b   a AND b       a XOR b   a-b
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])
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
Filtreler


         Doğrusal (Linear) Filtreler:
uniform, üçgen, yumuşatma, kenar belirleme

  Doğrusal Olmayan (Non-linear) Filtreler:
       median, min, max, percentile
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
Ortanca (Median) Filtre


         1   1   5   5   30 5   5   1   10 1
         1   1   5
Sırala
         1   1   5

Sonuç        1
Ortanca (Median) Filtre


         1   1   5   5   30 5    5   1   10 1
                                     1   10 1
Sırala
                                     1   1   10

Sonuç        1   5   5   5   5   5   5   1
Düşük Frekanslı Filtreler

      Görüntüyü yumuşatır

 Detayları ve gürültüyü yok eder
Yüksek Frekanslı Filtreler


  Bulanık görüntüleri keskinleştirir

 Piksellerin göreceli zıtlığını artırır



          =                 -
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
Sobel Filtresi

      Görüntünün ilk türevidir

Kenar belirleme amacıyla kullanılır
 Yatay Sobel               Dikey Sobel
Filtreler
cv.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)
Filtreler (Python ile OpenCV)


       OpenCV kütüphanesini
    Python arayüzü ile kullanabiliriz



       from opencv import cv
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
Örnek Uygulamalar

        Catch Me If You Can
             OpenCV, Python

https://github.com/nsates/catch_me_if_you_can
Örnek Uygulamalar

            Kedi Bölütleme
              OpenCV, Python

http://www.youtube.com/watch?v=Cb_J91u89HU#!
Örnek Uygulamalar

   Gerçek Zamanlı Nesne Takibi
             OpenCV, cvBlob

http://www.youtube.com/watch?v=LNaL58GRou4
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
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.
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
DİNLEDİĞİNİZ
    İÇİN

         TEŞEKKÜRLER...

Mais conteúdo relacionado

Mais procurados

PCB Faults Detection Using Image Processing
PCB Faults Detection Using Image ProcessingPCB Faults Detection Using Image Processing
PCB Faults Detection Using Image Processingijceronline
 
バイオイメージング研究のためのImageJによるデジタル画像解析法(2012年6月版)
バイオイメージング研究のためのImageJによるデジタル画像解析法(2012年6月版)バイオイメージング研究のためのImageJによるデジタル画像解析法(2012年6月版)
バイオイメージング研究のためのImageJによるデジタル画像解析法(2012年6月版)nmaro
 
ImageJチュートリアル
ImageJチュートリアルImageJチュートリアル
ImageJチュートリアルLPIXEL
 
ImageJプラグインの作成:序論
ImageJプラグインの作成:序論ImageJプラグインの作成:序論
ImageJプラグインの作成:序論nmaro
 
Image processing SaltPepper Noise
Image processing SaltPepper NoiseImage processing SaltPepper Noise
Image processing SaltPepper NoiseAnkush Srivastava
 
Contrast limited adaptive histogram equalization
Contrast limited adaptive histogram equalizationContrast limited adaptive histogram equalization
Contrast limited adaptive histogram equalizationEr. Nancy
 
画像解析の基礎知識
画像解析の基礎知識画像解析の基礎知識
画像解析の基礎知識LPIXEL
 
Pythonで画像処理をやってみよう! 第1回 - ヒストグラムと濃度変換 -
Pythonで画像処理をやってみよう! 第1回 - ヒストグラムと濃度変換 -Pythonで画像処理をやってみよう! 第1回 - ヒストグラムと濃度変換 -
Pythonで画像処理をやってみよう! 第1回 - ヒストグラムと濃度変換 -Project Samurai
 
Dital Image Processing (Lab 2+3+4)
Dital Image Processing (Lab 2+3+4)Dital Image Processing (Lab 2+3+4)
Dital Image Processing (Lab 2+3+4)Moe Moe Myint
 
Computer Vision(4).pptx
Computer Vision(4).pptxComputer Vision(4).pptx
Computer Vision(4).pptxGouthamMaliga
 
Tutorial on Generalization in Neural Fields, CVPR 2022 Tutorial on Neural Fie...
Tutorial on Generalization in Neural Fields, CVPR 2022 Tutorial on Neural Fie...Tutorial on Generalization in Neural Fields, CVPR 2022 Tutorial on Neural Fie...
Tutorial on Generalization in Neural Fields, CVPR 2022 Tutorial on Neural Fie...Vincent Sitzmann
 
Image segmentation
Image segmentationImage segmentation
Image segmentationRania H
 
イメージングバイオマーカによる国際的産学連携イメージング ARO 支援システム
イメージングバイオマーカによる国際的産学連携イメージング ARO 支援システムイメージングバイオマーカによる国際的産学連携イメージング ARO 支援システム
イメージングバイオマーカによる国際的産学連携イメージング ARO 支援システムDell TechCenter Japan
 
Image Processing
Image ProcessingImage Processing
Image ProcessingRolando
 
Comparative study on image segmentation techniques
Comparative study on image segmentation techniquesComparative study on image segmentation techniques
Comparative study on image segmentation techniquesgmidhubala
 

Mais procurados (20)

画像処理(二値化)
画像処理(二値化)画像処理(二値化)
画像処理(二値化)
 
PCB Faults Detection Using Image Processing
PCB Faults Detection Using Image ProcessingPCB Faults Detection Using Image Processing
PCB Faults Detection Using Image Processing
 
バイオイメージング研究のためのImageJによるデジタル画像解析法(2012年6月版)
バイオイメージング研究のためのImageJによるデジタル画像解析法(2012年6月版)バイオイメージング研究のためのImageJによるデジタル画像解析法(2012年6月版)
バイオイメージング研究のためのImageJによるデジタル画像解析法(2012年6月版)
 
ImageJチュートリアル
ImageJチュートリアルImageJチュートリアル
ImageJチュートリアル
 
Image Segmentation
 Image Segmentation Image Segmentation
Image Segmentation
 
ImageJプラグインの作成:序論
ImageJプラグインの作成:序論ImageJプラグインの作成:序論
ImageJプラグインの作成:序論
 
Image processing SaltPepper Noise
Image processing SaltPepper NoiseImage processing SaltPepper Noise
Image processing SaltPepper Noise
 
Depth estimation using deep learning
Depth estimation using deep learningDepth estimation using deep learning
Depth estimation using deep learning
 
Contrast limited adaptive histogram equalization
Contrast limited adaptive histogram equalizationContrast limited adaptive histogram equalization
Contrast limited adaptive histogram equalization
 
画像解析の基礎知識
画像解析の基礎知識画像解析の基礎知識
画像解析の基礎知識
 
Representation of Vector Graphics
Representation of Vector GraphicsRepresentation of Vector Graphics
Representation of Vector Graphics
 
Pythonで画像処理をやってみよう! 第1回 - ヒストグラムと濃度変換 -
Pythonで画像処理をやってみよう! 第1回 - ヒストグラムと濃度変換 -Pythonで画像処理をやってみよう! 第1回 - ヒストグラムと濃度変換 -
Pythonで画像処理をやってみよう! 第1回 - ヒストグラムと濃度変換 -
 
Dital Image Processing (Lab 2+3+4)
Dital Image Processing (Lab 2+3+4)Dital Image Processing (Lab 2+3+4)
Dital Image Processing (Lab 2+3+4)
 
Computer Vision(4).pptx
Computer Vision(4).pptxComputer Vision(4).pptx
Computer Vision(4).pptx
 
Tutorial on Generalization in Neural Fields, CVPR 2022 Tutorial on Neural Fie...
Tutorial on Generalization in Neural Fields, CVPR 2022 Tutorial on Neural Fie...Tutorial on Generalization in Neural Fields, CVPR 2022 Tutorial on Neural Fie...
Tutorial on Generalization in Neural Fields, CVPR 2022 Tutorial on Neural Fie...
 
Colormodels
ColormodelsColormodels
Colormodels
 
Image segmentation
Image segmentationImage segmentation
Image segmentation
 
イメージングバイオマーカによる国際的産学連携イメージング ARO 支援システム
イメージングバイオマーカによる国際的産学連携イメージング ARO 支援システムイメージングバイオマーカによる国際的産学連携イメージング ARO 支援システム
イメージングバイオマーカによる国際的産学連携イメージング ARO 支援システム
 
Image Processing
Image ProcessingImage Processing
Image Processing
 
Comparative study on image segmentation techniques
Comparative study on image segmentation techniquesComparative study on image segmentation techniques
Comparative study on image segmentation techniques
 

Destaque

Yapay Zeka, Deep Learning and Machine Learning
Yapay Zeka, Deep Learning and Machine LearningYapay Zeka, Deep Learning and Machine Learning
Yapay Zeka, Deep Learning and Machine LearningAlper Nebi Kanlı
 
Nessus Kullanım Kitapçığı
Nessus Kullanım KitapçığıNessus Kullanım Kitapçığı
Nessus Kullanım KitapçığıBGA Cyber Security
 
Tcpdump ile Trafik Analizi(Sniffing)
Tcpdump ile Trafik Analizi(Sniffing)Tcpdump ile Trafik Analizi(Sniffing)
Tcpdump ile Trafik Analizi(Sniffing)BGA Cyber Security
 
AI - Tekil 12 GSÜ
AI - Tekil 12 GSÜAI - Tekil 12 GSÜ
AI - Tekil 12 GSÜBurak Evren
 
Python İle Ağ Programlama
Python İle Ağ ProgramlamaPython İle Ağ Programlama
Python İle Ağ ProgramlamaOguzhan Coskun
 
Python Image Kütüphanesi
Python Image KütüphanesiPython Image Kütüphanesi
Python Image KütüphanesiCaglar Dursun
 
Internet Tabanli EğItim
Internet Tabanli EğItimInternet Tabanli EğItim
Internet Tabanli EğItimselver
 
Kara Sistemlerinde Yapay Zeka Uygulamaları
Kara Sistemlerinde Yapay Zeka UygulamalarıKara Sistemlerinde Yapay Zeka Uygulamaları
Kara Sistemlerinde Yapay Zeka UygulamalarıFerhat Kurt
 
YAPAY ZEKÂ VE DUYGUSAL ZEKÂ KULLANIM FARKLILIKLARININ İNCELENMESİ: TEKNOLOJİK...
YAPAY ZEKÂ VE DUYGUSAL ZEKÂ KULLANIM FARKLILIKLARININ İNCELENMESİ: TEKNOLOJİK...YAPAY ZEKÂ VE DUYGUSAL ZEKÂ KULLANIM FARKLILIKLARININ İNCELENMESİ: TEKNOLOJİK...
YAPAY ZEKÂ VE DUYGUSAL ZEKÂ KULLANIM FARKLILIKLARININ İNCELENMESİ: TEKNOLOJİK...SELENGCN
 
TCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
TCP/IP Ağlarda İleri Seviye Paket Analizi – TsharkTCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
TCP/IP Ağlarda İleri Seviye Paket Analizi – TsharkBGA Cyber Security
 
Man in the Middle Atack (Ortadaki Adam Saldırısı)
Man in the Middle Atack (Ortadaki Adam Saldırısı)Man in the Middle Atack (Ortadaki Adam Saldırısı)
Man in the Middle Atack (Ortadaki Adam Saldırısı)Ahmet Gürel
 
Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.
Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.
Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.Zekeriya Besiroglu
 
Python mu Java mı?
Python mu Java mı?Python mu Java mı?
Python mu Java mı?aerkanc
 
Gurultu turleri yersel_filtreler
Gurultu turleri yersel_filtrelerGurultu turleri yersel_filtreler
Gurultu turleri yersel_filtrelerbahattin
 
10-Kablosuz Ağlardaki Zaafiyetler
10-Kablosuz Ağlardaki Zaafiyetler10-Kablosuz Ağlardaki Zaafiyetler
10-Kablosuz Ağlardaki ZaafiyetlerÖnay Kıvılcım
 
Ruby Programlama Dili
Ruby Programlama DiliRuby Programlama Dili
Ruby Programlama Dilipinguar
 
YÜZ BULMA VE TANIMA SİSTEMLERİ KULLANARAK
YÜZ BULMA VE TANIMA SİSTEMLERİ KULLANARAKYÜZ BULMA VE TANIMA SİSTEMLERİ KULLANARAK
YÜZ BULMA VE TANIMA SİSTEMLERİ KULLANARAKRecep Holat
 

Destaque (20)

Yapay Zeka, Deep Learning and Machine Learning
Yapay Zeka, Deep Learning and Machine LearningYapay Zeka, Deep Learning and Machine Learning
Yapay Zeka, Deep Learning and Machine Learning
 
Nessus Kullanım Kitapçığı
Nessus Kullanım KitapçığıNessus Kullanım Kitapçığı
Nessus Kullanım Kitapçığı
 
Tcpdump ile Trafik Analizi(Sniffing)
Tcpdump ile Trafik Analizi(Sniffing)Tcpdump ile Trafik Analizi(Sniffing)
Tcpdump ile Trafik Analizi(Sniffing)
 
AI - Tekil 12 GSÜ
AI - Tekil 12 GSÜAI - Tekil 12 GSÜ
AI - Tekil 12 GSÜ
 
Python İle Ağ Programlama
Python İle Ağ ProgramlamaPython İle Ağ Programlama
Python İle Ağ Programlama
 
Python Image Kütüphanesi
Python Image KütüphanesiPython Image Kütüphanesi
Python Image Kütüphanesi
 
Internet Tabanli EğItim
Internet Tabanli EğItimInternet Tabanli EğItim
Internet Tabanli EğItim
 
Kara Sistemlerinde Yapay Zeka Uygulamaları
Kara Sistemlerinde Yapay Zeka UygulamalarıKara Sistemlerinde Yapay Zeka Uygulamaları
Kara Sistemlerinde Yapay Zeka Uygulamaları
 
YAPAY ZEKÂ VE DUYGUSAL ZEKÂ KULLANIM FARKLILIKLARININ İNCELENMESİ: TEKNOLOJİK...
YAPAY ZEKÂ VE DUYGUSAL ZEKÂ KULLANIM FARKLILIKLARININ İNCELENMESİ: TEKNOLOJİK...YAPAY ZEKÂ VE DUYGUSAL ZEKÂ KULLANIM FARKLILIKLARININ İNCELENMESİ: TEKNOLOJİK...
YAPAY ZEKÂ VE DUYGUSAL ZEKÂ KULLANIM FARKLILIKLARININ İNCELENMESİ: TEKNOLOJİK...
 
TCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
TCP/IP Ağlarda İleri Seviye Paket Analizi – TsharkTCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
TCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
 
Man in the Middle Atack (Ortadaki Adam Saldırısı)
Man in the Middle Atack (Ortadaki Adam Saldırısı)Man in the Middle Atack (Ortadaki Adam Saldırısı)
Man in the Middle Atack (Ortadaki Adam Saldırısı)
 
Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.
Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.
Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.
 
Python mu Java mı?
Python mu Java mı?Python mu Java mı?
Python mu Java mı?
 
Gurultu turleri yersel_filtreler
Gurultu turleri yersel_filtrelerGurultu turleri yersel_filtreler
Gurultu turleri yersel_filtreler
 
10-Kablosuz Ağlardaki Zaafiyetler
10-Kablosuz Ağlardaki Zaafiyetler10-Kablosuz Ağlardaki Zaafiyetler
10-Kablosuz Ağlardaki Zaafiyetler
 
Nmap Kullanım Kitapçığı
Nmap Kullanım KitapçığıNmap Kullanım Kitapçığı
Nmap Kullanım Kitapçığı
 
Yapay Sinir Ağları
Yapay Sinir AğlarıYapay Sinir Ağları
Yapay Sinir Ağları
 
Ruby Programlama Dili
Ruby Programlama DiliRuby Programlama Dili
Ruby Programlama Dili
 
Yapay Sinir Ağları
Yapay Sinir AğlarıYapay Sinir Ağları
Yapay Sinir Ağları
 
YÜZ BULMA VE TANIMA SİSTEMLERİ KULLANARAK
YÜZ BULMA VE TANIMA SİSTEMLERİ KULLANARAKYÜZ BULMA VE TANIMA SİSTEMLERİ KULLANARAK
YÜZ BULMA VE TANIMA SİSTEMLERİ KULLANARAK
 

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

Image Processing with OpenCV
Image Processing with OpenCVImage Processing with OpenCV
Image Processing with OpenCVÖmer Can Koç
 
Ray tracing-Işın İzleme Ders Sunumu
Ray tracing-Işın İzleme Ders SunumuRay tracing-Işın İzleme Ders Sunumu
Ray tracing-Işın İzleme Ders SunumuBeyhan Gül
 
Temel Düzeyde Autocad Eğitimleri 1
Temel Düzeyde Autocad Eğitimleri 1Temel Düzeyde Autocad Eğitimleri 1
Temel Düzeyde Autocad Eğitimleri 1Univerist
 
Görüntü işleme - Image Processing
Görüntü işleme - Image ProcessingGörüntü işleme - Image Processing
Görüntü işleme - Image Processingİbrahim Bayraktar
 
Digital Image Fundamentals
Digital Image FundamentalsDigital Image Fundamentals
Digital Image FundamentalsSeyfullah Demir
 
Viewsonic ProjektöR Sunumu
Viewsonic ProjektöR SunumuViewsonic ProjektöR Sunumu
Viewsonic ProjektöR Sunumubenberk
 
Destek Vektör Makineleri - Support Vector Machine
Destek Vektör Makineleri - Support Vector MachineDestek Vektör Makineleri - Support Vector Machine
Destek Vektör Makineleri - Support Vector MachineOğuzhan TAŞ Akademi
 

Semelhante a Özgür Yazılımlarla Görüntü İşleme (7)

Image Processing with OpenCV
Image Processing with OpenCVImage Processing with OpenCV
Image Processing with OpenCV
 
Ray tracing-Işın İzleme Ders Sunumu
Ray tracing-Işın İzleme Ders SunumuRay tracing-Işın İzleme Ders Sunumu
Ray tracing-Işın İzleme Ders Sunumu
 
Temel Düzeyde Autocad Eğitimleri 1
Temel Düzeyde Autocad Eğitimleri 1Temel Düzeyde Autocad Eğitimleri 1
Temel Düzeyde Autocad Eğitimleri 1
 
Görüntü işleme - Image Processing
Görüntü işleme - Image ProcessingGörüntü işleme - Image Processing
Görüntü işleme - Image Processing
 
Digital Image Fundamentals
Digital Image FundamentalsDigital Image Fundamentals
Digital Image Fundamentals
 
Viewsonic ProjektöR Sunumu
Viewsonic ProjektöR SunumuViewsonic ProjektöR Sunumu
Viewsonic ProjektöR Sunumu
 
Destek Vektör Makineleri - Support Vector Machine
Destek Vektör Makineleri - Support Vector MachineDestek Vektör Makineleri - Support Vector Machine
Destek Vektör Makineleri - Support Vector Machine
 

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

  • 1. ÖZGÜR YAZILIMLARLA GÖRÜNTÜ İŞLEME Enes Ateş enes@enesates.com Akademik Bilişim 2013, Antalya
  • 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. Görüntü İki boyutlu bir sahneyi temsil eden veri (resim, video vb.) http://www.gnu.org/graphics/meditate.html
  • 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. 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.
  • 10. Görüntü İşleme Sayısal olarak elde edilmiş görüntülerin bilgisayar yardımı ile analiz edilmesi ve işlenmesi
  • 11. Görüntü İşleme Kaynak [2]'den düzenlenmiştir.
  • 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
  • 14. Görüntü İşleme İçin Özgür Kütüphaneler OpenCV (Open Source Computer Vision) Python (PIL, NumPy, SciPy) SimpleCV GNU Octave Aforge.NET VTK, FIJI ...
  • 15. Diğer Yaygın Özgür Kütüphane ve Araçlar OpenGL GIMP (GNU Image Manipulation Program) Inkscape Blender ...
  • 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ı
  • 23. Görüntü İşlemleri Nokta Yerel Global Kaynak [2]'den düzenlenmiştir.
  • 24. Görüntü İşleme Algoritmaları Görüntü Histogramlarına Bağlı Algoritmalar Matematik Temelli Algoritmalar Convolution (Evrişim) Algoritmaları Filtreler
  • 25. Yoğunluk Histogramları Piksel yoğunluk sayılarını tutan histogramlardır. http://en.wikipedia.org/wiki/Histogram_equalization
  • 26. Histogram Eşitleme Gö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. Histogram Eşitleme image = 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_image cv.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. Matematik Temelli Algoritmalar İkili İşlemler: NOT, OR, AND, XOR Aritmetik İşlemler: +, -, *, /, LOG, EXP, SQRT
  • 29. Matematik Temelli Algoritmalar a b NOT b a OR b a AND b a XOR b a-b
  • 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
  • 32. Filtreler Doğrusal (Linear) Filtreler: uniform, üçgen, yumuşatma, kenar belirleme Doğrusal Olmayan (Non-linear) Filtreler: median, min, max, percentile
  • 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
  • 34. Ortanca (Median) Filtre 1 1 5 5 30 5 5 1 10 1 1 1 5 Sırala 1 1 5 Sonuç 1
  • 35. Ortanca (Median) Filtre 1 1 5 5 30 5 5 1 10 1 1 10 1 Sırala 1 1 10 Sonuç 1 5 5 5 5 5 5 1
  • 36. Düşük Frekanslı Filtreler Görüntüyü yumuşatır Detayları ve gürültüyü yok eder
  • 37. Yüksek Frekanslı Filtreler Bulanık görüntüleri keskinleştirir Piksellerin göreceli zıtlığını artırır = -
  • 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. Sobel Filtresi Görüntünün ilk türevidir Kenar belirleme amacıyla kullanılır Yatay Sobel Dikey Sobel
  • 40. Filtreler cv.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. 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
  • 49. DİNLEDİĞİNİZ İÇİN TEŞEKKÜRLER...