Arka plan temizleme (background removal) işlemi, resimlerden arka planı kaldırarak ön planı ayırmak için kullanılan bir işlemdir. Bu işlem, resimlerin daha fazla kullanılabileceği bir şekilde düzenlenir.
Girdi Görselleri
Aşağıdaki resimler, projelerinizde görsel girdi olarak kullanabileceğiniz, eğitim setlerinize ekleyebileceğiniz veya sadece duvar kağıdı yapabileceğiniz yüksek kaliteli karelerdir.
Savaş Uçakları (War Planes)
Savaş uçakları, yüksek manevra kabiliyetleri ve keskin hatları nedeniyle nesne tespiti (object detection) algoritmalarını test etmek için mükemmeldir.
Yolcu Uçakları (Passenger Planes)
Ticari havacılığın devleri… Gökyüzüyle buluşma anları.
İş Jetleri (Business Jets)
Lüks ve hızın sembolü.
OpenCV ile Arka Plan Temizleme (Background Removal)
Yukarıdaki gibi karmaşık arka plana sahip uçak resimlerinden, sadece uçağı ayırıp almak (segmentation) istiyorsanız, OpenCV’nin GrabCut algoritması oldukça etkilidir.
Basit bir threshold (eşikleme) işlemi, karmaşık gökyüzü veya pist arka planlarında her zaman işe yaramaz. GrabCut, işaretlediğiniz bir dikdörtgen içindeki ön planı ve arka planı iteratif olarak ayırır.
Python Kodu ile Uygulama
Aşağıdaki kod bloğu, bir resimdeki uçağı arka plandan ayırmak için kullanabileceğiniz temel bir örnektir.
import numpy as np
import cv2
from matplotlib import pyplot as plt
# 1. Resmi Yükle
img = cv2.imread('ucak.jpg')
mask = np.zeros(img.shape[:2], np.uint8)
# 2. Algoritma için gerekli geçici matrisleri oluştur
bgdModel = np.zeros((1,65), np.float64)
fgdModel = np.zeros((1,65), np.float64)
# 3. Dikdörtgeni Belirle (rect = (startX, startY, width, height))
# Not: Bu değerleri resminize göre ayarlamalısınız. Uçağı içine alan bir kare çizin.
rect = (50, 50, 450, 290)
# 4. GrabCut Algoritmasını Çalıştır (5 iterasyon)
cv2.grabCut(img, mask, rect, bgdModel, fgdModel, 5, cv2.GC_INIT_WITH_RECT)
# 5. Maskeyi Düzenle (0 ve 2 arka plan, 1 ve 3 ön plan kabul edilir)
mask2 = np.where((mask==2)|(mask==0), 0, 1).astype('uint8')
# 6. Orijinal resimle maskeyi çarp (Arka planı siyah yap)
img = img * mask2[:,:,np.newaxis]
# Sonucu Göster
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()
Kod Nasıl Çalışıyor?
- Rect (Dikdörtgen): Algoritmaya “Bak, nesnem (uçak) kabaca bu karenin içinde, gerisi kesinlikle arka plan” diyoruz.
- İterasyon: Algoritma renk dağılımını analiz ederek o kare içindeki piksellerin hangisinin uçağa, hangisinin gökyüzüne ait olduğunu tahmin eder.
- Maskeleme: Sonuçta bize bir maske (siyah-beyaz harita) verir. Bu maskeyi orijinal resimle çarptığımızda arka plan yok olur.
Bu yöntemle, galerideki uçak resimlerini alıp kendi veri setinizi oluşturabilir veya yapay zeka projelerinizde kullanmak üzere temizleyebilirsiniz.