Bilgisayarlı Görü

Kenar Bulma

Dr. Öğr. Üyesi Oğuz Emre Kural

2026

Kenar Tespiti (Edge Detection) Nedir?

Kenar tespiti, bir görüntüde yoğunluk değişiminin (parlaklık farkının) en belirgin olduğu yerleri bulmak için kullanılan bir tekniktir.

Kenarlar genellikle:

  • Nesne sınırlarını belirler
  • Şekil ve kontur bilgisi sağlar
  • Segmentasyon, nesne tanıma, derinlik analizi gibi birçok işlemin temelidir

Neden Kenar Ararız?

  • Görsel bilgi en çok kenarlarda yoğunlaşır.
  • Düz alanlar ilgi çekici değildir, değişim olan yerler önemlidir.
  • İnsan gözü de benzer şekilde çalışır: dikkat kenarlarda toplanır.

Kenar Tespitinin Evrimi

Bu derste kenar tespitini aşamalı olarak alacağız:

  1. Temel Fikir (Gradyan): Kenarların, görüntünün türevini (yoğunluk değişimi) alarak bulunabileceği temel matematiksel fikri anlayacağız.

  2. İlk Denemeler (Sobel, Prewitt): Bu temel fikri, konvolüsyon kullanarak basitçe uygulayan ilk operatörleri inceleyeceğiz. Hızlı ama gürültülü sonuçlar verdiğini göreceğiz.

  3. Zirve Noktası (Canny): Ardından, basit yaklaşımların tüm zayıflıklarını gidermek için tasarlanmış, çok adımlı ve akıllı bir algoritma olan Canny’yi keşfedeceğiz. Neden endüstri standardı olduğunu adım adım anlayacağız.

Genel Kenar Tespit Süreci

  1. Görüntüyü hazırla
    • Genellikle gri seviye görüntü ile çalışılır.
  2. Gürültüyü azalt
    • Gaussian bulanıklaştırma ile yalancı kenarlar azaltılabilir.
  3. Yoğunluk değişimini belirle
    • Sobel, Prewitt gibi operatörlerle gradyan bilgisi elde edilir.
    • Daha gelişmiş yöntemlerde bu adım farklı biçimde uygulanabilir.
  4. Kenar adaylarını seç
    • Güçlü değişimler eşikleme ile belirlenir.
  5. Kenar haritasını oluştur
    • Sonuçta görüntüdeki sınırlar ve geçiş bölgeleri öne çıkarılır.

Kenar Tespiti Nasıl Çalışır?

Kenar tespiti, bir görüntüdeki yoğunluk değişimini ölçmeye dayanır.
Bu değişim çoğunlukla gradyan ile ifade edilir:

\[ \|\nabla I\| = \sqrt{\left(\frac{\partial I}{\partial x}\right)^2 + \left(\frac{\partial I}{\partial y}\right)^2} \]

  • \(\frac{\partial I}{\partial x}\): Yatay yöndeki yoğunluk değişimi
  • \(\frac{\partial I}{\partial y}\): Dikey yöndeki yoğunluk değişimi

Gradyan büyüdükçe, piksel çevresindeki değişim daha ani hâle gelir.
Bu nedenle büyük gradyan değerleri, kenar adayı bölgeleri gösterir.

Not: Gradyan yönü, değişimin en fazla olduğu yönü gösterir; bu yön genellikle kenara diktir.

Kullanılan Yöntemler

Aşağıdaki başlıca yöntemlerle kenar tespiti yapılır:

Yöntem Açıklama
Sobel X ve Y yönündeki değişimi yaklaşık hesaplar; en yaygın temel yöntemlerden biridir
Prewitt Sobel’e benzer, daha basit çekirdekler kullanır
Roberts Çapraz yönlerde türev alır; küçük kernel ile hızlı çalışır
Laplacian İkinci türeve dayanır; yön bilgisi vermez
Canny Gürültü azaltma, gradyan, bastırma ve eşikleme adımlarını birleştiren çok aşamalı yöntemdir

Hangisini Ne Zaman Kullanmalı?

