Python ile Görüntü İşleme: Adım Adım Rehber

Giriş: Görüntü İşlemenin Önemi

Görüntü işleme, dijital görüntüleri analiz etmek, işlemek ve iyileştirmek için kullanılan bir teknoloji dalıdır. Günümüzde birçok alanda, özellikle sağlık, güvenlik, otomasyon, tarım ve eğlence sektörlerinde geniş bir uygulama yelpazesi bulunmaktadır. Python, basit sözdizimi ve zengin kütüphane desteği ile görüntü işleme projeleri için ideal bir programlama dili haline gelmiştir. Bu yazıda, Python ile görüntü işlemenin temellerini öğrenip, uygulamalı örneklerle olayı derinlemesine inceleyeceğiz.

Görüntü işleme ile ilgili temel adımları ayrıntılı bir şekilde ele alacak ve popüler kütüphaneler olan OpenCV ve Pillow (PIL) gibi araçları kullanarak pratik uygulamalar yapacağız. Eğer bu alana ilgi duyuyorsanız, Python ile görüntü işlemenin sizin için yeni bir kapı açacağını göreceksiniz.

İlk bölümde, görüntü işleme kavramını tanımlayarak başlayacağız ve ardından Python’un bu alandaki rolünü inceleyeceğiz. Uygulama yapabilmek için gerekli olan araçları ve bağımlılıkları yükleyerek yolculuğumuza başlayacağız.

Python’da Gerekli Kütüphaneleri Kurma

Python ile görüntü işleme yapmanın ilk adımı gerekli kütüphaneleri kurmaktır. OpenCV ve Pillow, başlangıç için en çok tercih edilen kütüphanelerdir. Bu kütüphaneler, görüntüleri yükleme, görüntü işleme uygulamaları geliştirme ve çeşitli filtreler ve dönüşümler gerçekleştirme konusunda olanak sağlar.

Gerekli kütüphaneleri kurmak için öncelikle Python’un en son sürümünü sisteminize yüklemelisiniz. Ardından, terminal veya komut istemcisi aracılığıyla aşağıdaki komutları çalıştırarak kütüphaneleri kurulabilirsiniz:

pip install opencv-python
pip install Pillow

Kurulum işlemi tamamlandığında, bu kütüphaneleri projelerinizde kullanmaya hazır hale gelmiş olacaksınız. Bu bölümde OpenCV ile görsel işlemeye yönelik temel uygulamalara geçmeden önce, kurulum sürecinin sorunsuz geçtiğinden emin olun.

OpenCV ile Görüntü Yükleme ve Gösterme

OpenCV kütüphanesiyle görüntü yüklemek ve görüntülemek oldukça basit bir işlemdir. Bir görüntüyü yüklemek için cv2.imread() fonksiyonu, görüntüyü göstermek için ise cv2.imshow() fonksiyonu kullanılır. Aşağıda, basit bir görüntü yükleme işleminin nasıl yapılacağını gösteren bir örnek bulunmaktadır:

import cv2

# Görüntüyü yükle
img = cv2.imread('görüntü.jpg')

# Görüntüyü göster
cv2.imshow('Görüntü', img) 
cv2.waitKey(0)
cv2.destroyAllWindows()

Yukarıdaki örnekte, önce görüntü dosyasının yolu verilerek cv2.imread() fonksiyonu ile yüklenir. Ardından, cv2.imshow() ile görüntü, ‘Görüntü’ adı altında bir pencere içerisinde gösterilir. cv2.waitKey(0) fonksiyonu, herhangi bir tuşa basılana kadar görüntüyü açık tutar ve en son olarak cv2.destroyAllWindows() ile tüm pencereler kapatılır.

Görüntüleri yükledikten sonra, üzerinde çalışmaya başlayabileceğiniz çeşitli görsel işleme tekniklerine adım atabiliriz.

Görüntü Üzerinde Temel İşlemler

Kütüphanemizi kurup, görüntüyü yüklemeyi öğrendikten sonra, görüntü üzerinde temel işlemlere göz atalım. Bunlar arasında yeniden boyutlandırma, dönüşüm, kesme ve filtreleme gibi işlemler bulunmaktadır. İlk olarak, görüntünün boyutunu değiştirmek üzerine bir örnek yapalım:

