• Sonuç bulunamadı

Kameradan görüntü yüklenmesi ve yerel değişkenlerin

3.3 SİSTEMİN ÇALIŞMASI

3.3.3 Kullanıcı Grafik Arayüzünün Yaratılması

3.3.4.1 Kameradan görüntü yüklenmesi ve yerel değişkenlerin

Bu görevin yerine getirilmesi için, ilk olarak cam değişkeninde bulunan görüntünün okunması ve bu okunan görüntülerin cam değişkeninin gösterdiği arayüz alanına pikseller olarak yüklenmesi gerekmektedir. Bunlar, processing ortamının processing.video paketi ile bize sağladığı Capture sınıfından üretilen cam değişkenin read( ) ve loadPixels( ) yöntemleri ile gerçekleştirilir. Böylece cam değişkenin içerdiği görüntü karesi kameradan gelen verilere göre güncellenmiş olur.

Kameradan gelen görüntü verilerine göre yapılan güncellemenin ardından, ön izleme ekranında oluşturulan alt çerçeve sayısını tutacak olan integer temel tipinde yerel totalGrid değişkeni tanımlanır. Bu değişken gridNumber global değişkeninin taşıdığı değere göre kendi değerini alır. Global gridNumber değişkeninin değeri 0 ise, yerel totalGrid değişkeninin değeri 1; gridNumber değişkeninin değeri 1 ise, yerel totalGrid değişkeninin değeri 4; gridNumber değişkeninin değeri 2 ise, yerel totalGrid değişkeninin değeri 16 olacaktır. Bu değişken, toplam alt çerçeve sayısının esas niceliğini tutacaktır. (Şekil 3.37)

Şekil 3.37 Global gridNumber değişkenine göre, yerel totalGrid değişkenine değer atanması

Ardından, kameradan gelen değerlerin toplanacağı yerel değişkenler tanımlanır. Bu değişkenler, görüntünün ayrıştırılması ve işlenmesi ile elde edilen altı adet özelliğin niceliklerini tutacaktır. Bu yüzden her bir görüntü özelliği için bir değişken tanımlanır. Görüntünün kırmızı değeri için totalRed yerel değişkeni, yeşil değeri için totalGreen

137

yerel değişkeni, mavi değeri için totalBlue yerel değişkeni, renk değeri için totalHue yerel değişkeni, doygunluk değeri için totalSaturation yerel değişkeni, parlaklık değeri için totalBrightness yerel değişkeni tanımlanır. Ancak bu yapısıyla, bu değişkenler sadece tek bir alt çerçevenin görüntü değerlerini tutabilecek şekildedir. Kullanıcının birden fazla alt çerçeve belirleme durumlarında ise, birden fazla alt çerçevenin değerini tutabilme kabiliyetine sahip olabilmesi için ihtiyaç duyulan bu değişkenler dizi olarak tanımlanmalıdır. Bu dizi değişkenleri tek boyutlu olarak tanımlanacaktır. Dizilerin eleman sayısı ise totalGrid değişkeninin taşıdığı değere göre belirlenecektir. Dolayısı ile bu diziler kullanıcı tek çerçeveli bir görüntü seçti ise tek eleman boyutunda, dört alt çerçeveli bir görüntü seçti ise dört eleman boyutunda, on altı alt çerçeveli bir görüntü seçti ise an altı eleman boyutunda olacaklardır.

