Kenar Tespiti & Haar Cascade
Kenar Tespiti
Kenar tespiti, görüntü işlemede kullanılan önemli bir tekniktir. Bu işlem, görüntülerdeki nesnelerin sınırlarını veya kenarlarını bulmak için kullanılır. Kenar tespiti, nesne tanıma, görüntü segmentasyonu ve görüntü takibi gibi birçok uygulamada temel bir adımdır. OpenCV, kenar tespiti için birkaç yöntem sunar; bu bölümde, bu yöntemlerden en popüler olanlarını inceleyeceğiz.
Sobel ve Scharr Operatörleri
Sobel ve Scharr operatörleri, görüntünün yatay ve dikey türevlerini alarak kenarları tespit eder. Bu operatörler, görüntüdeki yoğunluk değişimlerini vurgulayarak kenarları belirginleştirir.
import cv2 as cv
import numpy as np
img = cv.imread('your_image_path.jpg')
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
sobelx = cv.Sobel(gray, cv.CV_64F, 1, 0)
sobely = cv.Sobel(gray, cv.CV_64F, 0, 1)
scharrx = cv.Scharr(gray, cv.CV_64F, 1, 0)
scharry = cv.Scharr(gray, cv.CV_64F, 0, 1)
cv.imshow('Sobel X', sobelx)
cv.imshow('Sobel Y', sobely)
cv.imshow('Scharr X', scharrx)
cv.imshow('Scharr Y', scharry)
cv.waitKey(0)
Laplacian Operatörü
Laplacian operatörü, görüntünün ikinci mertebeden türevini hesaplayarak kenarları tespit eder. Bu yöntem, kenarların hem yönünü hem de büyüklüğünü dikkate alır.
laplacian = cv.Laplacian(gray, cv.CV_64F)
cv.imshow('Laplacian', laplacian)
cv.waitKey(0)
Canny Kenar Tespiti
Canny kenar dedektörü, kenar tespiti için en yaygın kullanılan yöntemdir. Bu algoritma, gürültünün azaltılması, kenar gradyanının hesaplanması, kenarların inceltilmesi ve kenar izleme gibi bir dizi adımdan oluşur.
canny = cv.Canny(gray, threshold1=120, threshold2=180)
cv.imshow('Canny', canny)
cv.waitKey(0)
Canny kenar dedektörünün 'threshold1' ve 'threshold2' parametreleri, kenar tespiti için kullanılan eşik değerleridir. Bu değerlerle deney yaparak, farklı görüntüler için en iyi sonuçları bulabilirsiniz.
Kenar tespiti sırasında, görüntünün önceden işlenmesi (örneğin, gürültünün azaltılması) önemlidir. Bu, kenar tespit sonuçlarının doğruluğunu artırabilir.
Kenar tespiti teknikleri, görüntü analizinin temel taşlarından biridir. Bu teknikler, görüntülerden anlamlı bilgiler çıkarmak için kullanılabilir ve birçok gelişmiş görüntü işleme ve bilgisayar görüşü uygulamasının temelini oluşturur.
Haar Cascade
Haar Cascade, nesne algılama için kullanılan etkili bir yöntemdir ve sıklıkla yüz tanıma gibi görevlerde kullanılır. Bu yöntem, AdaBoost öğrenme algoritmasını kullanarak bir nesnenin (örneğin bir yüzün) özelliklerini hızlı bir şekilde tespit edebilir. OpenCV, Haar Cascade tabanlı nesne algılama için hazır XML dosyaları sunar. Bu bölümde, bir görüntüden yüzleri nasıl algılayabileceğinizi inceleyeceğiz.
Haar Cascade Classifier'ın Yüklenmesi
Öncelikle, OpenCV tarafından sağlanan Haar Cascade XML dosyasını CascadeClassifier
ile yüklememiz gerekiyor.
haar_cascade = cv.CascadeClassifier('path_to_haar_face.xml')
Bu dosya, Haar özelliklerine dayalı yüz algılama için eğitilmiş bir sınıflandırıcı içerir.
Yüz Tespiti
Sınıflandırıcıyı kullanarak, görüntüdeki yüzlerin dikdörtgen koordinatlarını tespit edebiliriz. Bu işlem için gri tonlamalı bir görüntü kullanılır çünkü renk bilgisi bu bağlamda gerekli değildir.
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
faces_rect = haar_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=1)
detectMultiScale
fonksiyonu, algılanan yüzlerin koordinatlarını içeren bir dizi döndürür. scaleFactor
ve minNeighbors
parametreleri, algılama hassasiyetini ayarlamak için kullanılır.
Yüzlerin İşaretlenmesi
Tespit edilen her yüz için, orijinal görüntü üzerinde bir dikdörtgen çizerek yüzleri işaretleyebiliriz.
for (x, y, w, h) in faces_rect:
cv.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), thickness=2)
Her (x, y, w, h)
değeri, tespit edilen bir yüzün köşe koordinatlarını ve boyutlarını temsil eder.
Yüz algılama performansını artırmak için, scaleFactor
ve minNeighbors
parametreleriyle deneyler yapabilirsiniz. Ancak, bu değerlerin algılama hızı ve doğruluğu üzerinde önemli etkileri olabilir.
Haar Cascade yöntemi, aydınlatma koşullarına ve yüzün konumuna duyarlı olabilir. En iyi sonuçlar için, iyi aydınlatılmış ve ön plandaki yüzlerin net olduğu görüntüler kullanın.
Haar Cascade sınıflandırıcıları, hızlı ve etkili bir şekilde yüzler gibi nesneleri algılamanın yanı sıra, gözlük, araçlar ve hayvanlar gibi diğer nesneler için de kullanılabilir. Doğru ayarlarla, çeşitli görüntü işleme uygulamalarında güvenilir sonuçlar elde edilebilir.