19 Mart 2016 Cumartesi

RASPBERRY PI DERSLERİ (DERS:3) KONFİGÜRASYON AYARLARI

Raspberry'mizi tam olarak kullanmaya başlamadan önce iyi bir konfigürasyon ayarı gereklidir.

Öncelikle Raspberry'mizi çalıştıralım. İşletim sistemimiz açıldıktan sonra Terminale girelim.




Karşımıza gelen terminal ekranına;

sudo raspi-config 

Yazıyoruz.Karşımıza gelen ekran şu şekilde olacaktır.





Konfigürasyon Ayarları Şu Şekilde yapılmalıdır.

  1. Expand Filesystem: Raspbian imajını SD kartımıza yazdığımızda sadece imajın kapladığı alan kadarlık kısmı kullanabiliyoruz. Kartın tamamını kullanmak için bu seçeğeni seçiyoruz. Bir sonraki açılışta dosya sistemi SD kartın tamamını kaplayacak şekilde yeniden yapılandırılmış oluyor.
  2. Change User Password: Bu seçeneği kullanarak varsayılan kullanıcı olan pi kullanıcısının şifresiniz değiştirebilirsiniz. Şifre değişimi yaparsanız bir sonraki ayar olan “Enable Boot to Desktop/Scratch” seçeneği çalışmaz.
  3. Enable Boot to Desktop/Scratch:Bu menüden “Desktop Log in as user ‘pi’ at the graphical desktop” seçerek, Raspberry Pi’mizin doğrudan masaüstüne açılmasını sağlıyoruz.
  4. Internationalisation Options: Bu menüye girdikten sonra "Change Locate" ayarına girip tr_TR.UTF-8 UTF-8 seçin ve Raspberry'nizi Türkçe yapın."Change Timezone"  ayaraına girip  Europe/Istanbul seçerek doğru zaman dilimine geçebilirsiniz."Change Keyboard Layout" ayarına gidip ayarlar Türkçe Q klavye için sırasıyla; Generic 105-Key (Intl) PC, Other, Turkish, Turkish, The default for the keyboad layout, No compose key, Yes şeklinde olmalıdır.
  5. Enable Camera: Kamera modülü kullanmayacaksanız aktif etmenize gerek yok.
  6. Add to Rastrack: Dünya üzerindeki Raspberry Pi kullanıcıların birbirini harita üzerinden bulmasını sağlayan http://rastrack.co.uk sitesine üyeliğiniz varsa, bu seçenek üzerinden ayarlarınızı yapabilirsiniz.
  7. Overclock: Raspberry Pi’nizi normal hızından daha yüksek hızlara çıkartmak için overclock ayarları bu menüde yer almaktadır. Stabil kullanım için bu ayarları değiştirmemenizi öneriyorum.
  8. Advanced Options:
  • Overscan: Kullandığınız ekranda siyah boşluklar varsa bu özelliği kapatarak düzeltebilirsiniz.
  • Hostname: Raspberry Pi’mizin yerel ağda kullanacağı ismi buradan değiştirebilirsiniz. Varsayılan olarak raspberrypi ismi kullanılmaktadır.
  • Memory Split: Grafik işlemcisinin sistem belleğinin ne kadarını kullanacağını buradan değiştirebilirsiniz. Varsayılan ayarı değiştirmemenizi öneririm.
  • SSH:Bu özelliği açarak SSH sunucusu ile raspberry'nize uzaktan erişim sağlayabiliriz.Açmanızı öneririm.
  • Device Tree: Device Tree özelliğini buradan açıp kapatabiliyoruz. Açık kalmasında fayda var.
  • SPI: GPIO üzerinden SPI arabirimiyle haberleşecek sensör vb. çevre birimi kullanmak için SPI arayüzünü aktif hale getirmemiz gereklidir.
  • I2C: GPIO üzerinden I2C arabirimiyle haberleşecek sensör LCD vs. çevre birimi kullanmak için I2C arayüzünü aktif hale getirmemiz gereklidir. Açık kalmasını öneririm.
  • SerialRaspberry Pi’nin GPIO pinlerinde bulunan UART fonksiyonu üzerinden terminal bağlantısını açıp kapatır. Açık kalmasını öneririm.
  • Audio: Ses çıkışını HDMI üzerinden veya kart üzerindeki 3.5 mm stereo çıkışa yönlendirmek için bu ayarı kullanmalısınız.Tavsiyem Auto modunda kalmasıdır.
  • Update: raspi-config yazılımını en güncel sürüme yükseltir. Çalışması için internet bağlantısı gereklidir.
