• Sonuç bulunamadı

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

3.3 SİSTEMİN ÇALIŞMASI

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

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

Kameradan alınan görüntülerin okunması, yüklenmesi ve ardından yapılan yerel değişkenlerin tanımlanması işlemlerinden sonra, kameradan alınan bu görüntülerin işlenerek kullanıcı kontrolüne verilmek üzere anlamlı parametrelere dönüştürülmesi işlemine geçilir.

Öncelikle, kullanıcının kararı ile belirlenen alt çerçeve sayısına bağlı olarak her bir görüntü alanının kaç piksel uzunluğunda olduğu hesaplanır. Bunun için totalGrid değişkeninde tutulan değerin karekökü alınır. Ardından, bu işlemin sonunda oluşan değer cam değişkeninin width özelliğinin taşıdığı değeri böler. Böylece her bir alt çerçevenin kaç piksel uzunluğunda olduğu bulunur. Bu uzunluk değeri, integer temel tipinde değer taşıyan br yerel değişkenine atanır. Kameradan alınan görüntü 256 * 256 piksel boyutlarında ve kare formatında olduğuna göre, alt çerçeveler de yine kare formatında olacaktır. Bu durumda, eğer kullanıcı tek çerçeveli bir görüntü ile çalışmak isterse bu çerçeve 256 * 256 piksel boyutlarında olacaktır. Dört çerçeveli bir görüntü ile çalışmak isterse bu çerçeveler 128 * 128 piksel boyutlarında olacaktır. On altı çerçeveli bir görüntü ile çalışmak isterse bu çerçeveler 64 * 64 piksel boyutlarında olacaktır. Kare formatında olan bu çerçevelerin, hem yatay hem de dikey uzunluk değerleri birbirine eşit olacağından, tek bir integer temel tipindeki br değişkenin kullanılması uygun olmuştur. (Şekil 3.40)

Şekil 3.40 Kullanıcının kararları doğrultusunda belirlenen totalGrid değişkeni ile alt çerçevelerin uzunluk bilgisinin br değişkenine atanması

141

Her alt çerçevenin sahip olduğu uzunluk bilgisinin belirlenmesinin ardından, sıra bu alt çerçevelerin içlerindeki piksel değerlerinin toplanmasına gelir. Bu işlem için iç içe döngüler kullanılır. totalGrid değişkeninin karekökü kadar yatayda ve yine totalGrid değişkeninin karekökü kadar dikeyde alt çerçeve olduğuna göre totalGrid değişkeninin karekökü kadar çalışacak iki for döngüsü, toplamda bütün alt çerçeveleri gezebilecektir.

Bütün alt çerçevelerin içlerinde bulunan piksel değerlerinin hesaplanabilmesi için, toplamda alt çerçeve sayısı kadar çalışacak olan içe içe for döngülerinin her çalışmasında ilk olarak, ilgili alt çerçevenin sol üst noktasının referans noktası olarak belirlenmesi işlemi yapılır. Böylece her alt çerçevenin piksel değerlerinin hesaplanması sırasında hangi noktanın sabit olarak kullanılacağı belirlenir. Bunun için, etkinlik alanı bu for döngüsü olan conspoint adında integer temel tipinde yerel bir değişken tanımlanır. Bu değişken içe içe tanımlanan for döngüleri her çalıştığında, yani her alt çerçeveye gelindiğinde yeniden hesaplanır. Bu hesaplama; birinci döngünün indeks değişkeni (i), cam değişkeninin yatay piksel uzunluğu, br değişkeninin değerinin çarpılmasıyla elde edilen değer ile ikinci döngünün indeks değişkeni (j) ve br değişkeninin değerinin çarpılması ile elde edilen değerlerin toplanması ile bulunur. Bu değer conspoint değişkenine atanır. Böylece ilgili alt çerçevenin sol üst köşesinde bulunan pikselin, cam değişkeninde kaçıncı piksel olduğu belirlenmiş olur.

