Python ile Görüntü İşlemeye Giriş

Merhaba arkadaşlar

Mobilhanem.com sitemizde yeni bir seri olan  Görüntü İşleme Dersleri eğitim serisine  başlıyoruz. Bu derslerimize birlikte devam edeceğiz. Umarım sizler için faydalı bir seri olur. Bu ders serisi, görüntü işleme üzerinde meraklı, görüntü işleme alanında kendini geliştirmek isteyenlere bir yol gösterici olacaktır. Bende  Python ile Görüntü İşleme’ye Giriş dersi ile  ilk önce kafanızda oluşan; eğitim serisi için ne bilmeniz gerektiğini, kullanacağımız kütüphane ve teknolojilerin ne olduğunu anlatacağım.

Bu Eğitim Serisi İçin  Neler Bilmeliyim?

Eğitim serisi Python ile Görüntü İşleme olduğu için temel seviyede Python bilginizin olması ders serisini daha rahat kavramanıza yardımcı olacaktır.  Eğer yoksa temel seviyede Python öğrenmek için tıklayınız. Ayrıca biraz matematik bilginizin olması da yeterli olacaktır. Bu ders serimizi, temel görüntü işleme yöntemlerinin yanında filtreleme, yüz tanıma, araç tanıma, trafikte araç sayma ve daha bir çok görüntü işleme projeleri ile taçlandıracağız.

Bu Eğitim Serisinde Neler Kullanacağız?

Python ile Görüntü İşleme serimizde PyCharm geliştirme ortamını, Python dilini, OpenCV kütüphanesini, Anaconda’yı ve çok boyutlu matrisler için destek alacağımız NumPy kütüphanesini kullanacağız.

Bu serimizin sonunda akademik ve üniversite çalışmaları için yeni bir seri olan MATLAB ile Görüntü İşleme derslerine devam etmeye çalışacağız. Her ders sonunda soru ve önerinizi belirtmeyi unutmayın.

Şimdi görüntü işlemenin ne olduğunu, görüntü işleme teknolojisinin ne işe yaradığına ve kullanım alanlarının nereler olduğuna hep birlikte bakalım.

Görüntü İşleme (Image Processing) Nedir ? Nasıl Bir Temele Dayanmaktadır ?

Görüntü işleme, bir görüntüyü elde etmek ya da elimizde bulunan görüntüden  yararlı bilgiler çıkarmak için çeşitli algoritmalar kullanarak görüntü üzerinde bazı işlemlerin gerçekleştirilme yöntemidir. Görüntü işlemelerinin temel adımları şunlardır:

  1. Görüntünün çalışma ortamına aktarılması
  2. Alınan görüntünün işlenerek analiz edilmesi ve görüntülenmesi
  3. Analiz sonucu görüntü raporunun ortaya çıkması

Görüntü işleme aslında matrisler üzerinde yapılan işlemler bütünü diyebiliriz. Genellikle resimlere baktığımızda çeşitli renklerin bir araya geldiği kareden ibaret olduğunu düşünebiliriz. Halbuki resimi en küçük parçalara böldüğümüzde bizi çok boyutlu matrisler karşılıyor. Bu matrislerin her bir elemanına iyi bildiğimiz bir kelime olan piksel  adını veriyoruz. Ve biz görüntü işleme yöntemlerinde pikseli oluşturan matris hücrelerinin üzerinden işlemler yapıyoruz. Aşağıda gördüğünüz görsel yukarıdaki paragrafın vücut bulmuş hali diyebiliriz.

 

Görüntü İşleme
Görüntü İşlemede Görselin Matrise Dönüşmüş Hali

Her bir matris hücresinde gördüğünüz sayılar aslında RGB ( Red [kırmızı], Green [yeşil], Blue [mavi] ) renk uzayının 0 ile 255 arasında olan birer sayısal değerdir. Mesela matrisin ilk satır ve ilk sütunda olan 157 değerimizi incelediğimizde rgb renk değerlerinin ağırlığını RedGreenBlue (157,157,157) olarak yazabiliriz. 3 ana renge bu değeri verdiğiniz zaman resimdeki ilk satır ve ilk sütunda olan rengin ortaya çıktığını görebilirsiniz.

Görüntü İşleme
Girilen RGB Değerlerine Göre Ortaya Çıkan Piksel Rengi

Görüntü İşleme Ne İşe Yarar?

