logo

Python'da OpenCV kullanarak görüntülerin Erozyonu ve Genişlemesi

Morfolojik işlemler, piksellerin yapısına ve düzenine göre görüntüleri değiştirir. Komşu piksellerin düzenine bağlı olarak özelliklerini değiştirmek için bir giriş görüntüsüne çekirdek uygularlar. Erozyon ve genleşme gibi morfolojik işlemler, özellikle ikili veya gri tonlamalı görüntüler için görüntü işlemedeki tekniklerdir. Gürültüyü temizleyen ve nesne sınırlarını hassaslaştıran şekilleri analiz etmeye yardımcı olurlar.

Erozyon

Görüntü işlemede erozyon, nesne kenarlarındaki pikselleri kaldırarak nesneleri etkili bir şekilde küçülterek ve küçük beyaz gürültüyü ortadan kaldırarak bir görüntüdeki nesnelerin sınırlarını küçülten ve incelten morfolojik bir işlemdir.

Amaç

  • Ön plandaki nesnelerin (genellikle beyaz pikseller) sınırlarını daraltır veya aşındırır.
  • İnce beyaz gürültüyü ortadan kaldırır ve dokunan nesneleri ayırır.

Nasıl Çalışır?

  • Bir çekirdek (genellikle 3×3 5×5 veya 7×7 birler matrisi) görüntü boyunca kayar.
  • Bir piksel yalnızca çekirdeğin altındaki tüm pikseller beyaz olduğunda beyaz (1) kalır; aksi halde siyah olur (0).
  • Bu işlem nesne boyutunu küçültür ve kenarları aşındırır.

Dilatasyon

Genişletme, nesne kenarlarına pikseller ekleyerek nesnelerin daha büyük görünmesini ve küçük boşlukları veya delikleri doldurmasını sağlayarak bir görüntüdeki nesnelerin sınırlarını genişleten morfolojik bir işlemdir.



Amaç:

  • Ön plan nesnelerinin sınırlarını genişletir.
  • Özellikleri vurgular veya büyütür ve küçük boşlukları doldurur.

Nasıl Çalışır:

  • Çekirdek, görüntü üzerinde benzer şekilde evrilmiştir.
  • Aşağıdaki durumlarda bir piksel beyaza (1) ayarlanır:  en az bir  çekirdeğin altındaki karşılık gelen piksellerin yüzdesi beyazdır.
  • Sonuç olarak beyaz bölgeler küçük delikleri birleştirerek veya kırık parçaları birleştirerek büyür.

Erozyon ve Dilatasyon Uygulaması

Python'da OpenCV ile Erozyon ve Genişlemeyi uygulayalım

1. Adım: Kitaplıkları İçe Aktarın

Gerekli kütüphaneleri ithal edeceğiz

  • cv2 : Görüntü işleme için OpenCV kütüphanesi.
  • uyuşuk : Sayısal işlemler ve çekirdek oluşturmak için.
  • matplotlib.pyplot : Not defterlerindeki görüntüleri görüntülemek için.

Adım 2: Giriş Görüntüsünü Yükleyin ve Yapısal Öğeleri (Çekirdek) Tanımlayın

Çekirdek, işlemin mahallesini tanımlar. Yaygın seçenekler dikdörtgenler veya disklerdir.

Kullanılan görsel şuradan indirilebilir: Burada .

Python
img = cv2.imread('input.webp' 0) plt.imshow(img cmap='gray') plt.title('Original Image') plt.axis('off') plt.show() kernel = np.ones((5 5) np.uint8) 

Çıkış:

orijinal kedi' title=Orijinal

3. Adım: Erozyon Uygulayın

Erozyon, çekirdeği görüntü boyunca kaydırarak çalışır. Bir piksel yalnızca çekirdeğin altındaki tüm pikseller beyazsa beyaz kalır (255), aksi halde siyah olur (0). Bu, nesne sınırlarını azaltır ve küçük beyaz gürültüyü ortadan kaldırır.

Python
img_erosion = cv2.erode(img kernel iterations=1) plt.imshow(img_erosion cmap='gray') plt.title('After Erosion') plt.axis('off') plt.show() 

Çıkış:

erozyon' loading='lazy' title=Erozyon Sonrası

Adım 4: Dilatasyon Uygulayın

Genişletme, çekirdeği görüntü boyunca kaydırır ve çekirdeğin altındaki en az bir piksel beyazsa piksel beyaz olur. Bu, beyaz bölgeleri veya nesneleri kalınlaştırır ve küçük delikleri doldurur.

Python
img_dilation = cv2.dilate(img kernel iterations=1) plt.imshow(img_dilation cmap='gray') plt.title('After Dilation') plt.axis('off') plt.show() 

Çıkış:

genişleme' loading='lazy' title=Dilatasyon Sonrası

Uygulamalar

Erozyon

  • Bir görüntüden izole edilmiş beyaz gürültünün kaldırılması.
  • Birleştirilen veya birbirine değen nesneleri ayırmak.
  • Nesne boyutunu küçülterek nesne sınırlarını bulma.

Dilatasyon

  • Nesnelerdeki küçük deliklerin veya boşlukların doldurulması.
  • Aynı nesnenin kırık veya bağlantısız parçalarının birleştirilmesi.
  • Erozyondan sonra ("açılma" işleminin bir parçası olarak) gürültüyü ortadan kaldırırken nesne boyutunu eski haline getirmek için kullanılır.

Erozyon ve genişleme, görüntü işlemedeki temel morfolojik işlemlerdir ve görüntülerdeki şekilleri netleştirmemize ve manipüle etmemize olanak tanır. Basit yapılandırma öğelerini kullanarak bu teknikler, gürültüyü ortadan kaldırmaya, nesneleri ayırmaya veya bağlamaya ve görüntü özelliklerini geliştirmeye yardımcı olur; bu da onları OpenCV ve Python ile bilgisayarlı görme görevlerinde etkili ön işleme ve analiz için gerekli araçlar haline getirir.

Test Oluştur