Tüm bu ayarları yaptıktan sonra kalıcı olması için Raspberry'nizi Reboot edin...


16 Mart 2016 Çarşamba

RASPBERRY PI DERSLERİ (DERS:2) RASPBERRY PI ÖZELLİKLERİ VE İŞLETİM SİSTEMİ KURULUMU

Biz bu derslerimizde Raspberry Pi 2 modelini Kullanacağız







Raspberry Pi 2 Özellikleri





Teknik Özellikler:
  • Broadcom BCM2836 ARMv7 Quad Core SOC (Dört Çekirdekli) 
  • 900 MHz İşlemci Hızı
  • 1 GB RAM
  • 10/100 Ethernet RJ45 jack
  • 4 x USB2.0 port
  • Video/Ses Çıkışı: HDMI ve 4-kutup 3.5mm konektör
  • microSD kart yuvası
  • 40 Pin GPIO
    • 27 x GPIO
    • UART
    • I2C
    • SPI - 2 CS ucu
    • 3.3V
    • 5V
    • Ground
Pin Diyagramı


Adaptör Seçimi

Bu aşamada kesin bir karar olmamkla birlikte raspberry pi 2 "5V 2A" bir adaptör ile stabil olarak çalışmaktadır ben telefonumun şarj aleti ile besledim.

İşletim Sistemi Kurulumu

Biz işletim sistemi olarak Raspbian(Debian) kuracağız.







Öncelikle Buradan Raspbian işletim sisteminin son sürümünü indiriyoruz. İndirilen dosya image dosyası yani ".img" formatındadır.

Daha sonra Buradan Win32 Disk Imager Adlı programı indirip kuruyoruz.

İşletim sistemini Micro SD karta kuracağımız için SD kart Adaptörüne takıp bilgisayarımıza bağlıyoruz.

Bilgisayara Taktığımız SD kartı ne olur ne olmaz Formatlayalım bunu için en stabil çalışan HP Format Toolsdur. Buradan indirebilirsiniz. Programı açabilmek için Yönetici olarak çalıştırmanız Gereklidir. File System Olarak "FAT32" Seçmeniz daha uygundur. "Start"a tıkladığınızda kısa bir süre içerisinde SD kartınız formatlanır ve içerisinde bütün yer alan bilgiler silinir.

Daha sonra Win32 Disk Imager'ı çalıştırıp sağ üst köşesinde yeralan "Device"dan SD kartımızın takılı olduğu birimi seçin ve indirdiğimiz image dosyasını bulunduğu yerden seçin."Write" diyerek kısa bir süre içerisinde işletim sistemimizi SD kartımıza yazmış oluyoruz.

Raspberry Pi Açılış

Enerjiyi verip çalıştırmadan önce gerekli bağlantıları bağlayıp çalıştırmanız daha iyi olur.

  1.  Micro SD kartı yuvasına takın.
  2. Klavyenizi bağlayın.
  3. Mouse'unuzu bağlayın
  4. Wifi adaptörünüz varsa USB'ye takın(Driver gerekmeden otomatik tanıyacaktır) yoksa routur'ınızdan Ethernet kablosu ile raspberry pi'nize internet verin.
  5. Ekran Bağlantısı yapın. HDMI kablosu ile televizyonunuza bağlayabilirsiniz.