Günümüz teknolojilerinde oldukça sık kullanılan görüntü işleme yöntem ve teknolojileri vardır. Görüntü işleme yapmanın temel amaçları aşağıdaki gibidir.Bunlar:

  1. Görüntü üzerinde tespiti zor olan objeleri gözlemleyebilme
  2. Gürültü temizleme, keskinleştirme ve görüntü restorasyonu (temizleme) yapma
  3. Yüksek çözünürlükte görüntüler elde etme
  4. Nesne tanıma
  5. Görüntü tanıma ve nesne ayırt etme

olarak sıralayabiliriz.

Görüntü İşlemenin Kullanıldığı Alanlar

Görüntü işleme yöntem ve teknikleri günümüzde bir çok alanda kullanılır. Görüntü işleme çok geniş bir konsepttir. Sağlık alanında insan hastalıklarını tespitine kadar kullanılmaktadır.Ayrıca,

  • Robot teknolojileri
  • Savunma sanayisi
  • İnsansız hava araçları
  • Montaj Hatları (Örneğin, otomobil üretim hattında çalışan otomasyon robotları)
  • Snapchat, Instagram’da kullanılan gerçek zamanlı filtreler
  • Yüz kilidi teknolojisi
  • Google harita teknolojisi

ve daha bir çok alanda görüntü işleme teknolojisi mevcuttur. Sizlerde yapacağınız  görüntü işleme projeleri ile bu konuda size uygun meslek kollarında yerinizi alabilirsiniz.

Şimdi ise kullanacağımız kütüphaneler hakkında biraz bilgi edinelim.

OpenCV (Open Source Computer Vision)

opencv

OpenCV  Intel Corporation , Willow Garage , Itseez tarafından geliştirilen gerçek zamanlı görüntü işlemede kullanılan programlama fonksiyonlarını içeren açık kaynak kodlu bir kütüphanedir. Google, Nvidia, AMD gibi büyük şirketler  ve bir çok toplulukların destekleri ile OpenCV kütüphanesinin geliştirme süreci devam etmektedir. OpenCV kütüphanesinin içerisinde görüntü işleme ve makine öğrenmesine yönelik 2500’den fazla algoritma bulunmaktadır. Bu algoritmalar ile yüz tanıma, hareket tespiti, OCR (Optical Character Recognition) metin tanıma, plaka tanıma, nesneleri ayırt etme gibi işlemler kolaylıkla yapılabilmektedir. Bizde Python ile görüntü işleme serimizde  bu kütüphaneyi kullanacağız.

Hangi Dilleri Destekliyor?

  1. Python
  2. C / C++
  3. Java
  4. Matlab

NumPy

NumPy

NumPy Python’da bilimsel hesaplamalar için kullanılan bir pakettir. Çok boyutlu diziler ve çeşitli türetilmiş nesneler (matrisler gibi) üzerinde hızlı işlemler yapabilmek için kullanılır. Ayrıca matematiksel, mantıksal, sıralama, seçme, giriş/çıkış dahil olmak üzere çeşitli yordamlar sağlayan Python kütüphanesidir.

Anaconda

Anaconda

Anaconda Python ve Python’un sahip olduğu bir çok modül ve kütüphanelerini birlikte içinde barındıran bir açık kaynak teknolojidir. İhtiyacımız olan tüm modülleri beraberinde getirerek tek seferde erişim sağlama imkanı buluyoruz. Çeşitli paketleri kurma ve kaldırma olaylarında da işimizi kolaylaştırmaktadır.

PyCharm

PyCharm
PyCharm

PyCharm , Jetbrains tarafından geliştirilen ve piyasada sıkça kullanılan Python geliştirme ortamıdır. Çeşitli versiyon kontrol sistemi barındıran, çeşitli web uygulamalarının da geliştirme imkanı sağlayan çapraz bir platformdur. Bize faydalanabileceğimiz bir çok araç seti ve yerleşik özellikler sunar.

 

 

Peki biz neler yaptık ve tecrübelerimiz nedir?

Yaklaşık 6-7 ay süren benim  ve Engin ÜLGER’in üzerinde çalıştığımız , Sıfır Atık projesine destek vermek amaçlı ortaya koyduğumuz projeden bahsetmek istiyorum. Yapay Zeka Temelli Katı Atık Ayrıştırma Makinesi. Görüntü işleme ve derin öğrenme algoritmaları ile tek bir kısımda atılan çöpü (Metal,cam,plastik,kağıt) %98 oranında başarıyla ayrıştırma işlemini gerçekleştirdik. Ayrıca bu makinenin gömülü sistemi dışında mobil uygulama ile puan kazanma olayını da entegre ettik.