Yöntem Avantaj Dezavantaj
Sobel Basit, anlaşılır, yön bilgisi sağlar Gürültüden etkilenebilir
Prewitt Yapısı sade, hesaplaması kolay Sobel’e göre daha zayıf tepki verebilir
Roberts Küçük kernel, hızlı hesaplama Gürültüye oldukça duyarlıdır
Laplacian Yönsüz kenar tepkisi verir, ikinci türev mantığını gösterir Gürültüye hassastır, genellikle önce yumuşatma gerekir
Canny İnce ve daha güvenilir kenar haritası üretir Hesaplama maliyeti daha yüksektir, eşik seçimi önemlidir

Kenar Haritası Nedir?

Kenar tespit operatörleri, görüntüde yoğunluğun hızlı değiştiği bölgelerde yüksek değer, daha durağan bölgelerde ise düşük değer üretir.

Sonuçta elde edilen görüntüye kenar haritası denir.

  • Kenar bölgeleri → parlak / yüksek değerli
  • Düz ve homojen alanlar → koyu / düşük değerli

Kenar haritası, orijinal görüntünün kendisi değil; kenar olasılığını veya kenar gücünü gösteren yeni bir çıktıdır.

Sobel Operatörü Nedir?

Sobel operatörü, bir görüntüdeki yoğunluk değişimini x ve y yönlerinde yaklaşık hesaplayan, birinci türev tabanlı bir kenar tespit yöntemidir.

  • Kenarlar, yoğunluk değişiminin hızlı olduğu bölgelerde ortaya çıkar.
  • Sobel, bu değişimi iki doğrultuda ayrı ayrı ölçer.
  • Böylece hem kenar gücü hem de yön bilgisi elde edilebilir.

Matematiksel Tanım

Gradyan büyüklüğü:

\[ G = \sqrt{G_x^2 + G_y^2} \]

Yaklaşık olarak:

\[ G \approx |G_x| + |G_y| \]

  • \(G_x\): X yönündeki gradyan (sağ-sol yönlü farkları öne çıkarır)
  • \(G_y\): Y yönündeki gradyan (yukarı-aşağı yönlü farkları öne çıkarır)

Sobel Çekirdekleri

X yönü için Sobel çekirdeği

\[ G_x = \begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix} \]

Y yönü için Sobel çekirdeği

\[ G_y = \begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix} \]

Bu Çekirdekler Ne Yapar?

  • \(G_x\): sağ-sol farklarını hesaplar
    • Bu nedenle dikey kenarlara güçlü tepki verir.
  • \(G_y\): yukarı-aşağı farklarını hesaplar
    • Bu nedenle yatay kenarlara güçlü tepki verir.

Her piksel üzerinde bu çekirdeklerle konvolüsyon uygulanır.
Elde edilen \(G_x\) ve \(G_y\) değerleri birleştirilerek toplam kenar gücü hesaplanır.

Sobel Operatörünün Özellikleri

Özellik Açıklama
Türev türü 1. türev tabanlıdır
Yön bilgisi X ve Y yönleri ayrı ayrı elde edilir
Gürültüye duyarlılık Orta düzeydedir
Hesaplama maliyeti Düşüktür
Kenar hassasiyeti Orta düzeydedir
Çekirdek boyutu Genellikle 3×3 kullanılır

Neden Sobel?

  • Uygulaması basit ve hızlıdır.
  • X ve Y yönünde ayrı sonuç verdiği için yönlü analiz yapılabilir.
  • Basit türev operatörlerine göre biraz daha kararlı sonuç verir.
  • Küçük bir yumuşatma etkisi içerir; yine de çoğu durumda öncesinde blur uygulanması faydalıdır.

Sobel, temel mantığı öğretmek için en uygun operatörlerden biridir.

Görsel Etki

  • \(G_x\): dikey çizgileri belirginleştirir
  • \(G_y\): yatay çizgileri belirginleştirir
  • \(G = |G_x| + |G_y|\): tam kenar haritası verir

Sobel Operatörü – Örnek

Bu örnekte sol taraf koyu, sağ taraf parlaktır. Dolayısıyla görüntüde belirgin bir dikey kenar vardır.

Giriş görüntüsü