Gelinen alt çerçevenin referans noktasını belirledikten sonra, yatayda ve dikeyde bulunan pikseller için yine iç içe iki for döngüsü tanımlanır. Bu for döngülerinin her biri br değişkeninin taşıdığı değer kadar çalışır. Belirlenen sabit referans noktasının değerinin teker teker arttırılması ile ilgili alt çerçevelerin değerleri okunur. Görüntüyü taşıyan cam değişkeninin pixels[ ] dizi tipindeki özelliği kullanılarak teker teker ilgili alt çerçevenin bütün piksellerine ulaşılır. cam değişkeninin pixels dizi özelliğinin indeks parametresi; conspoint değişkeninin değeri, birinci döngünün indeks değişkeni (a) ile cam değişkeninin width değerinin çarpımından çıkan sonuç ve ikinci döngünün indeks değişkeninin (b) değerinin toplanması ile belirlenir.

142

İkinci iç içe döngüde, ulaşılan bu piksellerin değerlerinin tutulması için, colorValue isminde ve color tipinde yerel bir değişken tanımlanır. Böylece, incelenecek olan pikselin değerleri artık colorValue değişkeninden ulaşılabilir olur.

Bunların ardından, her alt çerçevenin toplam kırmızı, yeşil, mavi, renk, doygunluk ve parlaklık değerleri için yarattığımız totalRed, totalGreen, totalBlue, totalHue, totalSaturation, totalBrightness yerel dizi değişkenlerinin hangi elemanlarının değerlerine atama yapılacağını belirlemek için güncel indeks değerleri oluşturulur. Bu değerler, birinci iç içe döngünün ilk for döngüsünün indeks değişkeni (i) ile totalGid değişkeninin karekökünün çarpımının ikinci iç içe döngünün ikinci for döngüsünün indeks değişkeni (j) ile toplanması ile oluşturulur.

İlk olarak, totalRed dizisinin ilgili elemanına, red( ) standart fonksiyonunun parametre girişine colorValue değişkeninin girilmesi ile elde edilen kırmızı değeri atanır.

İkinci olarak, totalGreen dizisinin ilgili elemanına, green( ) standart fonksiyonunun parametre girişine colorValue değişkeninin girilmesi ile elde edilen yeşil değeri atanır. Üçüncü olarak, totalBlue dizisinin ilgili elemanına, blue( ) standart fonksiyonunun parametre girişine colorValue değişkeninin girilmesi ile elde edilen mavi değeri atanır. Dördüncü olarak, totalHue dizisinin ilgili elemanına, hue( ) standart fonksiyonunun parametre girişine colorValue değişkeninin girilmesi ile elde edilen renk değeri atanır. Beşinci olarak, totalSaturation dizisinin ilgili elemanına, saturation( ) standart fonksiyonunun parametre girişine colorValue değişkeninin girilmesi ile elde edilen doygunluk değeri atanır.

Altıncı olarak, totalBrightness dizisinin ilgili elemanına, brightness( ) standart fonksiyonunun parametre girişine colorValue değişkeninin girilmesi ile elde edilen parlaklık değeri atanır.

143

Burada kullandığımız, red( ), green( ), blue( ), hue( ), saturation( ) ve brightness( ) standart fonksiyonlarından dönen sonuçlar, 0 ile 255 değerleri arasında olmaktadır. Bütün bu değerler üst üste toplanarak totalRed, totalGreen, totalBlue, totalHue, totalSaturation, totalBrightness dizi değişkenlerinde saklanır. Böylece, her bir alt çerçevenin sahip olduğu piksellerin ilgili özelliklerinin toplam değerleri elde edilmiş olur. (Şekil 3.41)

144

Şekil 3.41 Her bir alt çerçevenin sahip olduğu piksellerin değerlerinin ilgili dizi değişkenlerinde toplanması

145

Böylece totalRed, totalGreen, totalBlue, totalHue, totalSaturation ve totalBrightness dizi değişkenlerinde, bütün alt çerçevelerin piksellerindeki toplam kırmızı, yeşil, mavi, renk, doygunluk ve parlaklık değerlerinin toplamı bulunmaktadır.