Tanımlanması gereken diğer bir değişken grubunun işlevi ise, her bir çerçeve içerisinde bulunan piksellerin altı ayrı niteliğinin toplamını aldıktan sonra, bunların ortalamalarını yani piksel başına düşen değerlerini tutacak olma işidir. Bu işlevi karşılayacak olan değişken grubu da, kullanıcının birden fazla alt çerçeve belirlemesi durumuna karşılık verebilmesi için dizi yerel değişkeni olarak belirlenecektir. Görüntünün kırmızı değerinin ortalaması için averageRed yerel dizi değişkeni, yeşil değerinin ortalaması için averageGreen yerel dizi değişkeni, mavi değerinin ortalaması için averageBlue yerel dizi değişkeni, renk değerinin ortalaması için averageHue yerel dizi değişkeni, doygunluk değerinin ortalaması için averageSaturation yerel dizi değişkeni, parlaklık değerinin ortalaması için averageBrightness yerel dizi değişkeni tanımlanır. Bu diziler de, totalGrid yerel değişkeninin taşıdığı değer kadar eleman taşıyacak boyutta olmalıdır. Böylece toplamı alınan görüntü değerleri, ortalamaları alınarak tutulabilecektir. (Şekil 3.38)

138

Şekil 3.38 totalGrid yerel değişkenine göre boyutları belirlenen yerel diziler Piksellerde aranan niteliklerin değerlerinin toplamını tutan totalRed, totalGreen, totalBlue, totalHue, totalSaturation, totalBrightness yerel dizi değişkenlerinin önemli bir özelliği, veri tipi olarak float temel tipinde olmalarıdır. Bu dizilerin, kameradan alınan görüntünün yüklendiği cam değişkeninin değerlerinin ondalıklı olması ve daha sonrasında bu değerlerin ortalama ve oran alma gibi işlemlere tabi tutulacak olmalarından dolayı, toplama işlemi sırasında daha hassas neticeler elde edebilmek amacıyla float temel tipinde olmaları uygun görülmüştür.

totalRed, totalGreen, totalBlue, totalHue, totalSaturation, totalBrightness yerel dizi değişkenlerinde tutulan değerlerin ortalamalarının, yani piksel başına düşen değerlerinin niceliklerinin ise averageRed, averageGreen, averageBlue, averageHue, averageSaturation, averageBrightness dizilerinde tam sayı olarak tutulması uygun görülmüştür. Bu yüzden veri tipi olarak integer temel tipinde tanımlanmışlardır. Bu

139

dizilerin integer temel tipinde tanımlanmalarının nedeni ise, buradaki değerlerin kullanıcı kontrollerine bağlanması dolayımı ile ses sinyal değerlerine tam ve kesin sayılar olarak verilmeleri içindir. (Şekil 3.39)

Şekil 3.39 Dönüştürme işlemleri sırasında değişen veri tipleri

Burada tanımladığımız on iki dizi değişkeninin yerel olmalarının sebebi ise, kullanıcının sürekli olarak alt çerçeve sayısını değiştirerek gridNumber, dolayısı ile totalGrid değişkeninin değerini değiştirebilmesidir. Eğer farklı çerçeve sayıları için farklı boyutlardaki değişkenleri global olarak tanımlarsak, sistem kaynaklarını özellikle de sistem belleğini gereksiz yere meşgul etmiş olacağız. ComputePixelValues( ) fonksiyonunun her çalıştırılmasında, bu dizi değişkenlerinin yerel olarak ve güncel kullanıcı seçimine göre gerekli boyutta yaratılması ve bu fonksiyon bittiğinde de bellekten silinmesi daha doğru bir çözüm olacaktır.

Bu dizi değişkenlerinin kullanıma hazırlanması için, bütün elemanlarının ilk değerlerinin verilmesi gerekmektedir. İlk değer, totalRed, totalGreen, totalBlue, totalHue, totalSaturation, totalBrightness yerel dizi değişkenlerinin bütün elemanları için 0,0 olacaktır. Diğer averageRed, averageGreen, averageBlue, averageHue, averageSaturation, averageBrightness yerel dizi değişkenlerinin bütün elemanları için de 0 olacaktır. Görüntü işleme için, her gelen yeni görüntüde piksellerin ilgili değerleri toplanacağından ve ardından ortalamaları alınacağından dolayı başlangıçta sıfırlanmaları gerekmektedir.

140

3.3.4.2 Görüntülerin işlenerek kullanıcı kontrolü için parametrelere