Stronger_Cracker
- 25 Tem 2022
- 6,396 Mesaj
Aktiflik
Seviye
Deneyim
Arkadaşlar Selamun Aleyküm.
Kafamda Python İle "İmge İşleme" konusu için bir seri hazırlamak var fakat öncesinde bilinmesi gereken bir modül olan "NumPy" modülü ile başlamamız gerekiyor.
Bu modüle girmeden önce matematikten aşina olduğumuz "Matris" kavramı nedir ? Ondan bahsedeceğim.
Matematiksel anlamda matris, sayıların satırlar ve sütunlar şeklinde dizilerek oluşturduğu dikdörtgen biçimindeki tablo yapısıdır. Peki bu tablo dediğimiz şey nerede işimize yarıyor ?
Verileri organize etmek ve karmaşık sistemleri daha basit formüllere dökmek için kullanmaktayız.
Matrisin temel yapı ve özelliklerinden bahsedersek;
Bir matris genellikle büyük harflerle(A,B,C) isimlendirilir. Köşeli parantez [] ya da parantez () ile gösterilmektedir.
Satır(Row): Matristeki yatay dizilimleri temsil eder.
Sütun(Column): Matristeki dikey dizilimleri temsil eder.
Satır sayısı m ve sütun sayısı n ise, matris "mxn" boyutunda tanımlanır.
İmge işleme konusunda matrisler olmazsa olmaz yere sahiptirler. Bilgisayarlar için bir resim aslında devasa bir matrisi temsil etmektedir. Her bir hücre(pixel), o noktanın renk ve parlaklık değerini temsil etmektedir. Görüntü işleme filtreleri(bulanıklaştırma,kenar belirleme v.b) bu matris üzerinde yapılan matematiksel çarpımlardan ibarettir.
Yukarıdaki resimde bir resmin matris şeklinde nasıl ifade edildiğini görmüş oluyoruz. Peki bu matris dediğimiz şeyleri Python içerisinde nasıl oluşturacağız. İşte burada karşımıza "NumPy" modülü çıkmakta.
Numpy Nedir ? NumPy Kullanmanın Avantajları Nelerdir ?
-> Öncelikle Numpy ismini (Numerical Python) almaktadır. Açık kaynak kodlarıyla, bilim ve mühendislikte çokca kullanılan bir modüldür. Python içerisinde bulunan list dediğimiz yapılar esnektir fakat yavaştırlar çünkü her bir eleman için hafızada ayrı yer tutarlar. NumPy modülü sayesinde veriyi C dili blokları gibi bitişik hafıza alanlarında saklar bu sayede standart bir listeden çok daha az "RAM" tüketmiş olur.-> NumPy, "ndarray" adı verilen güçlü bir nesne sunmaktadır. Bu yapı sayesinde verileri sadece satır olarak değil, matrisler veya tensörler olarak yönetme şansı sunmaktadır.
-> Karmaşık matematiksel işlemleri tek satırda yapmanıza olanak sağlamaktadır.
- Lineer Cebir: Matris çarpımı(A.B), determinant hesabı, ters matris alma işlemlerini barındıran fonksiyonlar NumPy modülü içerisinde bulunmaktadır.
- İstatistik: Ortalama, standart sapma, varyans, medyan hesaplamalarını sağlayan fonksiyonlar bulunmaktadır.
- Fourier Dönüşümü: Sinyal işleme ve frekans analizi için fonksiyonlar bulunmaktadır.
- Lineer Cebir: Matris çarpımı(A.B), determinant hesabı, ters matris alma işlemlerini barındıran fonksiyonlar NumPy modülü içerisinde bulunmaktadır.
- İstatistik: Ortalama, standart sapma, varyans, medyan hesaplamalarını sağlayan fonksiyonlar bulunmaktadır.
- Fourier Dönüşümü: Sinyal işleme ve frekans analizi için fonksiyonlar bulunmaktadır.
NumPy Kurulumu
-> NumPy bir modül olduğu için kurulum işlemi oldukça basittir. Terminali açtıktan sonra;
Python:
pip install numpy
Yazmanız yeterli olacaktır. Daha sonrasında Python gerekli dosyaları kurup, NumPy modülünü hazır hale getirecektir.
NumPy Fonksiyonları
-> NumPy fonksiyonlarını kullanabilmek için öncelikle içeriye import etmemiz gereklidir. Bunun için
Python:
import numpy as np
İmge İşleme işlemleri için kullanacağımız birkaç önemli fonksiyondan daha bahsetmek istiyorum.
-> np.zeros(): Bu fonksiyon sayesinde belirtilen boyutlarda array oluşturup bütün elemanlarını 0 ile dolduracaktır. Bu fonksiyonların anlamını ilerideki konularda daha iyi anlayacaksınız.
Bu şekilde 2x2 lik dizimizi oluşturup içerisini 0 ile doldurmuş olduk. Burada "0." şeklinde gözükmesinin sebebi dtype otomatik float gelmektedir eğer "dtype=int" ibaresi verilirse tam olarak "0" olarak dolduracaktır.
-> np.ones(): Bu fonksiyon sayesinde belirtilen boyutlarda array oluşturup bütün elemanlarını 1 ile dolduracaktır. np.zeros() ile aynı işlevi yapmaktadır sadece 0 yerine 1 ile dolduracaktır. "dtype=int" ibaresi eklendiği için değerler 1.0 şeklinde "float" değil, "integer" 1 şeklinde dönmektedir.
-> np.arange() : Bir aralık içeren dizi oluşturmak istediğimiz zaman bu fonksiyonu kullanmaktayız.
Burada 1 den başlayıp 10'a kadar 2 li adımlarla devam etmesini söylemiş olduk. Eğer büyük bir aralıkta dizi oluşturmak istiyorsak el ile girmek mümkün olmadığından bu fonksiyon yardımımıza koşmaktadır.
NumPy Öğeleri Ekleme, Kaldırma ve Sıralama
-> Bu bölümde son olarak öğe ekleme, kaldırma ve sıralama işlemlerinden bahsedeceğim.Bir dizi(array) içerisindeki elemanları sıralamak için "np.sort()" fonksiyonu kullanılmaktadır.
Burada görüldüğü üzere "A" dizisi tamamen karışık bir sırada eleman bulunduruyor. "np.sort()" fonskiyonu kullanarak küçükten büyüğe elemanları sıralamış oluyoruz.
Burada sıralama algoritmasının tipini de belirtebiliyoruz hangi algoritmanın hangi koşullarda daha iyi çalıştığı ileri konularda bunlardan bahsedeceğim.
Son olarak iki diziyi birleştirmek için kullandığımız "np.concatenate()" fonksiyonuna bir bakalım:
Burada a ve b iki farklı diziyi temsil ediyor "np.concatenate()" fonksiyonu ile tek bir dizi haline getirmiş oluyoruz.
Bu bölümün amacı bir giriş yapmaktı. İkinci bölümde artık geri kalan fonksiyonları resimler üzerinde çalışırken göstereceğim.
Aklınıza takılan her türlü soruyu sorabilirsiniz.
Hayırlı ramazanlar.