Piksel değerlerinin toplamlarının alınmasının ardından; totalRed, totalGreen, totalBlue, totalHue, totalSaturation ve totalBrightness dizi değişkenlerinin ilgili elemanlarının değerlerinin, her bir alt çerçevede piksel başına ne kadar değer düştüğü hesaplanır. Bunun için, bir alt çerçevedeki bu toplam değerler, bu alt çerçevenin toplam piksel sayısına bölünür. Böylece her alt çerçevede piksel başına düşen kırmızı, yeşil, mavi, renk, doygunluk ve parlaklık değerleri bulunur. Bu değerler 0 ile 255 değerleri arasında olurlar.

Bu işlem için, kullanıcının kontrolü ile belirlenen totalGrid değişkenini değeri kadar çalışacak bir döngü oluşturulur. Bu döngü içerisinde; bir alt çerçevedeki toplam değerler, bu alt çerçevenin toplam piksel sayısına bölünerek, piksel başına düşen değer hesaplanır.

Her alt çerçevenin toplam piksel sayısı, cam değişkeninin toplam piksel sayısının totalGrid değişkeninin değerine bölünmesi ile bulunur.

Döngü içerisinde ilk olarak; totalRed dizisinin döngü indeksi (i) ile belirlenen elemanının değeri bu alt çerçevenin toplam piksel sayısına bölünür. Ardından çıkan değer, averageRed dizisinin döngü indeksi (i) ile belirlenen elemanının değerine atanır. Böylece bu alt çerçevedeki piksellerin taşıdığı ortalama kırmızı değeri 0 ile 255 sayıları arasında belirlenmiş olur.

İkinci olarak; totalGreen dizisinin döngü indeksi (i) ile belirlenen elemanının değeri bu alt çerçevenin toplam piksel sayısına bölünür. Ardından çıkan değer, averageGreen dizisinin döngü indeksi (i) ile belirlenen elemanının değerine atanır. Böylece bu alt çerçevedeki piksellerin taşıdığı ortalama yeşil değeri 0 ile 255 sayıları arasında belirlenmiş olur.

146

Üçüncü olarak; totalBlue dizisinin döngü indeksi (i) ile belirlenen elemanının değeri bu alt çerçevenin toplam piksel sayısına bölünür. Ardından çıkan değer, averageBlue dizisinin döngü indeksi (i) ile belirlenen elemanının değerine atanır. Böylece bu alt çerçevedeki piksellerin taşıdığı ortalama mavi değeri 0 ile 255 sayıları arasında belirlenmiş olur.

Dördüncü olarak; totalHue dizisinin döngü indeksi (i) ile belirlenen elemanının değeri bu alt çerçevenin toplam piksel sayısına bölünür. Ardından çıkan değer, averageHue dizisinin döngü indeksi (i) ile belirlenen elemanının değerine atanır. Böylece bu alt çerçevedeki piksellerin taşıdığı ortalama renk değeri 0 ile 255 sayıları arasında belirlenmiş olur.

Beşinci olarak; totalSaturation dizisinin döngü indeksi (i) ile belirlenen elemanının değeri bu alt çerçevenin toplam piksel sayısına bölünür. Ardından çıkan değer, averageSaturation dizisinin döngü indeksi (i) ile belirlenen elemanının değerine atanır. Böylece bu alt çerçevedeki piksellerin taşıdığı ortalama doygunluk değeri 0 ile 255 sayıları arasında belirlenmiş olur.

Altıncı olarak; totalBrightness dizisinin döngü indeksi (i) ile belirlenen elemanının değeri bu alt çerçevenin toplam piksel sayısına bölünür. Ardından çıkan değer, averageBrightness dizisinin döngü indeksi (i) ile belirlenen elemanının değerine atanır. Böylece bu alt çerçevedeki piksellerin taşıdığı ortalama parlaklık değeri 0 ile 255 sayıları arasında belirlenmiş olur.

Bütün bu işlemlerden sonra görüntülerin işlenmesi ile kullanıcı için anlamlı parametrelere dönüştürülmesi işlemi sonlandırılmış olur. Bundan sonra, kullanıcı kendi kontrolleri ile bu değerler arasında istediği gibi ilişkiler yaratabilecek ve ses sinyal parametrelerini oluşturabilecektir.

147

3.3.4.3 Kullanıcı kontrolleri ile görüntü parametrelerinin birleştirilmesi ve