OpenCv’de Bulanıklaştırma İşlemi

Merhaba arkadaşlar, Mobilhanem.com sitemizde Python ile Görüntü İşleme Dersleri eğitim serisine kaldığımız yerden devam ediyoruz. Geçen dersimizde filtreleme işlemleri dersine ait Renk Filtreleme İşlemi’nden bahsettik. Python ile Görüntü İşleme dersinde bu hafta ise OpenCv’de Bulanıklaştırma İşlemi dersine başlayacağız. Eğer bir önceki dersimizi inceleme fırsatınız olmadıysa Renk Filtreleme İşlemi  dersimize buradan ulaşabilirsiniz.

Filtreleme İşlemleri dersimizde işleyeceğimiz konu başlıklarını tekrar sıralayalım.

  • Renk Filtreleme
  • Bulanıklaştırma
  • Video Üzerinde Canny ile Kenar Tespiti
  • Canny Yöntemi ile Resimde Kenar Tespiti
  • Basit Eşit Filtreleme
  • Gauss ve Mean Adaptif Filtrelemeler
  • Otsu Yöntemi ile Eşit Filtreleme
  • Eşit Filtreleme Yöntemi ile Metin Netleştirme

Listemizden sırayla ilerlemeye devam ediyoruz. Renk filtreleme işlemi konusunu geçen dersimizde bitirmiştik. Bu haftaki konumuz olan OpenCv’de Bulanıklaştırma İşlemi dersine başlayabiliriz.

OpenCv’de Bulanıklaştırma İşlemi

Geçen dersimizde renk filtreleme işlemi gerçekleştirdiğimiz kod bloklarımız üzerinden devam edeceğiz.

import cv2
import numpy as np
 
kamera = cv2.VideoCapture(0)
 
while(True):
    ret, bilgisayarKamerasi = kamera.read()
 
    hsv=cv2.cvtColor(bilgisayarKamerasi,cv2.COLOR_BGR2HSV)
 
    baslangic_altMavi=np.array([100,60,60])
    bitis_ustMavi=np.array([140,255,255])
 
 
    maskeleme=cv2.inRange(hsv,baslangic_altMavi,bitis_ustMavi)
    filtreli_goruntu=cv2.bitwise_and(bilgisayarKamerasi,bilgisayarKamerasi,mask=maskeleme)
 
    cv2.imshow('Orjinal Goruntu (Bilgisayar Kamerasi)',bilgisayarKamerasi)
    cv2.imshow('Maskeli Goruntu (Bilgisayar Kamerasi)',maskeleme)
    cv2.imshow('Filtrenlemis Goruntu (Bilgisayar Kamerasi)',filtreli_goruntu)
 
    if cv2.waitKey(25) & 0xFF == ord('x'):
        break
 
kamera.release()
cv2.destroyAllWindows()

Geçen dersimizde anlık alınan görüntü üzerinden mavi renk için filtreleme işlemini gerçekleştirmiştik. Mavi rengi filtreleme işlemin ardından da filtrelemesi yapılan görüntüyü bulanıklaştırma işlemine tabii tutacağız.

Filtreleme için bir görüntü üzerinde tek tek gezecek olan 10×10 boyutunda bir gezici bir çekirdek oluşturacağız (No-1). Daha sonra ise oluşturduğumuz filtreleme çekirdeği bir görüntüyü birleştirmemiz gerekecektir.

import cv2
import numpy as np

kamera = cv2.VideoCapture(0)

while (True):
    ret, bilgisayarKamerasi = kamera.read()

    hsv = cv2.cvtColor(bilgisayarKamerasi, cv2.COLOR_BGR2HSV)

    baslangic_altMavi = np.array([100, 60, 60])
    bitis_ustMavi = np.array([140, 255, 255])

    maskeleme = cv2.inRange(hsv, baslangic_altMavi, bitis_ustMavi)
    filtreli_goruntu = cv2.bitwise_and(bilgisayarKamerasi, bilgisayarKamerasi, mask=maskeleme)

    gezici_cekirdek=np.ones((10,10),np.float32)/100  # No-1

    cv2.imshow('Orjinal Goruntu (Bilgisayar Kamerasi)', bilgisayarKamerasi)
    cv2.imshow('Maskeli Goruntu (Bilgisayar Kamerasi)', maskeleme)
    cv2.imshow('Filtrenlemis Goruntu (Bilgisayar Kamerasi)', filtreli_goruntu)

    if cv2.waitKey(25) & 0xFF == ord('x'):
        break

kamera.release()
cv2.destroyAllWindows()

Yukarıdaki kod bloğunda No-1 açıklama satırlı olan kısımda 10×10’luk çekirdek ile bir ortalama alma filtresi oluşturmuş oluyoruz. Çekirdeğimizi oluşturduktan sonra bu gezici çekirdek ile alınan filtrelenmiş görüntüyü birleştirmek için cv.filter2D  fonksiyonunu kullanacağız (No-2).

import cv2
import numpy as np

kamera = cv2.VideoCapture(0)

while (True):
    ret, bilgisayarKamerasi = kamera.read()

    hsv = cv2.cvtColor(bilgisayarKamerasi, cv2.COLOR_BGR2HSV)

    baslangic_altMavi = np.array([100, 60, 60])
    bitis_ustMavi = np.array([140, 255, 255])

    maskeleme = cv2.inRange(hsv, baslangic_altMavi, bitis_ustMavi)
    filtreli_goruntu = cv2.bitwise_and(bilgisayarKamerasi, bilgisayarKamerasi, mask=maskeleme)

    gezici_cekirdek=np.ones((10,10),np.float32)/100  # No-1
    bulaniklastirma=cv2.filter2D(filtreli_goruntu,-1,gezici_cekirdek) #No-2

    cv2.imshow('Maskeli Goruntu (Bilgisayar Kamerasi)', filtreli_goruntu)
    cv2.imshow('Bulaniklastirilmis Goruntu (Bilgisayar Kamerasi)', bulaniklastirma)

    if cv2.waitKey(25) & 0xFF == ord('x'):
        break

kamera.release()
cv2.destroyAllWindows()

Son olarak imshow fonksiyonumuzu kullanarak filtrelenmiş görüntüyü ve bu filtrelenmiş görüntü üzerinde yaptığımız bulanıklaştırmayı ekranımızda gösteriyoruz.

 

Mobilhanem.com da Python ile Görüntü İşleme serisinde bir dersin daha sonuna geldik. Bu hafta Python ile Görüntü İşleme dersimizde OpenCv’de Bulanıklaştırma İşlemi yaptık. Umarım sizin için faydalı bir yazı olmuştur. Bir sonraki Video Üzerinde Canny ile Kenar Tespiti dersinde görüşmek üzere. Eksik ya da yanlış gördüğünüz bir şey varsa lütfen iletişime geçmekten çekinmeyin. Sorularınızı buradan sorabilirsiniz.

Tüm Görüntü İşleme Dersleri için tıklayınız.

Kaynak: Link1

14

Yunus Emre Aydın

Yazılım Mühendisi

1 Yorum

Haftalık Bülten

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