Görüntü Normalizasyonu ile Ön İşleme

Biliyorsunuz ki görüntü işleme üzerinde çalışacaksanız mutlaka ön işleme adımlarının kapısını en az bir kere çalmamız gerekiyor. Görüntü işlemenin temel çalışma kaynağı olan görüntüler üzerinde çeşitli morfolojik işlemler uygulanmaktadır. Bu yazımda ufak çaplı bir Matlab projesi ile görüntüde var olan piksel değerlerine erişerek bu piksel değerlerini 0-1 aralığına normalize edeceğiz. Peki bunu nasıl mı yapacağız? Şimdi kollarınızı bağlayarak sırtınızı rahatça koltuğunuza yaslayın ve sadece yazıma odaklanın ✨

Kodlama yaparken modül yapısını anlamak anacıyla hazır fonksiyon kullanmaya karşıyım. Matlab’ da math2gray hazır fonksiyonu ile gerçekleşen bu eylem fonksiyon kullanılmadan yapılacaktır. İşe güzel bir planlama yaparak başlıyoruz.

Yukarıda proje için gerekli kontrol listesi hazırlanmıştır. Sırası ile öncelikle imread( ) ile görüntü elde edilecek ardından fotoğraf işlenmek üzere gri seviyesine dönüştürülecektir. Proje adımlarındaki diğer aşamalar sırası ile gerçekleştirilecektir.

Görüntüyü Elde Etme

İşte en sevdiğim aşamalara başlıyoruz. Projede kullanılacak görüntüyü süper kütleli kara delik olarak seçtim. Bol renkli, bol renk kanallı bir resim olsun ki pikselleri rahat inceleyip normalleştirme sürecine geçebileyim istedim. Tabi bu durum kişiye kalmış, istediğiniz görüntüyü kullanabilirsiniz. Yalnızca ben RGB renk kanalına ait bir görüntü kullandım. Gri seviyeli bir görüntü beni bu konuda pek memnun etmeyecek gibi görünüyor. Daha sonra bu görüntü üzerinde parametreler belirtilerek işlem yapılacaktır.

Normalde kullanılacak görüntünün boyutları işlemler için yüksek geldiğinden dolayı gösterim hata sebebi aşağıda belirtilerek görüntünün kırpılmış halini fonksiyonda işledim.

Matlab’ da görüntüyü elde etme fonksiyonu imread( ) ile aşağıda gösterildiği gibi görüntüyü elde etmiş olduk.

Dikkatli bakıldığında görüntünün piksel değerlerinin 241x323x3 olduğunu göreceksiniz. Buradaki 3 RGB renk kanalının kanal sayısını vermektedir. Bu şekilde görüntünüzün RGB olduğunu kontrol edebilirsiniz. Yukarıdaki görüntüde ise tüm değerleri koyamadığım için piksellerin belirli aralığını görmekteyiz.

Bu şekilde görüntümüzü elde etmiş olduk.

page5image1746896

Yapılacak işlemler gri seviyesinde doğru sonuçlar oluşturacağı için RGB görüntüyü gri seviyesine dönüştürmemiz gerekmektedir. Bu işlemi aşağıdaki kod satırı ile gerçekleştireceğiz.

Normalizasyon uygulanılacak formül aşağıda gösterilmiştir. Bu formülü uygulayarak girilen parametre değerleri arasında piksel değerlerini indirgeyeceğiz.

GÖRÜNTÜNÜN NORMALİZASYONU

Görüntüdeki piksel değerlerinin normalize edilmiş hali virgüllü sonuçlar vereceği için görüntü üzerindeki bu değerler ilk önce double( ) fonksiyonu ile double değerler oluşacak şekilde dönüştürülmelidir. Normalizasyon işlemi için öncelikle bir fonksiyon oluşturacağız ve içerisinde parametre olarak çalıştırılacak görüntüyü ve hangi aralıklar kullanılacağını bildireceğiz.

page6image1911568
Normalizasyon Fonksiyonu

Görüntü üzerinde tüm pikseller teker teker dolaşacağı için 2 adet for döngüsü yapmak yerine doublePikselDegerleri (:) ile tüm pikseller tek satırda içlerine girilerek kontrol edilecektir. Ve kolaylık olması sebebiyle her seferinde yazılmaması için bir değişkene atayacağız.

Normalizasyon formülündeki bölüm işlemi için bir değişkene atama yaparak kolaylık sağlıyoruz. (Xmax-Xmin)

Bölüm Değişkeni Hesaplanması

Formüldeki her piksel değerlerinden minimum bulunan değeri çıkartıp bölüm değişkenine bölerek sonuca ulaşabiliriz. Ayrıca parametre değerlerinin birbirinden çıkartılmasının sebebi o aralıklar arasında değerlere ulaşmak istememizdir. Örneğin 8-10 arasında değerlere ulaşmak istersek aşağıdaki aşamaları takip edelim. Daha sonra normalizeResult değişkeni içerisindeki verileri ise inceleyelim.

8-10 Aralığında Değerler Üretimi
page6image1861584
Örnek Çıktı

Bu projede istenen parametre aralığı 0-1 aralığıdır. Bu sebeple parametreler değiştirilerek aşağıdaki şekilde konfigüre edilmiştir.

Toplamda 241 x 323 satır sonuç çıkmıştır. Yukarıdaki verilerde gördüğünüz gibi verileri 0 ve 1 aralığına çekmiş olduk yani normalleştirdik.

Normalizasyon Fonksiyonu
Görüntü Çıktısı

REFERANSLAR

  1. https://www.mathworks.com/help/images/ref/mat2gray.html
  2. https://www.educba.com/normalization-formula/
  3. https://www.mathworks.com/help/matlab/ref/norm.html
  4. https://ismailari.com/blog/matlab-ile-imge-islemeye-giris/
  5. https://forum.shiftdelete.net/threads/matlabda-resmin-matris-degerini- cikarma.137378/
  6. François Chollet, Python ile DERİN ÖĞRENME, Buzdağı Yayınevi.

Leave a Reply

Your email address will not be published. Required fields are marked *