Bu adımları tamamladıktan sonra raspberry'niz enerji vermeye hazır oldu.Enerji Raspberry'e verince Şu şekilde bir yükle işlemi ile karşılaşacaksınız;

 

Daha sonra işletim sisteminiz açılmış olacak ve masaüstü ekranınız şu şekilde gözükecektir;










RASPBERRY PI DERSLERİ (DERS:1) RASPBERRY PI NEDİR?

Raspberry Pi Nedir?




Raspberry Pi, Raspberry Pi Foundation tarafından 2009’da geliştirilmeye başlanmış kredi kartı büyüklüğündeki tek board’dan oluşmuş tam donanımlı bir mini-bilgisayardır.

Peki bu cihaza neden ihtiyacım Var ?


Bunun aslında birden fazla sebebi olabilir. Kimileri bu cihazı evde sunucu kurmak için, kimileri python vb. dillerde yazılım geliştirmeye bir platform olduğu için, kimileri torrent vs. dosya indirme platformlarında 7/24 açık tutup bir “seedbox”a dönüştürüp kullanmak için, kimileri de cihaz 1080p videoları rahatlıkla açabildiğinden bir media center’a dönüştürmek için kullanmakta. Ayrıca kredi kartı ebatında olduğundan taşınabilir olması da ayrıca bir artısı. Ek olarak bilgisayarı yeni öğrenen biri için güzel ve ucuz bir başlangıç bilgisayarı olarak kullanabilirsiniz. Bu tamamiyle size ve yaratıcılığınıza kalmış.


15 Mart 2016 Salı

OPENCV DERSLERİ (DERS:14) MORFOLOJİK DÖNÜŞÜMLER-2

A) Aşınma Örneği

Orijinal Resim;


Kod;

import cv2
import numpy as np

img = cv2.imread('j.png',0)
kernel = np.ones((5,5),np.uint8)
erozyon = cv2.erode(img,kernel,iterations = 1)
cv2.imshow('erezyon',erozyon)
cv2.waitKey(0)
cv2.destroyAllWindows()

Sonuç;



B)Genleşme Örneği

Orjinal Resim;


Kod;

import cv2
import numpy as np

img = cv2.imread('j.png',0)
kernel = np.ones((5,5),np.uint8)
yayma = cv2.dilate(img,kernel,iterations = 1)
cv2.imshow('yayma',yayma)
cv2.imwrite('yayma.png',yayma)
cv2.waitKey(0)
cv2.destroyAllWindows()


Sonuç;




C)Açınım Örneği

Sonuç;



Kod;

import cv2
import numpy as np

img = cv2.imread('j.png',0)
kernel = np.ones((5,5),np.uint8)
acma = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)
cv2.imshow('acma',acma)
cv2.imwrite('acma.png',acma)
cv2.waitKey(0)
cv2.destroyAllWindows()

D)Kapanım Örneği

Sonuç;



Kod;

import cv2
import numpy as np

img = cv2.imread('j.png',0)
kernel = np.ones((5,5),np.uint8)
kapama = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)
cv2.imshow('kapama',kapama)
cv2.imwrite('kapama.png',kapama)
cv2.waitKey(0)
cv2.destroyAllWindows()

E)Morfolojik Gradient

Sonuç;



Kod;


import cv2
import numpy as np

img = cv2.imread('j.png',0)
kernel = np.ones((5,5),np.uint8)
gradient = cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel)
cv2.imshow('gradient',gradient)
cv2.imwrite('gradient.png',gradient)
cv2.waitKey(0)

cv2.destroyAllWindows()


Ders:13⬅                                                            Ders:15

OPENCV DERSLERİ (DERS:13) MORFOLOJİK DÖNÜŞÜMLER

Morfoloji Nedir?

Matematiksel morfoloji, geometrik objelerle ilgili işlem ve analiz yapma teori ve tekniğidir. Temeli küme teoremi, topoloji, rasgele fonksiyonlar ve kafes kuramına bağlıdır. En yaygın kullanımı sayısal görüntüler üzerindedir. Ancak bilindiği üzere grafikleri, yüzey ağları, katı cisimler ve pek çok uzaysal cisimlerde kullanılmaktadır.


