Giriş
Görüntü işleme, günümüz teknolojisinde önemli bir yere sahiptir. Özellikle makine öğrenimi ve derin öğrenmede görüntü verilerinin kullanımı, model performansını artırmak için çeşitli veri manipülasyonları gerektirir. Bu bağlamda, görüntülere gürültü eklemek, veri setlerini zenginleştirmenin ve modelin genel performansını artırmanın etkili bir yoludur. Bu yazıda, Python kullanarak görüntülere tuz ve biber gürültüsü eklemeyi adım adım inceleyeceğiz.
Tuz ve biber gürültüsü, görüntü üzerinde rastgele siyah ve beyaz noktalar şeklinde ortaya çıkar. Bu tür gürültüler, modelin dayanıklılığını artırmak için eğitim setine eklenebilir. Modern bilgisayarlarda görüntü işlemeye yönelik birçok kütüphane bulunmaktadır, bu yazıda en popüler olanlardan biri olan NumPy ve OpenCV’yi kullanarak bu işlemi gerçekleştireceğiz.
Bu özgün yaklaşım, hem yeni başlayan yazılımcılar hem de deneyimli mühendisler için yararlı olabilir. Projeniz için nasıl yol alabileceğinizi göstermekle birlikte, uygulamalı örnekler üzerinden ilerleyeceğiz.
Gerekli Kütüphanelerin Kurulumu
İlk olarak, Python ortamınızı kurmanız gerekmektedir. Görüntü işleme için kullanacağımız kütüphaneler şunlardır: NumPy ve OpenCV. Eğer bu kütüphaneler yüklü değilse, terminal veya komut istemcisi üzerinden aşağıdaki pip komutlarını kullanarak kurabilirsiniz:
pip install numpy opencv-python
Kurulum tamamlandıktan sonra, Python ortamımıza geçiş yaparak görüntü dosyalarımızı yükleme işlemiyle başlayabiliriz. Görüntü işleme algoritmalarında, görsel veriyi işlemek için öncelikle dosyayı yüklememiz gerekiyor. OpenCV kullanarak resim dosyamızı yüklemek için şu şekilde bir kod yazacağız:
import cv2
image = cv2.imread('gorsel.jpg')
Yukarıdaki kod, ‘gorsel.jpg’ dosyasını ‘image’ değişkenine yükleyecektir. Şimdi bir adım daha ilerleyerek oluşturduğumuz bu görüntü üzerinde tuz ve biber gürültüsü eklemeye geçebiliriz.
Tuz ve Biber Gürültüsü Eklemek
Tuz ve biber gürültüsü ekleyebilmek için öncelikle gürültü eklemek istediğimiz görüntünün boyutlarını belirlememiz gerekiyor. Ardından, rastgele noktalara siyah ve beyaz noktalar yerleştirerek gürültümüzü oluşturabiliriz. Aşağıda, bu için kullanılabilecek bir fonksiyon bulabilirsiniz:
import numpy as np
def add_salt_and_pepper_noise(image, salt_prob, pepper_prob):
noisy_image = np.copy(image)
total_pixels = image.size
salt_pearls = np.ceil(salt_prob * total_pixels)
pepper_pearls = np.ceil(pepper_prob * total_pixels)
# Tuz ekleme
coords = [np.random.randint(0, i - 1, int(salt_pearls)) for i in image.shape]
noisy_image[coords[0], coords[1], :] = 255 # Tuzun rengini beyaz yapıyoruz
# Biber ekleme
coords = [np.random.randint(0, i - 1, int(pepper_pearls)) for i in image.shape]
noisy_image[coords[0], coords[1], :] = 0 # Biberin rengini siyah yapıyoruz
return noisy_image
Bu fonksiyon, görüntü üzerine tuz ve biber gürültüsü eklemek için kullanılacaktır. ‘salt_prob’ ile tuzun, ‘pepper_prob’ ile biberin görüntüdeki olasılığını belirleyebilirsiniz.
Kullanmak için, ‘add_salt_and_pepper_noise’ fonksiyonunu şöyle çağırabilirsiniz:
noisy_image = add_salt_and_pepper_noise(image, 0.01, 0.01)
Bu örnekte, her bir pikselin %1’inin tuz ve biber gürültüsü olarak değişeceğini belirliyoruz.
Gürültüyü Görselleştirme
Artık, eklediğimiz tuz ve biber gürültüsünü görselleştirme zamanı. OpenCV kütüphanesi ile bu görüntüleri kolayca gösterebiliriz. Aşağıdaki kod ile hem orijinal hem de gürültülü görüntüyü göstermeyi sağlayabiliriz:
cv2.imshow('Original Image', image)
cv2.imshow('Noisy Image', noisy_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Yukarıdaki kod, iki farklı pencere açacak ve orijinal görüntüyü ile gürültü eklenmiş görüntüyü karşılaştırmanıza olanak tanıyacaktır. İşlemin ardından pencereleri kapatmak için bir tuşa basmanızı bekleyecektir.
Bu aşamada, görüntü üzerinde gürültü eklerken deney yapmaya da açık olmalısınız. Farklı tuz ve biber oranları deneyerek hangi durumların en iyi sonucu verdiğini görün.
Uygulama ve Deneyler
Öğrendiklerimizi uyguladıktan sonra, kendi projelerinizde tuz ve biber gürültüsü eklemeyi deneyebilirsiniz. Örneğin, sayfanın altında belirttiğim gibi çeşitli resim setleri kullanarak, eklediğiniz gürültü oranlarını farklılaştırarak modelinizi test edebilirsiniz. Sadece görüntü işleme ile kalmayıp, derin öğrenme modellerinize bu veri setlerini besleyerek modelinizin robustluğunu artırmayı deneyebilirsiniz.
Uygulamalarınızı yaparken karşılaşabileceğiniz sorunları çözmek için hata ayıklama yapmayı unutmayın. Geri bildirim ve gözlemler ile projenizi daha da geliştirebilirsiniz. Bu noktada, gürültü eklemenin model performansındaki etkilerini anlamak için eğitim sonuçlarını dikkatlice incelemelisiniz.
Görselleştirme olanaklarını genişletmek için Matplotlib gibi kütüphaneleri de kullanarak sonuçlarınızı daha şık bir şekilde sunabilirsiniz. Bu, hem akademik çalışmalarda hem de projelerde önemli bir ayrıntıdır ve izleyicilerinizin dikkatini çekebilir.
Sonuç
Bu yazıda, Python kullanarak görüntülere tuz ve biber gürültüsü eklemeyi detaylı bir şekilde ele aldık. Görüntü işleme sürecinde bu tür gürültüler ile deney yapmak, veri setinizi zenginleştirir ve makine öğrenimi modellerinin dayanıklılığını artırır.
Gürültü ekleme işleminin yanı sıra, ilgili kütüphaneler ve yöntemler hakkında da bilgi edinmiş olduk. NumPy ve OpenCV’nin sağladığı kolaylıklar sayesinde, görüntülerinizi istediğiniz gibi manipüle edebilirsiniz. Bu tür bir çalışmanın nasıl uygulanacağı ile ilgili tüm adımları takip ederek istediğiniz sonuca ulaşabilirsiniz.
Son olarak, deney yapmaktan çekinmeyin ve yaratıcı projeler üretin. Yazı ile ilgili sorularınızı ve geri bildirimlerinizi benimle paylaşmayı unutmayın. Herhangi bir ek sorunuz varsa, teknik konularda yardımcı olmaktan büyük mutluluk duyarım.