\[ A = \begin{bmatrix} 10 & 10 & 100 \\ 10 & 10 & 100 \\ 10 & 10 & 100 \end{bmatrix} \]

Kullanılan Sobel Çekirdekleri

\[ G_x = \begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix} \qquad G_y = \begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix} \]

Adım 1: \(G_x\) Hesabı

\[ G_x = (-1 \cdot 10) + (0 \cdot 10) + (1 \cdot 100) + (-2 \cdot 10) + (0 \cdot 10) \\ + (2 \cdot 100) + (-1 \cdot 10) + (0 \cdot 10) + (1 \cdot 100) \\ \]

\[ G_x = (-10 + 0 + 100) + (-20 + 0 + 200) + (-10 + 0 + 100) \]

\[ G_x = 90 + 180 + 90 = 360 \]

Sonuç büyük çıktığı için x yönünde güçlü bir değişim vardır.
Bu da dikey kenar bulunduğunu gösterir.

Adım 2: \(G_y\) Hesaplaması (yatay kenar kontrolü)

\[ G_y = (-1 \cdot 10) + (-2 \cdot 10) + (-1 \cdot 100) + (0 \cdot 10) + (0 \cdot 10) \\ + (0 \cdot 100) + (1 \cdot 10) + (2 \cdot 10) + (1 \cdot 100) \\ \]

\[ G_y = (-10 -20 -100) + (0 + 0 + 0) + (10 + 20 + 100) \\ G_y = -130 + 0 + 130 = 0 \]

Gradyan Büyüklüğü

\[ G = \sqrt{G_x^2 + G_y^2} = \sqrt{360^2 + 0^2} = 360 \]

  • Dikey kenar çok belirgin → yüksek gradyan değeri
  • Yatay fark yok → \(G_y = 0\)

Sonuç

Bu örnekte Sobel operatörü, görüntüdeki dikey kenarı başarılı şekilde ortaya çıkarmıştır.

  • Yalnızca \(G_x\) kullanılırsa dikey kenarlar vurgulanır.
  • Yalnızca \(G_y\) kullanılırsa yatay kenarlar vurgulanır.
  • Tüm kenarları görmek için iki bileşen birlikte kullanılır.

OpenCV Örnek

Sobel Örnek Uygulama

Scharr Operatörü: Daha Hassas Bir Sobel

Sobel operatörü pratik ve yaygın bir yöntemdir; ancak özellikle küçük çekirdek boyutlarında, tüm yönlere karşı tam simetrik davranmaz.
Bu nedenle bazı diyagonal kenarlarda gradyan hesabı istenen kadar dengeli olmayabilir.

Scharr operatörü, bu sorunu azaltmak için geliştirilmiş, Sobel’e çok benzeyen fakat daha iyi rotasyonel simetri sağlayan bir 3×3 gradyan operatörüdür.

  • Sobel ile aynı mantığa dayanır
  • X ve Y yönlerinde türev yaklaşıklar
  • Özellikle 3×3 boyutta daha kararlı gradyan hesabı sunar

Scharr Çekirdekleri

\[ G_x = \begin{bmatrix} -3 & 0 & 3 \\ -10 & 0 & 10 \\ -3 & 0 & 3 \end{bmatrix} \qquad G_y = \begin{bmatrix} -3 & -10 & -3 \\ 0 & 0 & 0 \\ 3 & 10 & 3 \end{bmatrix} \]

Not: Sobel’deki ağırlıklara benzer bir yapı kullanılır; ancak katsayılar, yönler arası tepki dengesini iyileştirecek şekilde yeniden düzenlenmiştir.

Neden Scharr?

  • Daha iyi rotasyonel simetri sağlar
  • Diyagonal kenarlarda daha dengeli tepki verebilir
  • 3×3 çekirdekte Sobel’e göre daha doğru gradyan yaklaşımı sunar
  • Sobel ile aynı kullanım mantığını korur

Sobel ve Scharr Karşılaştırması

Özellik Sobel Scharr
Temel amaç Gradyan hesaplama Gradyan hesaplama
Çekirdek boyutu Genellikle 3×3 Genellikle 3×3
Rotasyonel simetri Daha sınırlı Daha iyi
Diyagonal kenarlara tepki Orta Daha dengeli
Kullanım yaygınlığı Çok yaygın Daha özel durumlarda tercih edilir