Topolojik ve geometrik olarak
n
  • Büyüklük,  
n
  • şekil,  
n
  • dışbükeylik, içbükeylik,  
n
  • bağımlılık,  
n
  • jeodezik uzaklık  
n
  • gibi devamlılık-boşluk kavramını ilgilendiren konuları karakterize etmede çözümlere ulaşmıştır.  
 
Matematiksel morfoloji, aynı zamanda morfolojik görüntü işlemenin de temelini küme teoremine bağlı olarak oluşturmuştur.


Her ne kadar başlangıçta sadece ikili görüntüler için tasarlanmış olsa da, kısa sürede etki alanı gri düzeyli görüntülere de genişletildi. Renkli ve genel olarak çok kanallı görüntüler için ise birden fazla çözüm önerilmiş olmasına rağmen henüz yaygın olarak her hangi biri kabul edilmemiştir.


Matematiksel morfoloji’nin Kullanım alanları


n
  • Görüntü geliştirme
  • Görüntü segmentasyonu
  • Görüntü onarma
  • Kenar yakalama
  • Doku analizi
  • Parçacık Analizi
  • Genelleştirme
  • İskelet belirleme
  • Şekil analizi
  • Görüntü Sıkıştırma
  • Bileşen analizi
  • Eğri keskinleştirme
  • İnceltme
  • Özellik ayırma
  • Gürültü azaltma
  • Boşluk azaltma

Operatörler


En çok bilinen matematiksel morfolojik operatörleri,
n
  • Aşınma (erosion)  
  • Genleşme (dilation)  
  • Açınım (opening)  
  • Kapanım (closing)  
 Aşınma (Erosion):

Matematiksel morfolojinin temel operasyonlarından biridir. Ele alınan bölgenin sınır bölgelerinin aşındırılmasında kullanılmaktadır.Operatörün temel etkisi görüntüyü kenarlarından erozyona uğratmaktadır. Sonuçta pilsel grupları ve aralarındaki boşluklar küçülür seçilen YE’ye göre gürültülü şekiller düzelir.




     3x3 yapısal elemanı ile Aşınma işlemi


Genleşme(Dilation): 

Diğer bir temel morfolojik işlemdir. Ele alınan bölgenin sınırlarının genişletilmesinde kullanılmaktadır. Operatörün temel etkisi görüntüyü kenarlarından genişletmektir. Sonuçta pilsel grupları büyür ve aralarındaki boşluklar küçülür. 



    3x3 yapısal elemanı ile Genleşme işlemi


Açınım (opening):


Temel olarak Aşınma operatörünü (erosion) takip eden Genleşme operatörü (dilation) işlemidir.


  3x3 yapısal elemanı ile Açınım işlemi



Kapanım (closing):


nTemel olarak Genleşme operatörünü (dilation) takip eden Aşınma operatörü (erosion) işlemidir.


  3x3 yapısal elemanı ile Kapanım işlemi     


Ders:12⬅                                                            Ders:14


8 Mart 2016 Salı

OPENCV DERSLERİ (DERS:12) IMAGE THRESHOLDING DERS-3

Otsu Eşik Belirleme

Normalde bir gri görüntüyü ikili biçime çevirmek için izlenecek yöntem oldukça basittir. Bir eşik değeri belirlenir ve bu eşik değerin üzerindeki renkler beyaza, altındaki renkler siyaha dönüştürülür. Ancak tüm görüntüler aynı niteliklere sahip değildir. Sabit bir eşik değeri tüm görüntüler üzerinde kabul edilebilir sonuçlar üretemeyebilir. Dolayısıyla eşik değerin, resmin renk dağılımına uygun olarak belirlenmesini sağlayacak bir yönteme ihtiyaç duyulur.

