29 Ağustos 2017 Salı

OPENCV DERSLERİ (DERS:23) HİSTOGRAM PART-3-2D HİSTOGRAMLAR

2D HİSTOGRAMLAR

    Daha önceki histogram derslerinde işlenilen konular aslında tek boyutlu histogram olarak adlandırılır.Bunun nedeni ise sadece gri tonlamaları kontrol etmesidir. Fakat 2 boyutlu histogramlarda iki özellik göz önüne alınır.Bu özellikler renk (Hue) ve dolgunluk (saturation) değerleridir. 

     Hue ve Saturation Nedir?
        Öncelikle HSV renk uzayından bahsedecek olursak HSV(Hue,Saturation,Value) renkleri sırasıyla renk özü, doygunluk ve parlaklık olarak tanımlar.
            Hue(Renk Özü): Rengin baskın dalga uzunluğunu belirler.Açısal bir değerdir(0-360). Bazı uygulamalarda 0-100 arası olağanlaştırılır. 
            Saturation(Doygunluk): Rengin canlılığını belirler.Yüksek doygunluk canlı renklere neden olurken,düşük doygunluk resmin gri tonlamaya yaklaşmasına neden olur.
        Aşağıdaki iki resim HSV renk uzaylarını göstermektedir.

       



OPENCV'DE 2D HİSTOGRAM

    OpenCV'de bu işlem oldukça basittir. Bu işlem cv2.calcHist() fonksiyonu kullanılarak yapılır. Renk histogramlarını bulmak için görüntü renklerini BGR formatından HSV formatına çevirmek gereklidir.Bu fonksiyonun parametreleri şunlardır;
    ➤Kanallar: [0,1] çünkü hem H hemde S düzleminde işlemek zorundadır.
    ➤Kutular: [180,256] 180 H düzlemi 256 S düzlemi içindir. Siz bu değerleri gerekli şekilde değiştirebilirsiniz.
    ➤Menzil: [0,180,0,256] Hue değeri 0 ile 180 arasında Saturation değeri 0 ile 256 arasında değişmektedir.

    Kod ile gösterecek olursak;
import cv2
import numpy as np

img = cv2.imread('home.jpg')
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

hist = cv2.calcHist([hsv], [0, 1], None, [180, 256], [0, 180, 0, 256])


NUMPY'DE 2D HİSTOGRAM

    Numpy 2D histogram için ayrı bir fonksiyon sunar. Bu fonksiyon np.histogram2d() dir.

    Kod ile gösterecek olursak;
import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('home.jpg')
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

hist, xbins, ybins = np.histogram2d(h.ravel(),s.ravel(),[180,256],[[0,180],[0,256]])
    Burada birinci argüman H düzlemi,ikincisi S düzlemi,üçüncüsü kutu sayısı,dördüncüsü ise aralık derecesidir.

2D HİSTOGRAM ÇİZDİRME YÖNTEMİ

    Matplotlib Kullanımı;
        Örnek Resim:
        Kod:
import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('image.jpg')
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
hist = cv2.calcHist( [hsv], [0, 1], None, [180, 256], [0, 180, 0, 256] )

plt.imshow(hist,interpolation = 'nearest')
plt.show()
        Sonuç:


15 Ağustos 2017 Salı

CC3200MOD LAUNCHPAD DERSLERİ (DERS:1) TANITIM


    CC3200MOD Texas Instruments firmasının IOT çözümleri için geliştirdiği CC3200 işlemcisi ve çevresel donanımlarının bir paket haline getirdiği bir modüldür.
    İlk başta hemen söyleyelim CC3200 launchpad'teki çevresel donanımlar bir kılıfla sunulduğu için CC3200MOD launchpadi ile bu launchpad arasında yazılımsal donanımsal olarak hiç bir fark yoktur.Bu ders serisini takip ederken CC3200 launchpad ilede eşlik edebilirsiniz.
    Bu kartı ve CC3200MOD entegresini anlatmadan önce IOT nedir biraz ondan bahsedelim.

IOT NEDİR?

   IOT(Internet Of Things) yani nesnelerin interneti,aklınıza gelebilecek hertürlü eşyanın elektronik ve yazılım donanımlarla internete bağlanabilmesi, kontrolü,gerekli verilerin kaydedilmesi ve veri gönderimini sağlayan bir alandır.
    Peki nerelerde ve nasıl kullanılır diye sorulacak olursa,Akıllı ev sistemleri, Cloud(Bulut) sistemlerine sensör (sıcaklın, basınç, nem, hareket, ağırlık vs...) verilerinin kaydedilmesi endüstriyel otomasyon sistemleri uzaktan kontrol, otonom sistemler gibi elektroniğin bulunduğu her alanda kullanılabilmektedir.
    İyi bir IOT girii yapmak için neler bilinmelidir sorusunun cevabını verecek olursak.Öncelikle IOT adı üstünde olduğu gibi internet üzerinden çalışır bunun için bazı internet protokollerine yani haberleşme protokollerine hakim olmanız gerekmektedir. Bunlar ise;
  • HTTP protokolü
  • MQTT Protokolü
  • Client,Server ilişkisi 
  • SMTP Protokolü
  • TCP/IP Protokolüdür. 

CC3200MOD Özellikleri

    

    CC3200MOD içinde 80MHz'lik ARM Cortex M4 mimarisine sahip işlemcisi bulunan bir IOT entegresidir.Özellikleri;

        ➤ Gelişmiş Donanım Güvenliği İçeren Donanım Şifreleme Motoru Bunlar; AES,DES ve 3DES
        ➤ 8 bitlik hızlı paralel kamera arayüzü
        ➤ 1 adet multichannel I2S formatında Audio seri portu
        ➤ 1 adet SD(MMC) arayüzü
        ➤ 2 adet asenkron UART arayüzü
        ➤ 2 adet SPI arayüzü
        ➤ 1 adet I2C arayüzü
        ➤ 4 adet Timer
        ➤ 16 bitlik PWM
        ➤ 1 adet Watchdog Timer
        ➤ 4 kanal 12 bitlik ADC
        ➤ Wi-Fi Ağ İşlemci Alt Sistemi

    Öne çıkan özellikleridir.

Neden CC3200MOD ?

    Bir çok IOT çözümü için yapılmış modüller,kartlar ve entegreler kullandıktan sonra CC3200 entegresi diğer çözümler oranla daha düşük enerji tüketimi,daha iyi stabilite , kamera arayüzü, sd kart arayüzü gibi daha kapsamlı imkanlar sunması ve tek başına çoğu alanda yeterli olması kullandığım IOT çözümleri arasında en iyisi olduğunu kanıtladı.
    Tek dezavantajı 35 dolar gibi yüksek bir fiyata satılması.35 dolar ise profesyonel anlamda IOT işleri yapacaksanız çok önemli olmasa gerek.

Gerekli Dökümanlar

 Datasheet: Buradan açabilirsiniz.
 Technical Referance Manuel: Buradan açabilirsiniz.
 Getting Started Guide: Buradan açabilirsiniz.
 Texas Instruments linki: Buradan açabilirsiniz.