Skip to main content

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)
İpucu

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.

Dikkat

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.

İpucu

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.

Dikkat

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.