Otsu metodu, gri seviye görüntüler üzerinde uygulanabilen bir eşik tespit yöntemidir. Bu metod kullanılırken görüntünün arka plan ve ön plan olmak üzere iki renk sınıfından oluştuğu varsayımı yapılır. Daha sonra tüm eşik değerleri için bu iki renk sınıfının sınıf içi varyans değeri hesaplanır. Bu değerin en küçük olmasını sağlayan eşik değeri, optimum eşik değeridir.

VARYANS

Varyans belli bir sayı dizisinin, bu dizinin aritmetik ortalaması etrafındaki dağılımının yorumlanabilmesini sağlayan bir ölçüdür. Varyans büyükse değerlerin dağınık ve kendi ortalamalarından uzak oldukları yorumu yapılır. Küçükse, değerlerin kendi ortalamaları etrafında çok dağılmadıkları anlaşılır.


Varyans aşağıdaki şekilde hesaplanır:

   

Burada (Xi üssü) değeri ağırlıklı ortalamadır. Pr(Xi), ise olasılık fonksiyonudur. Bir görüntü üzerinde bir renk değerinin olasılığı basitçe, bu değerin resimdeki sayısının, toplam pixel sayısına bölümüdür. (Bir torbada 3 kırmızı 5 mavi top vardır. Rastgele çekilen bir topun kırmızı olma olasılığı kaçtır?, 3/(3+5) gibi).

OpenCV'de OTSU Metodu;

Otsu Methodu kullanılabilmesi için;

  1. cv2.treshold() Fonksiyonu kullanılır.
  2. cv2.treshold() fonksiyonun içine resime atanan değişken ismi eşik değeri ve kullanılan threshold methodları girilir.
  3. Otsu methodu için OpenCV'de çağırılan kod "cv2.THRESH_OTSU" komutudur.
  4. Otsu Methodu için resmi Binary olarak eşiklemek gerekmektedir.Dolayısıyla"cv2.THRESH_BINARY+cv2.THRESH_OTSU" çağırılırsa doğru sonuç verecektir.

ÖRNEK KOD;



import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('messi.jpg',0)

# global thresholding
ret1,th1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)

# Otsu's thresholding
ret2,th2 = cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

# Otsu's thresholding after Gaussian filtering
blur = cv2.GaussianBlur(img,(5,5),0)
ret3,th3 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

# plot all the images and their histograms
images = [img, 0, th1,
          img, 0, th2,
          blur, 0, th3]
titles = ['Original Noisy Image','Histogram','Global Thresholding (v=127)',
          'Original Noisy Image','Histogram',"Otsu's Thresholding",
          'Gaussian filtered Image','Histogram',"Otsu's Thresholding"]

for i in xrange(3):
    plt.subplot(3,3,i*3+1),plt.imshow(images[i*3],'gray')
    plt.title(titles[i*3]), plt.xticks([]), plt.yticks([])
    plt.subplot(3,3,i*3+2),plt.hist(images[i*3].ravel(),256)
    plt.title(titles[i*3+1]), plt.xticks([]), plt.yticks([])
    plt.subplot(3,3,i*3+3),plt.imshow(images[i*3+2],'gray')
    plt.title(titles[i*3+2]), plt.xticks([]), plt.yticks([])
plt.show()

SONUÇ;
  
Ders:11⬅                                                            Ders:13

7 Mart 2016 Pazartesi

OPENCV DERSLERİ (DERS:11) IMAGE THRESHOLDING DERS-2

Uyarlanabilir Eşik

Birönceki bölümdeki Thresholdingler bazı durumlarda(ışık,ortam farklılıklarında) verimli olmayabilir bu durumda uyarlanabilir eşik methodu kullanılabilir. uyarlanabilir eşik methodu değişen ışık ortamlarında daha stabil ve daha iyi sonuçlar elde edebilir.

