Bir Bilgisayar Bilimi Olarak: Görüntü İşleme


BİLGİSAYAR BİLİMLERİ

Bilgisayar bilimleri, günden güne nefes kesici şekilde gelişmeye devam etmektedir. Her bir gün, bir öncekinden daha gelmişmiş olarak uyanıyoruz. Bu insan türünün düşünme yeteneğinin en güzel sonuçlarından biridir. Günümüzde bilgisayar bilimcisi sayılmak için Web, Mobil, Masaüstü uygulamaları yazabiliyor olmak, -piyasa için öyle olmasa da- bilim için yeterli kabul edilmiyor. Dolayısıyla bilgisayar bilimlerine katkıda bulunmak için bir ana dal üzerinde uzmanlaşmaya çalışmak gerekiyor. Bu kulağa biraz ürkünç gelebilir, ancak esasında bize yüzdüğümüz denizin sandığımızdan daha derin olduğunu söylüyor. Biz biliyoruz ki, eğer telaş yapıp çırpınmazsak, o suda boğulmayız.

Bugün, bilgisayar bilimlerinin ana dalları -genel olarak yazılım üzerinden konuşacak olursak- :

  • Bilgisayar güvenliği ve kriptografi
  • Yapay Zeka
  • Görüntü İşleme
  • Ses İşleme
  • Ağ Teknolojileri (Networking)
  • Algoritmalar ve Veri Yapıları
  • Hesaplama Teorisi
  • Veritabanı Teknolojileri
  • Makine Öğrenmesi
  • Veri Madenciliği
  • Doğal Dil İşleme

Bunlarla birlikte elbette ki bilgisayar bilimlerini ilgilendiren bir çok konu vardır. Bu konular da çoğu zaman birbirleriyle iletişim halindedir. Birbirleriyle yardımlaşma içindedir. Genel olarak bu yazıda “Görüntü İşleme”ye değinmek istedik.

GÖRÜNTÜ İŞLEME

imagepros

Görüntü işleme, bilgisayar bilimleri arasında en çok rağbet gören konulardan biridir. Aynı zamanda uygulaması ve anlatması da kolay ve zevklidir. Ancaaaaaak, en büyük dezavantajı şudur ki; herhangi bir kod parçası yazdığınızda bir programda hatanız varsa hata alırsınız. Ancak görüntü işlemede kocaman matrisler üzerinde, hatta videolar (matris dizileri) üzerinde çalıştığınız için, o hatayı analiz etmek, hatta çoğu zaman bulmak bile çok zordur. Her kodunuzu dikkatli yazmalısınız, güzel analiz etmelisiniz. Yine de meyvesini yiyince bu kadar çalışmaya değdiğini göreceksiniz.

Neye Yarar Bu Görüntü İşleme? 

Vücutta gözün, ve beyindeki göz işlemlerinin yeri neyse, bilgisayar bilimlerinde de görüntü işlemenin yeri odur. Bir nesneye bakarsınız ve o nesneyi rengine, şekline göre sınıflandırır, tanımlar ve algılarsınız. Dünyanın her yanında insanlar bu bilimin gelişmesine katkı sağlamakta. Tabi bunların başını ABD ve Hindistan çekiyor. Yine de internette görüntü işleme yöntemlerini araştırdığınızda, kendinizi bir denizin içinde hissedeceksiniz.

dizey

Resim dediğimiz şey, aslında koca bir matristir. Matris, tablo demektir. Resmin genişliği ve yüksekliği vardır. Örneğin 40*80 lik bir resimde toplam 3200 piksel vardır. Her bir pikselde, o pikselin renk değeri tutulur. (Kırmızı-Yeşil-Mavi olarak).

Bu renk değerleri, çoğu zaman bir ahenk içindedir. Hele ki incelediğiniz gerçek hayattan alınmış bir fotoğrafsa, bize gerçek hayatla ilgili bilgi verdiğinden emin olabiliriz.

Görüntü işlemede kullanılan en temel yöntemleri şöyle bir gözden geçirelim.

Histogram

rgb_image_histogram

Histogram, bir istatistik gibidir. Bir resim içerisindeki renk değerlerinden kaç tane bulunduğunu hesaplamamızı sağlar. Ortalama bir resim 500×500 boyutlarında olduğu için, en azından 250000 tane pikselin her birinde, 3’er tane renk değeri bulunacağı için, bunun yerine program, o renk değerlerinin histogram istatistikini çıkarır. Örneğin 50 000 tane kırmızı, 70 000 tane yeşil renk var gibi. Bu histogram değerleri, bir çok yöntemde kullanılır.

Meanshift Takibi

shapeimage_1

Gökyüzünü kaydeden bir kamera olduğunu varsayalım. Bir uçak olduğunu fark eden kamera, sizin gözünüzle uçağı takip ettiğiniz gibi, uçağın nerede olduğu bilgisini takip edebilir. Bunu yaparken, bulduğu uçak renklerini, videodaki resimlerin içinde o bölgede arar.

Cisim Algılama

nodejs_bananadetect_desk

Herhangi bir cismi programa tanıtarak, bir videoda o cismin olduğu yerleri işaretleyerek o cismi öğretmiş olursunuz. Bu şekilde, başka bir videoda benzer bir cisim kullandığınızda, program onun o cisim olduğunu anlayabilir. Bunun için  en etkili yöntem, Haar-Cascading’dir.

Peki Hangi Dilde Nasıl Görüntü İşleme Yaparım?

Anlattığımız şeyler, buzdağında bir küp buz parçası gibi, hani şu soğuk olması istenen içeceklerin içine atılan. Ancak yine de birçoğumuzun içinde bu heyecanı yaşama isteği doğmuştur. Görüntü işleme bir çok platformda uygulanabilir, yapılabilir. Ancak bugün görüntü işleme için, bu yöntemleri kullanabileceğimiz bir çok kütüphane bulunmaktadır. Bu kütüphanelerde bu yöntemlerin hazır fonksiyonları bulunmaktadır. Dökümanlarda bu fonksiyonların nasıl kullanıldığı da anlatılmaktadır. Bu kütüphanelerin en popüleri bugün OpenCV’dir. OpenCV, en çok C++ ve Python üzerinde kullanılıyor olsa da Java üzerinde de kullanılabilmektedir. En çok performansı C++ üzerinde sağlayacak olsa da, en okunaklı yazımı Python üzerinde olacaktır. Tabi bir de, Java üzerinde kullanımı yavaş olacak olsa da, Java’nın yazılımcılara sunduğu imkanları asla gözardı etmemeliyiz.

Kısacası, öğrenmeye yeni başlayacaklar için Python üzerinde OpenCV ile görüntü işleme yapmak en kolayı olacaktır. OpenCV + Python’u Linux üzerinden kurup kullanabileceğiniz gibi, Windows üzerinde de Python’a OpenCV’nin nasıl kurulduğunu anlatan anlatımlar Google’de mevcut. Sonraki yazılarımızda buna da değineceğiz.

Sonuç olarak, görüntü işleme bugün bilgisayar bilimlerinde büyük bir öneme sahiptir. İnsan hayatını kolaylaştırma imkanını açık şekilde sağlayan bir daldır. Aynı zamanda uğraşması oldukça zevklidir. Şimdiden iyi eğlenceler..!


Bir yorum

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Benzer Yazılar Bilim ve Teknoloji