Ne Zaman Scharr Kullanılır?

  • 3×3 çekirdek ile çalışılıyorsa
  • Daha hassas gradyan hesabı isteniyorsa
  • Özellikle diyagonal kenarlarda Sobel’in yetersiz kaldığı düşünülüyorsa

Pratik yaklaşım: Çoğu durumda önce Sobel ile başlanır. Daha dengeli ve hassas bir gradyan hesabı gerektiğinde Scharr iyi bir alternatiftir.

OpenCV’de Kullanımı: OpenCV, Scharr için özel bir fonksiyona sahiptir: cv2.Scharr(). Tıpkı cv2.Sobel() gibi kullanılır.

scharr_x = cv2.Scharr(image, cv2.CV_64F, 1, 0)
scharr_y = cv2.Scharr(image, cv2.CV_64F, 0, 1)

Roberts Cross Operatörü

Roberts Cross operatörü, kenar tespiti için kullanılan en eski gradyan tabanlı yöntemlerden biridir.

  • Çok küçük boyutlu 2×2 çekirdekler kullanır
  • Hesaplaması hızlı ve yapısı basittir
  • Yoğunluk değişimini çapraz yönlerde ölçer

Temel Fikir

Roberts operatörü, komşu pikseller arasındaki farkı iki çapraz doğrultuda hesaplar:

  • birinci çapraz: sol üst ↔︎ sağ alt
  • ikinci çapraz: sağ üst ↔︎ sol alt

Böylece görüntüdeki ani yoğunluk değişimleri belirgin hâle gelir.

Roberts Çekirdekleri

Birinci çapraz yön

\[ G_1 = \begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix} \]

İkinci çapraz yön

\[ G_2 = \begin{bmatrix} 0 & 1 \\ -1 & 0 \end{bmatrix} \]

Bu çekirdekler klasik Sobel veya Prewitt gibi yatay-dikey değil, çapraz yönlü fark üretir.

Gradyan Hesabı

Roberts operatöründe toplam kenar gücü genellikle şu şekilde hesaplanır:

\[ G = \sqrt{G_1^2 + G_2^2} \]

Pratikte daha hızlı bir yaklaşık hesap da kullanılabilir:

\[ G \approx |G_1| + |G_2| \]

  • \(G_1\): sol üst ile sağ alt arasındaki farkı ölçer
  • \(G_2\): sağ üst ile sol alt arasındaki farkı ölçer

Gradyan değeri büyüdükçe, o bölgede yoğunluk değişimi daha belirgin demektir.

Avantajları ve Dezavantajları

Özellik Açıklama
Basitlik 2×2 çekirdek yapısı sayesinde uygulanması çok kolaydır
Hız Az sayıda işlem gerektirir
Ani değişimlere tepki Keskin geçişlerde hızlı yanıt verebilir
Gürültüye duyarlılık Çok küçük komşuluk kullandığı için gürültüden kolay etkilenir
Kararlılık Daha büyük çekirdekli yöntemlere göre daha az dengeli sonuç verebilir

Ne Zaman Kullanılır?

Roberts Cross operatörü günümüzde çoğu zaman tek başına tercih edilmez.
Buna rağmen şu durumlarda anlamlı olabilir:

  • Eğitim amaçlı anlatımlarda
  • Çok hafif ve basit sistemlerde
  • Hesaplama maliyetinin kritik olduğu uygulamalarda

Modern uygulamalarda genellikle Sobel, Scharr veya Canny gibi yöntemler daha yaygın tercih edilir.

Görsel Etkisi

  • Çapraz doğrultudaki değişimlere duyarlıdır
  • Keskin köşe ve ani geçişlerde belirgin tepki üretebilir
  • Ancak gürültü varsa yalancı kenarlar da kolayca oluşabilir

Bu nedenle Roberts operatöründen önce yumuşatma (örneğin Gaussian blur) uygulanması çoğu zaman faydalıdır.

Roberts Örnek Uygulama

Laplacian Operatörü: Farklı Bir Yaklaşım