# Boyutları belirleme
width = 300
height = 200

# Görüntüyü yeniden boyutlandırma
resized_img = cv2.resize(img, (width, height)) 

# Yeniden boyutlandırılmış görüntüyü gösterme
cv2.imshow('Yeniden Boyutlandırılmış Görüntü', resized_img)
cv2.waitKey(0)

Bu örnekte, umduğumuz boyutları ayarlayarak cv2.resize() fonksiyonu ile görüntüyü yeniden boyutlandırdık. Görüntüyü göstermek için kullandığımız yöntem yine aynı şekilde devam etmektedir.

Daha sonra, görüntünün belirli bir alanını kesmek istememiz durumunda numpy dilimleme işlemlerinden yararlanabiliriz:

Bu kesme işlemi, görüntüdeki belirli piksel aralıklarını alarak yeni bir görüntü oluşturur. Böylelikle ihtiyacınız olan alanı kolaylıkla ayıklayabilirsiniz.

Görüntü Filtreleme İşlemleri

Görüntü işleme alanının bir diğer önemli yönü de görüntü filtreleme süreçleridir. Filtreleme, görüntülerdeki gürültüyü gidermek, renkleri düzeltmek veya belirli efektler oluşturmak için sıkça kullanılır. OpenCV, çeşitli filtreleme yöntemleri sunmaktadır, bunlardan biri de Gauss filtrelemesidir. Gauss filtresi, bir görüntüdeki gürültüyü azaltmak için etkili bir yöntemdir:

filtered_img = cv2.GaussianBlur(img, (5, 5), 0)

# Filtrelenmiş görüntüyü gösterme
cv2.imshow('Filtrelenmiş Görüntü', filtered_img)
cv2.waitKey(0)

Yukarıdaki kod, belirtilen boyutlarda bir Gauss filtresi uygulayarak görüntüyü filtreler. Farklı boyutlarda filtreler deneyerek, görsel çıktılara göre optimizasyonlar yapabilirsiniz.

Ayrıca, kenar bulma işlemi için Canny algoritması da kullanabiliriz. Bu işlem, görüntüdeki kenarları algılayarak belirli şekilleri ve nesneleri tanımlamaya yardımcı olur:

edges = cv2.Canny(img, 100, 200)

# Kenar algılama sonucunu gösterme
cv2.imshow('Kenar Algılama', edges)
cv2.waitKey(0)

Canny kenar algılama işlemi, iki eşik değeri alır ve bu değerler yardımıyla görüntüdeki nesne kenarlarını belirginleştirir. Görüntü işlemedeki bu tür teknikler, projelerinizde daha fazla netlik ve detay sağlayacaktır.

Pillow Kütüphanesi ile Görüntü İşleme

Bu bölümde, görüntü işleme uygulamalarında kullanılan bir diğer popüler kütüphane olan Pillow’u keşfedeceğiz. Pillow, özellikle görüntü formatlarını dönüştürmek, görüntüleme yapmak ve basit işlemler gerçekleştirmek için oldukça kullanışlıdır. Aşağıda Pillow ile görüntü yükleme ve gösterme işlemi örneğini inceleyelim:

from PIL import Image

# Görüntüyü yükle
img = Image.open('görüntü.jpg')

# Görüntüyü göster
img.show()

Pillow kütüphanesi, görüntüyü yüklemek için Image.open() metodunu kullanır. Yüklenen görüntüyü göstermek için ise show() fonksiyonu oldukça basittir.

Pillow ile görüntü üzerinde bazı temel işlemler gerçekleştirebiliriz. Örneğin, bir görüntünün boyutunu ayarlamak için:

# Görüntü boyutunu ayarlama
resized_img = img.resize((300, 200))

# Yeniden boyutlandırılmış görüntüyü gösterme
resized_img.show()

Bu örnekte, resize() fonksiyonu ile görüntünün boyutları değiştirilmiştir. Böylelikle her iki kütüphaneyi de kullanarak görüntü işleme yeteneklerimizi artırmış oluyoruz.

