Görüntü İşleme ile Python’da Başlangıç Rehberi

Görüntü İşleme Nedir?

Görüntü işleme, dijital görüntülerin çeşitli şekillerde analiz edilmesi, dönüşmesi ve iyileştirilmesi süreçlerini kapsayan önemli bir alan olarak karşımıza çıkıyor. Fotoğraflar, videolar ve diğer görüntü türleri üzerinde yapılan işlemler, bu alanda kullanım senaryolarını çeşitlendiriyor. Örneğin, görüntü iyileştirme, nesne tanıma, yüz tanıma ve tıbbi görüntü analizi gibi birçok farklı uygulama bulunmakta.

Python, görüntü işleme görevlerini yerine getirmek için oldukça popüler bir dil haline gelmiştir. Bunun başlıca sebepleri arasında kullanıcı dostu bir sözdizime sahip olması, geniş bir kütüphane ekosistemine sahip olması ve büyük bir topluluk destek ağına sahip olması yer alıyor. Özellikle OpenCV, scikit-image ve PIL gibi kütüphaneler, görüntü işleme projelerinde sıklıkla tercih edilmektedir.

Bu yazıda, Python ile görüntü işlemenin temellerini ve yaygın yöntemlerini inceleyeceğiz. Bu süreç boyunca basit örneklerle, uygulamalı bir şekilde konuyu açıklayacak ve kendi projelerinizde gerçekleştirebileceğiniz bazı temel adımları göstereceğiz.

Python ile Görüntü İşlemeye Başlamak

İlk olarak, görüntü işleme projeleri için gerekli olan kütüphaneleri yükleyerek başlayacağız. Bunun için terminal veya komut istemcisini açarak aşağıdaki oturum açma kodlarını çalıştırmanız yeterli:

pip install opencv-python numpy matplotlib

Buna ek olarak, PIL (Python Imaging Library) ya da güncellenmiş sürümü olan Pillow kütüphanesini de yüklemeniz önerilir:

pip install Pillow

Bu kütüphaneleri yükledikten sonra, adım adım basit görüntü işleme tekniklerini denemeye başlayacağız. İlk örneğimizde, bir görüntüyü nasıl yükleyeceğimizi ve görüntü üzerinde temel işlemleri nasıl gerçekleştireceğimizi öğreneceğiz. Aşağıdaki kod örneği, bir görüntü dosyasını nasıl yükleyeceğinizi ve bunu nasıl görüntüleyeceğinizi göstermektedir:

import cv2
from matplotlib import pyplot as plt

# Görüntüyü yükle
image = cv2.imread('ornek.jpg')
# BGR formatından RGB formatına çevir
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# Görüntüyü göster
plt.imshow(image)
plt.axis('off')
plt.show()

Bu kod parçası, OpenCV kütüphanesi kullanarak bir görüntüyü yükler ve matplotlib kütüphanesiyle görüntülemek için dönüştürür. Görüntüyü yükledikten sonra renk formatını değiştirmemiz önemlidir, çünkü OpenCV, görüntüleri BGR (mavi, yeşil, kırmızı) formatında yüklerken matplotlib RGB (kırmızı, yeşil, mavi) formatını kullanır.

Görüntü İyileştirme Teknikleri

Görüntü işleme alanında sıkça kullanılan tekniklerden biri görüntü iyileştirmedir. Görüntü iyileştirme, görüntülerin kalite ve görünümünü artırmayı hedefler. Genellikle, çeşitli filtreler uygulayarak, gürültüyü azaltarak ve kontrastı artırarak yapılmaktadır. Örneğin, aşağıda görüntüyü bulanıklaştırma ve kenarları netleştirme işlemlerinin nasıl gerçekleştirileceğine dair bazı örnekler verilmiştir:

# Görüntüyü bulanıklaştırma
blurred_image = cv2.GaussianBlur(image, (5, 5), 0)

# Kenar tespiti (Canny yöntemi)
edged_image = cv2.Canny(image, 100, 200)

Yukarıdaki kodlarla, Gaussian bulanıklaştırma kullanarak bir görüntüyü bulanıklaştırabilir ve Canny kenar tespiti yöntemiyle görüntüdeki kenarları belirgin hale getirebilirsiniz. Bu tür işlemler, özellikle görüntüdeki nesneleri daha iyi tespit etmek veya analiz etmek için oldukça faydalıdır.

Ayrıca, histogram eşitleme, görüntüdeki detayları ortaya çıkarmak için kullanılabilecek başka bir tekniktir. Aşağıda histogram eşitleme uygulamak için kullanılan bir örnek verilmiştir:

# Gri tonlama
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Histogram eşitleme
equalized_image = cv2.equalizeHist(gray_image)