Şimdiye kadar gördüğümüz operatörler (Sobel, Scharr vb.) görüntünün birinci türevine dayanıyordu.
Bu operatörler, yoğunluğun en hızlı değiştiği bölgeleri bulmaya çalışır.

Laplacian operatörü ise ikinci türevi kullanır.

  • Temel fikir: Kenar çevresinde yoğunluk değişimi hızlanır, sonra yavaşlar.
  • Bu davranış, ikinci türevde çoğu zaman bir sıfır geçişi (zero-crossing) üretir.
  • Avantajı: Yön bağımsızdır; tek bir çekirdek ile tüm yönlerdeki değişimlere tepki verebilir.

Neden İkinci Türev?

Bir kenarı 1 boyutlu bir sinyal gibi düşünelim:

  1. Yoğunluk sinyali
    • Değerler düşükten yükseğe geçer.
  2. 1. türev
    • Kenar bölgesinde bir tepe değeri üretir.
  3. 2. türev
    • İşaret değiştirir ve sıfırdan geçer.

Laplacian çıktısındaki büyük değerler tek başına yeterli değildir; asıl önemli bilgi çoğu zaman işaret değişimidir.

Sıfır Geçişi (Zero-Crossing)

Bir bölgede Laplacian çıktısı:

  • bir tarafta pozitif
  • diğer tarafta negatif

ise, arada bir sıfır geçişi vardır.
Bu geçiş, çoğu durumda bir kenarın bulunduğu bölgeyi işaret eder.

Laplacian Çekirdekleri

İkinci türevi yaklaşık hesaplamak için yaygın olarak şu çekirdekler kullanılır:

4-komşulu Laplacian

\[ K = \begin{bmatrix} 0 & 1 & 0 \\ 1 & -4 & 1 \\ 0 & 1 & 0 \end{bmatrix} \]

8-komşulu Laplacian

\[ K = \begin{bmatrix} 1 & 1 & 1 \\ 1 & -8 & 1 \\ 1 & 1 & 1 \end{bmatrix} \]

Dikkat: Bu çekirdeklerin eleman toplamı sıfırdır. Bu, sabit yoğunluklu bölgelerde tepkinin sıfır olmasına yardımcı olur.

Laplacian’ın Özellikleri

Özellik Açıklama
Türev türü 2. türev tabanlıdır
Yön bilgisi Yön vermez, yön bağımsız tepki üretir
Kenar tespiti Çoğu zaman zero-crossing ile yorumlanır
Gürültüye duyarlılık Çok yüksektir
Hesaplama maliyeti Düşüktür

Laplacian’ın Zayıf Yönü

Problem:
İkinci türev, gürültüye karşı çok hassastır.
Görüntüdeki küçük dalgalanmalar bile güçlü tepkiler üretebilir.

Bu nedenle Laplacian, çoğu zaman doğrudan ham görüntüye uygulanmaz.

Çözüm: Laplacian of Gaussian (LoG)

Daha güvenilir sonuç almak için önce görüntü yumuşatılır, sonra Laplacian uygulanır.

İş akışı

  1. Gaussian filtre ile görüntüyü yumuşat
  2. Laplacian uygula
  3. Sıfır geçişlerini inceleyerek kenarları belirle

Bu yaklaşıma Laplacian of Gaussian (LoG) denir.

Özet fikir: Önce gürültüyü bastır, sonra ikinci türev uygula.

Neden LoG Kullanılır?

  • Gürültünün etkisini azaltır
  • Laplacian’ın aşırı hassasiyetini dengeler
  • Daha kararlı sıfır geçişleri elde edilmesini sağlar

Bu nedenle LoG, Laplacian’ın pratikte daha kullanışlı hâle getirilmiş biçimi olarak düşünülebilir.

Karşılaştırma

Yöntem Temel yaklaşım
Sobel / Scharr 1. türev ile gradyan büyüklüğünü ölçer
Laplacian 2. türev ile işaret değişimini inceler
LoG Önce yumuşatır, sonra Laplacian uygular

Canny ile LoG aynı yöntem değildir; ancak ikisi de kenar tespitinden önce gürültüyü azaltma fikrini paylaşır.