Gelişmiş Görüntü İşleme Yöntemleri

Basit görüntü işleme adımlarını tamamladıktan sonra, daha karmaşık işlemlere geçmeliyiz. Örneğin, görüntüleri birbiriyle birleştirmek veya farklı görüntü türleri arasında dönüşümler yapmak sıkça karşılaşılan işlemlerdir. OpenCV ile görüntü birleştirmek için cv2.add() fonksiyonu kullanılabilir:

img1 = cv2.imread('görüntü1.jpg')
img2 = cv2.imread('görüntü2.jpg')

# İki görüntüyü birleştirme
combined_img = cv2.add(img1, img2)

# Birleştirilmiş görüntüyü gösterme
cv2.imshow('Birleştirilmiş Görüntü', combined_img)
cv2.waitKey(0)

Yukarıdaki örnekteki gibi, iki görüntüyü toplamak için cv2.add() fonksiyonu kullanılarak birleşik bir görüntü oluşturabiliriz.

Buna ek olarak, görüntü dönüşümleri de önemli bir işlemdir. Özellikle, RGB görüntülerini gri tonlama görüntülerine çevirme işlemi sıklıkla kullanılmaktadır:

gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Gri tonlama görüntüsünü gösterme
cv2.imshow('Gri Tonlama Görüntü', gray_img)
cv2.waitKey(0)

Görüntüyü gri tonlar halinde dönüştürmek için cv2.cvtColor() fonksiyonunu kullanıyoruz. Farklı renk dönüşüm yöntemlerine ilişkin daha fazla bilgi edinmek, projelerinizde esneklik sağlamanıza yardımcı olacaktır.

Proje Örnekleri

Python ile görüntü işleme öğrenirken, uygulamalı projeler geliştirerek öğrendiklerinizi pekiştirmek oldukça faydalı olacaktır. Örneğin, bir yüz tanıma uygulaması yaparak OpenCV’nin özelliklerini deneyimleyebilirsiniz. Bu tür projeler, hem teorik bilgilerinizi uygulamanızı sağlar hem de problem çözme yeteneğinizi geliştirir.

Bir başka proje fikri ise, basit bir fotoğraf düzenleme uygulaması geliştirmektir. Kullanıcının yüklediği fotoğrafa çeşitli filtreler eklemek, boyutlandırma veya kesme işlemleri yapmak gibi özellikler sunabilirsiniz. Bu tür uygulamalar, gereksinim duyulan kişisel ihtiyaçları karşılamanın yanı sıra programlama becerilerini de artırır.

Her proje uygulamanızda karşılaşabileceğiniz problemler, aynı zamanda yeni şeyler öğrenmenize de olanak tanır. Geliştirdiğiniz her uygulama ile birlikte, daha karmaşık yapıları anlamak ve yönetmek adına deneyim kazanmış olacaksınız.

Sonuç: Görüntü İşleme Yolculuğunuz

Python ile görüntü işleme konusunu derinlemesine incelediğimiz bu yazıda, temel kavramlardan başlayarak ileri düzey tekniklere kadar birçok konuyu ele aldık. OpenCV ve Pillow gibi kütüphanelerle yapılabilecek işlemleri ve görüntü işleme süreçlerini gözler önüne serdik. Bu alanda daha derinlemesine uzmanlaşmak için, sürekli olarak projeler geliştirmeye devam etmeniz önerilir.

Her yeni uygulama, size hem bilgi hem de deneyim katacak ve öğrenme sürecinizi hızlandıracaktır. Unutmayın ki görüntü işleme, yalnızca algoritmaların değil, aynı zamanda yaratıcılığınızın da sınandığı bir alandır.

Şimdi, öğrendiklerinizi uygulamak ve farklı projeler geliştirmek için harekete geçme vaktidir. Python ile görüntü işleme yolculuğunuzda bol şans! Herhangi bir sorunuz veya destek ihtiyacınız olursa, topluluk ile etkileşimde bulunarak sorularınızı sorabilirsiniz.

Scroll to Top