Bu projemiz ile  Elazığ Tübitak Bilim Merkezinde 70 proje arasından birincilik elde ettik. Ayrıca Tübitak 2242 Üniversiteler Arası Proje yarışmasında Erzurum’da düzenlenen bölge yarışmasında bölge birinciliğine layık görüldük. Bu projenin final ayağı İstanbul Teknofest’te gerçekleşti. Bu final yarışmasından da çevre ve enerji kategorisinde Türkiye birinciliğini kazandık. Ödülümüzü Sayın Cumhurbaşkanımız Recep Tayyip ERDOĞAN’dan aldık.

Teknofest Türkiye Birinciliği
Teknofest Türkiye Birinciliği

Teknofest Türkiye birinciliğinin ardından projemiz Sıfır Atık İnovasyon Ödülüne layık görülmüştür. İnovasyon ödülümüzü de Cumhurbaşkanımızın eşi Sayın Emine ERDOĞAN’dan ve Çevre ve Şehircilik Bakanı Murat KURUM’dan aldık.

Sıfır Atık İnovasyon Ödülü
Sıfır Atık İnovasyon Ödülü

Bir çok haber siteleri ve kanallarında projemiz gösterilmiştir. Bazılarına aşağıdaki linklerden ulaşabilirsiniz.

Python ile Görüntü İşlemeye Giriş dersimizin sonuna geldik. Bir sonraki  derste Python ile görüntü işleme için gerekli kütüphane ve teknolojileri kuracağız.

Teknofest Birinciliği

Sıfır Atık İnovasyon Ödülü

Anadolu Ajansı Haber Linki

TRT Haber Video Linki

 

57

Yunus Emre Aydın

Yazılım Mühendisi

15 Yorum

    • Teşekkür ederiz. Bir sorun ile karşılaşmadığımız sürece düzenli olarak dersimizi paylaşacağız.

  • Öncelikle, projeniz için tebrikler.. Rica etsem projenizde kullandığınız donanımları paylaşabilir misiniz?

    • Merhabalar, iyi dilekleriniz için çok teşekkür ederim.
      996r Servo Motor
      Hc-sr04 Ultrasonic Sensör
      Yüksek Torklu Motor (Asansör Kapı Motoru)
      BTS7960B 40 Amper Motor Sürücü Modülü
      Arduino MEGA/UNO
      Lcd Shield
      Ky-008 Lazer
      Webcam (Görüntü İşleme İçin)

      Sistemin geliştirilebilir özelliği olduğu için donanım malzemeleri sabit olmuyor. İsteğiniz veya amacınız doğrultusunda bu liste değişebilir.

  • Öncelikle projeniz için tebrikler. Projenizde hangi donanım materyallerini kullandığınızı öğrenebilir miyim? Kolay gelsin, başarılar.

    • Merhabalar, iyi dilekleriniz için çok teşekkür ederim.
      996r Servo Motor
      Hc-sr04 Ultrasonic Sensör
      Yüksek Torklu Motor (Asansör Kapı Motoru)
      BTS7960B 40 Amper Motor Sürücü Modülü
      Arduino MEGA/UNO
      Lcd Shield
      Ky-008 Lazer
      Webcam (Görüntü İşleme İçin)

      Sistemin geliştirilebilir özelliği olduğu için donanım malzemeleri sabit olmuyor. İsteğiniz veya amacınız doğrultusunda bu liste değişebilir.

  • Görüntü işleme teknolojisi kullanarak yüksek çözünürlüklü videolarda gürültü temizleme, keskinleştirme ve görüntü restorasyonu yapmak istiyoruz. Bunu otomatik şekilde yapabilecek bir uygulama geliştirmek istedik. Sizinle nasıl iletişime geçebiliriz?

  • Ne yani bu yapay Zeko projelerindeki köşeli parantezlerin içine yazılan 3 basamaklı kodlar aslında renk kodlarimi yani dizini matrislerimi bende diyordum bu 3 basamaklı matris kodları neyin kodları ? ben bu işi çözdüm. Gerçi ben Android gelistiricisiyim ilk öğrendiğim dil Python dı ben matris matematigine biraz çalışayım algoritma yi sonra bağlarız teşekkür ederim.

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?