Canny Kenar Algılama

Canny, çok adımlı ve gürültüye karşı daha dayanıklı bir kenar algılama yöntemidir.

  • 1986 yılında John F. Canny tarafından geliştirilmiştir
  • Amaç, yalnızca kenarları bulmak değil; onları doğru, ince ve tutarlı biçimde elde etmektir

Canny’nin Amaçları

Canny yöntemi üç temel hedefe göre tasarlanmıştır:

  1. İyi kenar tespiti
    • Gerçek kenarlar bulunmalı, yalancı kenarlar azaltılmalıdır.
  2. İyi konumlama (localization)
    • Bulunan kenarın yeri gerçek kenara yakın olmalıdır.
  3. Tek yanıt
    • Aynı kenar için birden fazla tepki oluşmamalıdır.

Canny’nin Felsefesi

Sobel gibi temel operatörler, kenar olabilecek birçok bölgeyi ortaya çıkarır; ancak sonuçlar çoğu zaman: kalın, gürültülü ve dağınık olabilir.

Canny ise bu adayları işleyerek daha temiz bir kenar haritası üretir:

  1. Önce gürültüyü azaltır
  2. Sonra kenarın en güçlü hattını seçer
  3. Son olarak zayıf ama bağlantılı kenarları korur

Yani Canny, yalnızca “değişimi bulmaz”; bu değişimin gerçekten anlamlı bir kenar olup olmadığını da değerlendirir.

Adım 1: Gürültü Giderme

İlk aşamada görüntü yumuşatılır.

  • Amaç: Gürültünün türev hesabını bozmasını önlemek
  • İşlem: Genellikle Gaussian blur uygulanır

Bu adım, küçük ve anlamsız dalgalanmaların güçlü kenar gibi görünmesini azaltır.

Adım 2: Gradyan Hesabı

Yumuşatılmış görüntü üzerinde gradyan hesaplanır.

  • Genellikle Sobel operatörleri kullanılır
  • Her piksel için iki bilgi elde edilir:
    • Gradyan büyüklüğü → kenarın gücü
    • Gradyan yönü → değişimin en güçlü olduğu yön

Gradyan yönü, genellikle kenara diktir.

Adım 3: Non-Maximum Suppression

Bu adımın amacı, kalın kenar bantlarını ince ve keskin çizgilere dönüştürmektir.

  • Her piksel, gradyan yönündeki komşularıyla karşılaştırılır
  • Eğer bulunduğu doğrultuda yerel maksimum değilse silinir

Böylece yalnızca kenarın en güçlü hattı korunur.

Sonuç: Kalın kenarlar yerine yaklaşık 1 piksellik ince kenarlar elde edilir.

Adım 4: Double Thresholding

Bu aşamada iki eşik değeri kullanılır:

  • Yüksek eşik üzerindeki pikseller → güçlü kenar
  • Düşük eşik ile yüksek eşik arasındakiler → zayıf kenar adayı
  • Düşük eşik altındakiler → silinir

Bu yaklaşım, tek eşik kullanımına göre daha esnektir.

Adım 5: Hysteresis

Son aşamada zayıf kenarlar değerlendirilir:

  • Eğer bir zayıf kenar, güçlü bir kenara bağlıysa korunur
  • Bağlantısızsa gürültü kabul edilip silinir

Bu sayede:

  • kopuk ama anlamlı kenar parçaları korunur
  • tek başına duran yalancı tepkiler elenir

Görsel Akış

flowchart LR
  A[Gaussian Blur] --> B[Gradyan Hesabı - Sobel]
  B --> C[Non-Maximum Suppression]
  C --> D[Double Thresholding]
  D --> E[Hysteresis]
  E --> F[Kenar Haritası]

Kod Örneği

Özet

Bu derste ne öğrendik?

  • Kenarların, görüntüdeki en zengin bilgi kaynağı olduğunu.
  • Sobel gibi basit operatörlerin gradyan hesaplayarak nasıl çalıştığını.
  • Canny’nin; gürültü azaltma, inceltme ve akıllı eşikleme gibi adımlarla neden endüstri standardı olduğunu.