OpenCV kütüphanesinde bu kodlar;




  • cv2.ADAPTIVE_THRESH_MEAN_C: eşik değeri alanının ortalamasıdır.
  • cv2.ADAPTIVE_THRESH_GAUSSIAN_C: Eşik değeri ağırlıkları bir Gauss penceresi olan alan değerlerinin ağırlıklı toplamıdır.

  • Örnek Kod


    Örneğin bir önceki derstede kullandığımız messi.jpg resmini bu eşiklerden geçirmek istersek

    import cv2
    import numpy as np
    from matplotlib import pyplot as plt

    img = cv2.imread('messi.jpg',0)
    img = cv2.medianBlur(img,5)

    ret,th1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
    th2 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,\
                cv2.THRESH_BINARY,11,2)
    th3 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,\
                cv2.THRESH_BINARY,11,2)

    titles = ['Original Image', 'Global Thresholding (v = 127)',
                'Adaptive Mean Thresholding', 'Adaptive Gaussian Thresholding']
    images = [img, th1, th2, th3]

    for i in xrange(4):
        plt.subplot(2,2,i+1),plt.imshow(images[i],'gray')
        plt.title(titles[i])
        plt.xticks([]),plt.yticks([])
    plt.show()


    Sonuç;




    Ders:10⬅                                                                Ders:12

    OPENCV DERSLERİ (DERS:10) IMAGE THRESHOLDING DERS-1

    NEDİR?

    Görüntü Eşikleme (Image Thresholding) 
    • Bu fonksiyon genellikle gri tonlu bir görüntüden, ikili görüntü oluşturmak için kullanılır. Renkli görüntülerle de kullanılabilir. 
    • Kaynak görüntünün piksel değerlerini çok büyük ya da çok küçük değerlere filtreler. 
    • Çoğunlukla görüntülerdeki gürültüyü kaldırmak için kullanılır.
    • Birçok threshold tipi mevcuttur: 
    1-Binary Tip 
    2-Binary Inverted Tip
    3-To Zero Tip 
    4-To Zero Inverted Tip
    5-Truncate Tip


    Kullanım Şekli

    cv2.threshold(src, thresh, maxval, type[, dst])



    • SRC; Giriş dizisidir. Bu dizi gri tonlamalı bir resim olmalıdır.
    • TRESH; Eşik ve Piksel değerlerini sınıflandırmak için kullanılır
    • MAXVAL; THRESH_BINARY ve THRESH_BINARY_INV eşikleme türlerini maksimum değerde kullanmak için yazılır.
    • TYPE; Threshold tipleri belirlenir.

    Threshold Tipleri




  • cv2.THRESH_BINARY
  • cv2.THRESH_BINARY_INV
  • cv2.THRESH_TRUNC
  • cv2.THRESH_TOZERO


  • cv2.THRESH_TOZERO_INV




  • Threshold Örnek Kod;


    Örneğin "messi.jpg" adlı resim dosyasını görüntü eşiklemek istersek;

    import cv2
    import numpy as np
    from matplotlib import pyplot as plt

    #Resim Gri Skalada Okunur#
    img = cv2.imread('messi.jpg',0)

    #Resime Görüntü Eşiklemeler uygulanır#

    ret,thresh1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
    ret,thresh2 = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)
    ret,thresh3 = cv2.threshold(img,127,255,cv2.THRESH_TRUNC)
    ret,thresh4 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO)
    ret,thresh5 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO_INV)

    #Görüntü Ekranının İsimleri ve Değişkenleri Atanır#

    titles = ['Original Image','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV']
    images = [img, thresh1, thresh2, thresh3, thresh4, thresh5]

    #Aynı Ekranda Thresholdlar Gözlenir#
    for i in xrange(6):
        plt.subplot(2,3,i+1),plt.imshow(images[i],'gray')
        plt.title(titles[i])
        plt.xticks([]),plt.yticks([])

    plt.show()

    Sonuç;


    Görüntü Eşikleme Görüntü işlemede sık başvurulan bir metoddur.

    Ders:9⬅                                                                 Ders:11