Bu örnekle, görüntüyü gri tonlamaya çevirip ardından histogram eşitleme uygulayarak görüntü kalitesini artırabilirsiniz. Görüntüdeki daha koyu veya daha parlak alanları daha iyi dengelemek için bu yöntem oldukça etkilidir.

Nesne Tanıma ile Görüntü İşleme

Görüntü işleme projelerinin çoğu, görüntüde bulunan nesneleri tanımak ve sınıflandırmakla ilgilidir. Python’da nesne tanıma görevini yerine getirmek için genellikle makine öğrenimi ve derin öğrenme yöntemleri kullanılır. OpenCV ile Haar özelliği tabanlı sınıflandırıcı gibi yöntemleri kullanarak yüz tanıma uygulamaları geliştirebiliriz.

Aşağıda basit bir yüz tanıma uygulaması için gereken temel adımlar verilmiştir:

# Yüz tanıma için Haar kaskad sınıflandırıcı yükle
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')

# Görüntüyü gri tonlamaya çevir
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Yüzleri tespit et
faces = face_cascade.detectMultiScale(gray_image, scaleFactor=1.1, minNeighbors=5)

Bu kod parçasında yüz tanıma için hazır bir Haar kaskad sınıflandırıcısını yükleyip, görüntüdeki yüzleri tespit edeceğiz. detectMultiScale metodu, görüntüdeki yüzlerin koordinatlarını döndürür. Bu koordinatları kullanarak tespit edilen yüzlerin etrafını çizebiliriz:

for (x, y, w, h) in faces:
    cv2.rectangle(image, (x, y), (x + w, y + h), (255, 0, 0), 2)

Bu şekilde, tespit edilen her yüzün etrafına mavi bir dikdörtgen çizebiliriz. Görüntüyü görüntüledikten sonra yüz tanımanın temel mantığını pratikte görmüş olacağız.

Veri Görselleştirme ve Analiz

Görüntü işleme projelerinde sıklıkla veri analizine ihtiyaç duyulur. Bu aşamada, elde ettiğimiz verilere dayalı olarak grafikler ve görseller oluşturmak faydalı olacaktır. Özellikle matplotlib kütüphanesi, görüntü verilerinin görselleştirilmesi için sıkça kullanılır. Örneğin, bir görüntüdeki piksel dağılımını göstermek için histogramlar oluşturabiliriz:

# Histogram oluşturma
plt.hist(gray_image.ravel(), 256, [0, 256])
plt.title('Gri Ton Histogramı')
plt.show()

Bu örnek, gri tonlamalı bir görüntüyü alarak, piksel değerlerinin dağılımını histogram üzerinde görselleştirir. Bu sayede, görüntüde hangi piksel değerlerinin daha yoğun olduğunu analiz edebiliriz. Görüntü işleme alanında bu gibi görselleştirmeler, projenizin sonuçlarını daha anlamlı hale getirmekte büyük rol oynar.

Ayrıca, görüntü üzerinde işlemden sonra elde ettiğiniz verileri analiz ederek, farklı tekniklerin sonuçlarını karşılaştırma şansınız olur. Örneğin, filtre uyguladıktan sonra görüntünün birçok farklı metrik üzerinden değerlendirilmesi sağlıklı sonuçlar ortaya çıkarabilir.

Sonuç ve İleri Adımlar

Python ile görüntü işleme dünyasına adım atmış olduk. Bu yazıda, görüntü işleme temellerini, çeşitli teknikleri ve uygulamaları anlattık. Kütüphaneleri kullanarak temel görüntü yükleme, iyileştirme, nesne tanıma ve veri görselleştirme işlemlerini gerçekleştirdik. Artık, çeşitli projelerde bu teknikleri kullanabilir, daha ileri seviye yöntemleri keşfedebilirsiniz.

Bundan sonraki adım, daha karmaşık projelere yönelik kaynaklar arayışında olmanın yanı sıra, görüntü işleme tekniklerinizi geliştirip uygulayarak pratik yapmaktır. Aynı zamanda derin öğrenme yöntemleri ve mevcut kütüphanelerden faydalanarak daha gelişmiş projeler geliştirebilirsiniz. Örneğin, TensorFlow veya Keras gibi kütüphaneler ile derin öğrenme ile nesne tanıma projeleri yapabilirsiniz.

Maksimal faydayı sağlamanız için sürekli öğrenmeye ve denemeye açık olmalısınız. Görüntü işleme, her gün gelişen ve genişleyen bir alan olduğu için yenilikleri takip ederseniz, kariyerinizde büyük bir adım atmış olacaksınız. Şimdi, kollarınızı sıvayın ve kendi görüntü işleme projelerinizi oluşturmaya başlayın!

Scroll to Top