tüm gökyüzü kamerasından alınan görüntüler kullanılarak

Transkript

tüm gökyüzü kamerasından alınan görüntüler kullanılarak
TÜM GÖKYÜZÜ KAMERASINDAN ALINAN GÖRÜNTÜLER
KULLANILARAK BULUTLULUK ÖLÇÜMÜ YAPILMASI
İsmail BAŞLAR
UZMANLIK TEZİ
TÜRKİYE BİLİMSEL VE TEKNOLOJİK ARAŞTIRMA KURUMU
Ulusal Gözlemevi Müdürlüğü
Ocak 2012
ANTALYA
ÖNSÖZ VE TEŞEKKÜR
Çalışma süresince katkı ve desteğinden dolayı Dr. Tuncay Özışık'a teşekkürlerimi
sunarım.
Ayrıca çalışma arkadaşlarıma ve TUG yönetimine göstermiş olduğu anlayıştan dolayı
teşekkürü borç bilirim.
i
TÜM GÖKYÜZÜ KAMERASINDAN ALINAN GÖRÜNTÜLER KULLANILARAK
BULUTLULUK ÖLÇÜMÜ YAPILMASI
(Uzmanlık Tezi)
İsmail BAŞLAR
ÖZET
Gökyüzündeki bulutluluğun tespiti, faaliyette olan gözlemevlerinde ve gözlemevi yer
seçimi çalışmalarında büyük önem taşımaktadır. Günümüze kadar bulutluluğun tespiti için
farklı yöntemler kullanılmıştır. Günümüzde ise kameraların da gelişimiyle, bulutluluk
ölçümlerinde tüm gökyüzü kamerası kullanılması önemli yer tutmaktadır.
Bu çalışmada TÜBİTAK Ulusal Gözlemevi Bakırlıtepe Yerleşkesi’nde kullanılmakta olan
tüm gökyüzü kamerasından alınan görüntüler ile bulutluluk analizi yapan bir sistem
üzerinde çalışılmıştır. Amaç, alınan görüntüleri görüntü işleme tekniklerini uygulayarak
analiz etmek ve bulutluluk oranını hesaplamaktır. Gündüz ve gece olmak üzere iki farklı
zaman dilimindeki görüntüler kendi arasında, bulundukları zaman dilimine göre ayrılarak
farklı metotlarla analiz edilmiştir. Görüntülerin tek bir yöntem yerine sınıflara ayrılarak
farklı metotlarla incelenmesi halinde başarı oranının yükseldiği görülmüştür.
Anahtar Kelimeler: Görüntü işleme, bulutluluk analizi, tüm gökyüzü kamerası, renk uzayı
ii
CLOUDINESS ANALYSIS BY USING ALL SKY CAMERA IMAGES
(Expertise thesis)
İsmail BAŞLAR
ABSTRACT
Cloud detection is an important subject for both observatories already operating and site
selection for an observatory. There are some methods used for cloud detection until now.
Nowadays cloud detection using all sky cameras is the most promising method by the
help of sophisticated cameras.
In this work we studied automatic cloudiness analysis system by using the images taken
by all sky camera located at TÜBİTAK National Observatory. Different approaches applied
to both day time and night time images to calculate the sky coverage. Image classification
methods are improved for applying the suitable image processing method. We discovered
that classifying images to classes and applying different methods according to their
classes increases performance of cloud detection system.
Keywords: Image processing, cloudiness, sky coverage analysis, all sky camera
iii
İÇİNDEKİLER
ÖNSÖZ VE TEŞEKKÜR ..................................................................................................... i
ÖZET ................................................................................................................................. ii
ABSTRACT....................................................................................................................... iii
İÇİNDEKİLER ................................................................................................................... iv
TABLO LİSTESİ................................................................................................................ vi
ŞEKİL LİSTESİ ................................................................................................................ vii
SİMGE VE KISALTMALAR ............................................................................................... ix
1. GİRİŞ .............................................................................................................................1
2. ÖLÇME DÜZENEĞİ.......................................................................................................3
3. GÖRÜNTÜ ANALİZ YÖNTEMLERİ ...............................................................................6
3.1. Renk Uzayları .............................................................................................................6
3.1.1. RGB renk uzayı........................................................................................................7
3.1.2. HSV renk uzayı ........................................................................................................8
3.1.3. Lab renk uzayı .........................................................................................................9
3.1.4. CIE XYZ renk uzayı..................................................................................................9
3.2. Dönüşümler ..............................................................................................................10
3.2.1. RGB renk uzayından HSV renk uzayına dönüşüm .................................................10
3.2.2. RGB renk uzayından Lab renk uzayına dönüşüm ..................................................12
3.2.2.1. RGB renk uzayından XYZ renk uzayına dönüşüm ..............................................12
3.2.2.2. XYZ renk uzayından Lab renk uzayına dönüşüm ................................................13
3.3. Çalışma Alanı (maskeleme) ......................................................................................14
3.4. Bağlantılı Bileşen Etiketleme Yöntemi .......................................................................15
3.5 Morfolojik İşlemler ......................................................................................................16
3.5.1. Genleşme işlemi ....................................................................................................17
iv
3.5.2. Aşınma işlemi.........................................................................................................17
3.5.3. Açınım işlemi..........................................................................................................17
3.5.4. Kapanım işlemi ......................................................................................................18
3.5.5. Yapılandırma elemanı ............................................................................................18
3.5.6. Gri seviyede morfolojik işlemler ..............................................................................18
3.6. K-means Yöntemi .....................................................................................................19
3.6.1. K-means yönteminin adımları.................................................................................20
3.7. Otsu Metodu .............................................................................................................21
3.7.1. Varyans..................................................................................................................22
3.7.2. Otsu metodu ve algoritması ...................................................................................22
4. UYGULAMA VE SONUÇLAR ......................................................................................26
4.1. Gündüz Alınan Görüntülerde Bulutluluk Analizi .........................................................26
4.1.1. Güneş'in tespiti.......................................................................................................27
4.1.2. K-means kümeleme yöntemi ile bulutluluk tespiti ...................................................31
4.1.3 RGB uzayı kullanılarak bulut tespiti .........................................................................32
4.1.4. İki yöntemden uygun olanın seçilmesi ....................................................................32
4.2. Gece Alınan Görüntülerde Bulutluluk Analizi .............................................................33
4.2.1. Karanlık gecede bulutluluk analizi ..........................................................................34
4.2.2 Aydınlık gecede bulutluluk analizi............................................................................37
4.2.2.1 Ay'ın tespiti...........................................................................................................37
4.2.2.2. K-means kümeleme yöntemi ile bulutluluk tespiti ................................................38
4.2.2.3. Gece alınan görüntülerde uygun yöntemin seçilmesi ..........................................38
4.3. Bulutluluk Oranı Hesabı ............................................................................................39
5. TARTIŞMA VE ÖNERİLER ..........................................................................................40
KAYNAKLAR ...................................................................................................................44
EKLER .............................................................................................................................47
IDL kodları .......................................................................................................................47
ÖZGEÇMİŞ......................................................................................................................68
v
TABLO LİSTESİ
Tablo 4.1. Gündüz alınan görüntülerin analizinde kullanılan yöntem seçim tablosu
33
Tablo 4.2. Gece alınan görüntülerin analizinde kullanılan yöntem seçim tablosu
39
vi
ŞEKİL LİSTESİ
Şekil 2.1. TUG tüm gökyüzü kamera sistemi .....................................................................3
Şekil 2.2. TUG’daki tüm gökyüzü kamera sisteminin bileşenleri ........................................4
Şekil 3.1. Renk uzayları.....................................................................................................7
Şekil 3.2. RGB renk uzayını tanımlayan bir şekil ...............................................................7
Şekil 3.3. HSV renk uzayının konik gösterimi ve silindir biçimli gösterimi...........................8
Şekil 3.4. CIE Lab renk uzayı ............................................................................................9
Şekil 3.5. CIE XYZ renk uzayı .........................................................................................10
Şekil 3.6. Örnek tüm gökyüzü kamerası görüntüsü ve örnek maskeleme görüntüsü .......14
Şekil 3.7. Maskeleme sisteminde kullanılan görüntü........................................................15
Şekil 3.8. Örnek yapılandırma elemanları ........................................................................18
Şekil 3.9. K-means adımları ............................................................................................21
Şekil 3.10. Örnek gri seviye görüntü ve histogramı..........................................................23
Şekil 3.11 Örnek görüntünün arka plan histogramı ..........................................................23
Şekil 3.12. Örnek görüntünün ön plan histogramı ............................................................24
Şekil 3.13. Bölütlenmiş görüntü .......................................................................................25
Şekil 4.1. Örnek tüm gökyüzü kamera görüntüsü ve bu görüntünün piksellerinin HSV
uzayında dağılımı .....................................................................................................28
Şekil 4.2. Şekil 4.1'deki görüntünün piksellerinin HSV uzayında dağılımı ........................28
Şekil 4.3. Şekil 4.1’den HSV uzayında Güneş tespit edilen pikseller ...............................29
Şekil 4.4 Şekil 4.3’e aşınma işlemi uygulanarak elde edilen görüntü ...............................29
Şekil 4.5. Şekil 4.4’deki görüntünün en büyük nesnesini gösteren görüntü ......................30
Şekil 4.6. Şekil 4.5’deki nesnenin boşlukları doldurularak elde edilen görüntü .................30
Şekil 4.7. Güneş işaretli görüntü ......................................................................................31
Şekil 4.9. R-B yöntemine örnek görüntü ve bunun bulut işaretli durumu ..........................32
Şekil 4.10 Açık gecede yıldızların etkisi ...........................................................................34
Şekil 4.11. Orijinal görüntü ..............................................................................................35
Şekil 4.12. Şekil 4.11’deki görüntünün R bileşeni ............................................................35
Şekil 4.13. Şekil 4.12’ye açınım işlemi uygulanarak elde edilen görüntü..........................36
vii
Şekil 4.14. Şekil 4.11’deki görüntünün bulut işaretli durumu ............................................36
Şekil 4.15. Orijinal görüntü ve bunun Ay tespit edilmiş hali ..............................................37
Şekil 4.16. K-means yöntemine örnek görüntü ................................................................38
Şekil 5.2. Gündüz görüntüleri üzerinde yapılan analiz .....................................................41
Şekil 5.5. Güneş ve ay yansıma engelleyici.....................................................................43
viii
SİMGE VE KISALTMALAR
Simgeler
Açıklama
Varyans
ω
Ağırlık
μ
Ortalama
Kısaltmalar
Açıklama
ASA
American Standards Association
CIE
Commission Internationale de I’Eclairage
CMY
Renk Uzayı
DSLR
Digital single-lens reflex
GIF
Graphics interchange format
HSV
Hue Saturation Value (Renk Uzayı)
HLS(HSL)
Hue Saturation Lightness (Renk Uzayı)
JPEG
Joined Photographic experts group
kb
Kilobyte
LAB
Renk Uzayı
LUV
Renk Uzayı
ix
mV
Milivolt
RGB
Red Green Blue (Renk Uzayı)
TUG
TÜBİTAK Ulusal Gözlemevi
USB
Universal Serial Bus
x
1. GİRİŞ
Hava raporu ve uydu görüntüleri, bulunulan bölgenin durumu hakkında düşük
çözünürlükte ve genel bir fikir verebilmektedir. Dolayısıyla gözlemevi yerleşkesi gibi bir
bölgenin bulutluluk durumu hakkında detaylı bilgi verememektedir.
Gökyüzü ısı ölçümünde ise kullanılan algılayıcılar yardımıyla gökyüzü ve yeryüzü
ortalama ısıları ölçülerek, bulunan değerlerin kıyaslanması ile bulutluluk tespiti
yapılmaktadır. Ashley ve Jurcevic (1991) tarafından yapılan çalışmada bulutların ortamda
varlığının, bulutların kızılötesi emisyonundan faydalanılarak belirlenebileceği gösterilmiştir.
Bulutlu bölge açık bölgeye göre daha fazla sinyal üretecektir. Bu bilgiler ışığında Clay vd.
(1999) kızılötesi algılayıcılar kullanarak bulut bulucu yapmışlardır. Kızılötesi algılayıcı
olarak termopil kullanılmıştır. Termopil birkaç termokuplın seri olarak bağlanmasıyla elde
edilen algılayıcıdır. Termokupl ise iki farklı metal alaşımın uçlarının birleştirilmesi ile elde
edilen bir sıcaklık ölçü elemanıdır. İki uç arasındaki sıcaklık farkına orantılı olarak soğuk
nokta uçlarında mV değerlerinde gerilim oluşur. İki uç arasındaki sıcaklık dağılımı nasıl
olursa olsun üretilen gerilim sıcak ile soğuk nokta arasındaki sıcaklık farkına orantılıdır
(Kartal D, 2006). Termokupl kullanılarak geliştirilen ticari bulut algılayıcıları da
bulunmaktadır (Diffraction Limited, 2011). Bu tip sistem gökyüzü hakkında açık, bulutlu,
çok bulutlu, yağmurlu gibi bilgiler verebilmektedir. Ancak bulutun konumu ve miktarı
hakkında kesin bir bilgi elde edilememektedir. Aynı zamanda ölçüm alanı da tüm
gökyüzünü kapsamamaktadır.
Diğer bir yöntem ise yüksek çözünürlüklü bir kameraya balıkgözü lens takılarak alınan tüm
gökyüzü görüntülerinin analizi ile bulutluluk tespiti yapmaktır. Alınan görüntülerin
bölgedeki tüm gökyüzüne ait olması ve görüntü işleme yöntemleri ile bulutların yerinin
belirlenebilmesi dolayısıyla bu yöntem çok kullanılmaya başlanan bir yöntem olmuştur.
Günümüzde yapılan çalışmalar tüm gökyüzü kamerasından alınan görüntülerin verilerinin
daha yüksek doğrulukta analiz edilebilmesine yönelmiştir (Pfister vd., 2003) (Heinle vd.,
2010) (Roy vd., 2008).
1
Bu tezin amacı TÜBİTAK Ulusal Gözlemevi'ndeki TUG tüm gökyüzü kamerası ile alınan
verilerin analizi ile bulutluluk tespiti yapılmasıdır. Bulutluluk tespiti için günümüzde çeşitli
yöntemler kullanılmaktadır. Bunlardan bazıları hava raporu ve uydu görüntüleri, gökyüzü
ısı ölçümü ve tüm gökyüzü kamerasından alınan görüntülerin analizi ile elde edilen
bulutluluk ölçümüdür.
2
2. ÖLÇME DÜZENEĞİ
TÜBİTAK Ulusal Gözlemevi (TUG) Bakırlıtepe Yerleşkesi’ne ait gece/gündüz tüm
gökyüzünü gösteren sayısal kamera sistemi aşağıdaki bileşenlerden oluşmaktadır.
1-Küresel pencereli, izoleli, muhafaza kutusu (Şekil 2.1)
2-CANON EOS5D DSLR Kamera (Şekil 2.2)
3-Peleng 8 mm f3.5 Balık Gözü Mercek (Şekil 2.1 ve Şekil 2.2)
4-Pardus 8.0 İşletim Sistemi
5-Gphoto2 Yazılımı
6-Kamera kontrol, arşivleme ve astronomik hesaplar için yazılmış kabuk betikleri.
Kamera sistemi TUG Bakırlıtepe Yerleşkesi Merkez Bina çatısında, gökyüzüne bakan
yüzünde şeffaf, polyester bir yarıküre bulunan özel bir izolasyonlu kutu içerisinde
çalışmaktadır. Kamera için gerekli enerji ve USB veri kablolaması, çatı ile bilgisayar
sistem odası arasındaki kablo kanalından sağlanmıştır. Kameranın tüm idaresi buradaki
Pardus 8.0 işletim sistemi yüklü bir mini masaüstü bilgisayar ile yapılmaktadır.
Şekil 2.1. TUG tüm gökyüzü kamera sistemi
3
Şekil 2.2. TUG’daki tüm gökyüzü kamera sisteminin bileşenleri
* Muhafaza kutusu, polyester yarıküre pencere, kamera, bağlantı kabloları
Kameraya USB veri yolu üzerinden GPHOTO2 adlı yazılım ile bağlanılmakta ve amaca
uygun olarak yazılan eos5d_main, eos_capture adlı iki kabuk betiği ve astronomik
hesapların yapıldığı zh_gunes.php kodu tarafından kameranın otomatik olarak 7/24/365
çalışması sağlanmaktadır.
Kamera, aşağıda sıralanan özellikler çerçevesinde çalışacak şekilde hazırlanmıştır.
1. Kamera “Manual” modda, balıkgözü mercek ise 3.5 diyafram açıklığında ve sonsuz (∞)
odak ayarında çalıştırılmaktadır.
2. Kamera kendi üzerindeki hafıza kartına her 5 dk.’da bir 4368x2912 piksel
çözünürlüğünde renkli görüntü almaktadır.
3. Alınan görüntü JPG formatında ve %100 kalitede 502x429 piksel çözünürlüğüne
indirilmekte (yaklaşık 35 kb/kare), üzerine yön, tarih ve saat bilgisi yazılarak web
sayfasına ve arşive gönderilmektedir. Bu işlemden sonra kameranın hafıza kartındaki
görüntü silinmektedir.
4. Kamera Güneş’in gökyüzünde olduğu sürece 100 ASA ve 1/2500 sn. poz süresi ile
görüntü almaktadır. Güneş battıktan sonra kararan havaya uyum sağlamak için akşam
4
tanı bitimine kadar poz süreleri her 5 dk.’da bir 3’er adım arttırılarak (1/2500 sn., 1/1250
sn., 1/1000 sn., 1/640 sn.,...) görüntü alınmaktadır. Akşam tanı bitiminde de gece ASA
ayarı ve poz süresine (1600 ASA, 30 sn.) geçilmektedir. Sabah tanı başladığında da işlem
akşam tanının tersine devam etmektedir (20 sn., 13 sn., 8 sn., …). Güneş doğduğunda da
yine gündüz poz süresi ve ASA ayarına geçilmektedir (1/2500 sn., 100 ASA).
5. Çekilen
her
görüntü
aşağıdaki
klasör
ve
isimlendirme
yapısında
arşivlenir.home/webcam/public_html/archive/kamera1/yyyy_mm/yyyymmdd/tug_asc1_yyy
ymmdd_hhmmss.jpg.
Arşive giden görüntülerden her gün öğleyin 12:00’de GIF formatında günlük animasyon
dosyası
oluşturulmakta
ve
web
sayfasında
günlük
animasyonlar
şeklinde
yayınlanmaktadır. Bir günlük animasyon dosyası içerisinde o gün öğleyin 12:00'de
başlayıp ertesi gün öğleyin 12:00’ye kadar olan 5’er dakika ara ile alınmış görüntüler
olmaktadır.
Animasyon
dosyaları
aşağıdaki
klasör
ve
isimlendirme
yapısında
arşivlenmektedir.
/home/webcam/public_html/archive/kamera1/animation/tug_asc1_yyyy-mm-dd-anim.gif
Örnek:
/home/webcam/public_html/ archive/kamera1/animation/tug_asc1_2010_12_20-anim.gif
5
3. GÖRÜNTÜ ANALİZ YÖNTEMLERİ
Yapılan çalışmada bulutluluk analizi gündüz ve gece olmak üzere iki farklı zaman
diliminde yapılmıştır. Gündüz ve gece görüntülerinin analizi için farklı yöntemler
kullanılmıştır. Gündüz bölümündeki çalışmada renkli görüntü işleme uygulanmıştır. Gece
alınan görüntüler ikiye ayrılmış; aydınlık gecelerde, gündüz alınan görüntülerin
analizindekine benzer yöntem, karanlık gecelerde ise; gri seviyede eşik değeri
belirlenerek bulutluluk tespiti yapılmıştır. İlk önce çalışmada kullanılan yöntemler
açıklanacak sonra uygulamaya geçilecektir.
3.1. Renk Uzayları
Farklı modellerdeki renk saklama ortamları için bazı donanım standartları vardır. Bu
standartların hepsinde bir benek üç boyutlu uzayda bir nokta olarak gösterilir. Çünkü
renkmetri biliminin temelini oluşturan Grassmann'ın birinci kanununa göre bir rengi
belirlemek için birbirinden bağımsız üç değişkene gerek vardır (Grassman vd. 1996). Bu
uzayda eksenler renk (kırmızı, yeşil, mavi gibi), parlaklık, doygunluk ve renk tonu olarak
belirlenir. Standart bazı renk uzaylarına örnek olarak RGB, CMY, HSV, HLS, CIE renk
uzayları verilebilir. Bunlardan HSV ve HLS renk uzayları silindirik koordinatlarda, RGB,
CMY ve CIE renk uzayları ise kartezyen koordinatlarda tanımlıdır. Bazı renk uzayları cihaz
bağımlı iken bazıları cihaz bağımsızdır. Cihaz bağımlı renk uzaylarında renkler cihazın
özelliklerine bağlı olarak üretildiği için iki farklı cihaz aynı değerleri farklı yorumlayacaktır.
Cihaz bağımsız renk uzayları ise CIE tarafından standart gözlemci, standart aydınlatıcı
gibi tanımlamalar yapılarak oluşturulmuştur (Smith ve Guild, 1931-1932). Şekil 3.1’de
çeşitli renk uzaylarının bazı özeliklerine göre dağılımı gösterilmiştir.
6
Şekil 3.1. Renk uzayları
3.1.1. RGB renk uzayı
RGB renk uzayı ismini İngilizcedeki 'Red' 'Green' 'Blue' (yani Kırmızı, Yeşil, Mavi)
kelimelerinin baş harflerinden alan
bir renk uzayıdır.
En
sık kullanılan
renk
uzaylarındandır. Işığı temel alarak, doğadaki tüm renklerin kodları bu üç temel renge
referansla belirtilir. Her renk %100 oranında karıştırıldığında beyaz elde edilir. Renk
değerlerinin sıfır olduğu durumda ise siyah renk elde edilir. Şekil 3.2'de kırmızı, yeşil ve
mavi değerleri sırasıyla 80, 200 ve 130 olacak şekilde örnek bir nokta verilmiştir (RGB
Renk uzayı, http://tr.wikipedia.org/wiki/RGB_renk_uzay%C4%B1).
Şekil 3.2. RGB renk uzayını tanımlayan bir şekil
7
3.1.2. HSV renk uzayı
HSV (Hue, Saturation, Value) veya HSB (Hue, Saturation, Brightness) renk uzayı, renkleri
sırasıyla
renk
özü,
doygunluk
ve
parlaklık
olarak
tanımlar
(HSV
renk
uzayı,http://tr.wikipedia.org/wiki/HSV_renk_uzay%C4%B1).
Renk özü rengin baskın dalga boyunu belirler, örneğin sarı, mavi, yeşil, vb.. Sıfır ile 360
arasında açısal bir değerdir. Bazı uygulamalarda ise 0 ile 100 arasında kullanılır.
Doygunluk, rengin canlılığını belirler. Yüksek doygunluk canlı renklere neden olurken,
düşük doygunluk rengin gri tonlarına yaklaşmasına neden olur. 0-100 arasında değişir.
Parlaklık ise rengin aydınlığını yani içindeki beyaz oranını belirler. 0-100 arasında değişir.
HSV renk uzayı Smith (1978) tarafından tanımlanmıştır. Amacı RGB uzayına göre insan
görme düzeneğine daha yakın bir yapı oluşturmaktır. HSV, RGB renk uzayından doğrusal
olmayan bir dönüşüm ile elde edilir. Her ne kadar HSV ve HSB aynı uzayı tanımlasalar da
HSL farklı bir renk uzayıdır. HSV ayrıca aygıt bağımlıdır. Yani bu uzayda tanımlı bir renk,
rengi üreten cihaza göre değişim gösterebilir. Aygıttan bağımsız renk gösterimi için CIE
Lab veya CIE Luv kullanılmalıdır.
Şekil 3.3. HSV renk uzayının konik gösterimi ve silindir biçimli gösterimi
8
HSV uzayı, ilk tanımlandığı zamanlarda konik bir biçime sahipti. Ancak sonraki yıllarda,
gerçek zamanlı geçerli koordinat denetimi için zamanın bilgisayarları yeterli olmadığından
silindir biçimine dönüştürüldü. Açmak gerekirse, konik biçimde, aydınlık düzeyi azaldıkça
koninin genişliği azalır, dolayısıyla, insan görmesine uygun olarak, düşük aydınlıkta
algılanabilen farklı doygunluk düzeyleri de azalırlar. Diğer yandan, silindir biçimi ile sıfır
aydınlık düzeyinde bile yüksek doygunluk düzeyleri tanımlanabilir ve böylece geçersiz
renkler elde edilebilir. Dolayısıyla görüntü işleme uygulamalarında konik biçimi tercih
edilirken, renk seçimi görevlerinde silindir biçimi kullanılma eğilimi vardır.
3.1.3. Lab renk uzayı
CIE Lab renk uzayı parlaklık (L), kırmızı-yeşil (a) ve sarı-mavi (b) bileşenlerinden
oluşmaktadır. Şekil 3.4' de Lab renk uzayı gösterilmiştir.
Şekil 3.4. CIE Lab renk uzayı
3.1.4. CIE XYZ renk uzayı
İnsan gözünde kırmızı, yeşil ve maviye hassas renk algılayıcı hücreler bulunmaktadır. Bu
hücrelerden beyne gelen sinyaller ile ışık şiddetini algılayan diğer hücrelerden gelen
sinyaller beyin tarafından birleştirilir ve bu şekilde değişik renk algılamaları oluşur. XYZ
9
renk uzayındaki X, Y, Z değerlerinin, bu 3 değerin toplamına oranı renkleri tanımlar. X
değerinin X, Y ve Z toplamına oranı kırmızıyı, Y ve Z nin bu toplama oranları ise sırasıyla
mavi ve yeşili temsil eder ve x, y, z olarak gösterilir. X, y ve z değerleri 0 ile 1 arasındadır
ve toplamları 1'dir (Wright, 1928). CIE tarafından 1931 yılında standart aydınlatıcı ve
standart gözlemci tanımlamaları üzerine kurulan CIE XYZ renk uzayının iki boyutlu
gösterimi Şekil 3.5'deki gibidir (Smith ve Guild, 1931-1932).
Şekil 3.5. CIE XYZ renk uzayı
3.2. Dönüşümler
Çalışılan sistemde değişik renk uzaylarından faydalanıldığı için renk uzayları arasında
dönüşümler uygulanmıştır. Bu dönüşümlerin adımları alt bölümler halinde gösterilmiştir.
3.2.1. RGB renk uzayından HSV renk uzayına dönüşüm
Ford ve Roberts (1998) tarafından verilen RGB renk uzayından HSV renk uzayına
dönüşüm adımları aşağıda verilmiştir:
H değeri 0 ile 360 arasında olup S ve V değerleri 0 ve 1 aralığındadır. R, G ve B değerleri
0 ile 1 arasında normalize edilmiştir.
10
HSV değerlerinin hesaplanmasında MAX ve MIN değerleri kullanılır. Bu değerler RGB
uzayındaki R,G ve B üçlüsünün en büyük ve en küçük değeridir.
H değerini hesaplamak için R', G' ve B' değerleri hesaplanır.
=
−
−
3.1
=
−
−
3.2
=
−
−
3.3
Daha sonra H değeri hesaplanır.
= 0ise tanımsızdır
3.4
Değilseveeğer =
=
ise
= 5+
3.5
Değilseveeğer =
≠
ise
= 1− ′
3.6
Değilseveeğer =
=
ise
=
+1
3.7
Değilseveeğer =
≠
ise
= 3− ′
3.8
Değilseveeğer =
Diğerdurumlarda
= 5− ′
= 3+ ′
3.9
3.10
Bulunan H değeri 60 ile çarpılarak 0 ile 360 arasındaki derece cinsinden değer bulunur. S
ve V değerlerinin bulunuşu ise aşağıdaki gibidir.
= 0ise = 0
3.11
Diğerdurumlarda = 1 −
3.12
V değeri ise aşağıdaki gibidir:
=
3.13
11
3.2.2. RGB renk uzayından Lab renk uzayına dönüşüm
RGB renk uzayından Lab renk uzayına doğrudan çevirim iki aşamada yapılmaktadır.
3.2.2.1. RGB renk uzayından XYZ renk uzayına dönüşüm
İlk önce R G ve B değerleri 0 ile 1 arasında değer alacak şekilde normalize edilir. Değerler
8 bitlik bir görüntü için 255'e bölünür.
=
=
=
3.14
255
3.15
255
3.16
255
CIE 1931 standartlarında lineer R, G ve B değerlerinden X, Y ve Z değerlerini elde etmek
için gereken dönüşüm katsayıları verilmiştir (Smith ve Guild, 1931-1932). Ancak, insan
görme sistemine uygun olarak bant genişliğini maksimum verimle kullanmak için
görüntülere gama düzeltmesi uygulanmaktadır (Charles, 2003). Lineer olmayan bu
dağılımı lineer hale getirmek için aşağıdaki dönüşümler uygulanır.
.
.
varR=
⁄12.92
.
varG=
> 0.4045
3.17
, değilse
.
.
, eğer
⁄12.92
.
VarB=
, eğer
.
.
.
⁄12.92
> 0.4045
3.18
, değilse
, eğer
> 0.4045
3.19
, değilse
12
Lineer değerler elde edildikten sonra CIE standartlarına göre 2 derecelik açıyla görüş ve
D65 aydınlatıcısına göre elde edilmiş olan katsayılar kullanılarak X, Y ve Z değerleri elde
edilir.
0.4124
= 0.2126
0.0193
0.3576
0.7152
0.1192
0.1805
0.0722
0.9505
3.20
3.2.2.2. XYZ renk uzayından Lab renk uzayına dönüşüm
İlk önce CIE standartlarına 2 derecelik görüş ve D65 aydınlatıcısına göre elde edilmiş
beyaz nokta değerleri ile X,Y ve Z değerleri normalize edilir.
varZ=
3.21
varY=
3.22
varZ=
3.23
Denklem 3.21, 3.22 ve 3.23’de kullanılan referans değerleri sırasıyla 95.047, 100 ve
108.883’dür.
Daha sonra L, a b değerleri hesaplanır (Ford ve Roberts, 1998).
varX=
varY=
varZ=
(
(
)( )
, eğer
> 0.008856
∗ 7.787) + (16⁄116)
, değilse
3.24
(
(
)( )
, eğer
> 0.008856
∗ 7.787) + (16⁄116)
, değilse
3.25
(
(
)( )
, eğer
> 0.008856
∗ 7.787) + (16⁄116)
, değilse
3.26
13
L=(116 ∗
) − 16
a=500 ∗ (
−
)
3.28
b=200 ∗ (
−
)
3.29
3.27
3.3. Çalışma Alanı (maskeleme)
Tüm gökyüzü kamerasından alınan görüntülerde Şekil 3.7'de görüldüğü üzere görüntünün
bir kısmı yeryüzü, ufuk ve kameranın kapattığı bölümden oluşmaktadır. Çalışma alanının
alınan görüntünün tamamını kapsamamasından dolayı, her görüntü için Şekil 3.8'deki gibi
bir maskeleme sistemi oluşturulmuştur. Karanlık gecede bulutluluk analizinde çalışma
alanının küçültülmesi gerektiğinden, maskeleme görüntüsü biraz daha değişik olacaktır.
Analiz için yapılan yazılım bu maskeleme dosyasını alarak siyah beyaz bir ikili formata
çevirmektedir. Beyaz bölgede kalan koordinatlar indeks olarak alınmış ve görüntü analizi
bu bölgede yapılmıştır. Oluşturulan maskeleme dosyası istenildiğinde değiştirilerek
çalışma alanının daha esnek olması sağlanmıştır.
Şekil 3.6. Örnek tüm gökyüzü kamerası görüntüsü ve örnek maskeleme görüntüsü
14
Şekil 3.7. Maskeleme sisteminde kullanılan görüntü
3.4. Bağlantılı Bileşen Etiketleme Yöntemi
İkili seviyedeki bir görüntüde sıfır değerine sahip olan pikseller arka plan, bir değerine
sahip olan pikseller ise görüntüdeki nesneler olarak ele alınır. Bu nesnelerin şekillerini,
boyutlarını belirlemek için kullanılan yöntemlerden birisi bağlantılı bileşen etiketleme
yöntemidir. Bu yöntemde pikseller, komşuluklarına bakılarak taranır ve birbirine bağlantılı
olan pikseller aynı numara ile etiketlenir. Bağlantılı bileşen etiketleme yönteminin
algoritması aşağıdaki adımlardan oluşmaktadır (Sonka vd., 2008a).
Görüntü pikselleri üzerinden soldan sağa ve yukarıdan aşağıya iki defa tarama yapılır. İlk
taramada arka plana ait olmayan piksellere 1'den başlayarak etiket numarası verilir. Etiket
numarası verilecek pikselin komşulukları kontrol edilir. Eğer komşuluğundaki tüm pikseller
arka plana ait ise etiket numarası bir arttırılır. Eğer komşuluğunda sadece bir tek etiket
numarasına ait piksel varsa, bu etiket numarası incelenen piksele de verilir. U şeklindeki
ya da ters E şeklindeki bileşenlerin bazı piksellerinde komşuluğa bakıldığında birden fazla
sayıda etiket numarası görülür. Bu durumda pikseller bu etiket numaralarından birisi ile
etiketlenir. Bu etiket numaraları eşit etiket çiftleri olarak başka bir veri yapısında depolanır.
İkinci taramada bütün pikseller tekrar taranarak eşit etiket olarak veri yapısında tutulan
etiket numaraları, küçük olanın numarasıyla değiştirilir. Böylece bütün komşu pikseller
aynı numara ile etiketlenmiş olur.
15
3.5 Morfolojik İşlemler
Matematiksel morfoloji teorisi, nonlineer operatörlerle nesne şekilleri üzerinde işlem
yapmaya dayanır. Önindirgeme, nesne şekline göre bölütleme, nesne miktarı belirleme
gibi birçok uygulamada hızlı ve başarılı çözümler üretebilmektedir (Sonka vd., 2008b).
Operatörler görüntü işlemede iki parça veri kümesi ile kullanılırlar.
1- Operatörün uygulanacağı görüntü
2- Yapılandırma elemanı: Görüntüde dolaşan piksel grubudur. Yapılandırma elemanları
farklı şekillerde ve büyüklükte olabilmektedir. Bunların bir merkez noktası bulunmakta
olup, bu nokta işlenecek resmin her bir pikseli üzerinde gezdirilerek işlem yapılmaktadır.
En çok kullanılan morfolojik operatörler şunlardır:
1- Genleşme (Dilation)
2- Aşınma (Erosion)
3- Açınım (Opening)
4- Kapanım (Closing)
Matematiksel morfoloji, görüntünün şekilsel yapısına dayanan kümeler teorisi üzerine
kurulmuş bir yaklaşımdır. Matematiksel morfoloji teorisinin temelleri ilk olarak Georges
Matheron ve Jean Serra tarafından 1980’li yıllarda atılmıştır (Serra vd.,1982, 1988). Bu
metodun temelinde iki morfolojik operatör olan aşınma ve genleşme yatmaktadır. Sayısal
işaretler için aşınma işlemi, bir Minkowski küme çıkarma işlemi, genleşme işlemi ise
Minkowski küme toplama işlemidir. Aşınma işlemi kümeler cebirinde kesişim işlemine,
genleşme işlemi ise kümeler cebirinde birleşim işlemine denk düşmektedir. Bu işlemler
Serra (1988) tarafından ikili olmayan işaretlere de genişletilmiştir.
Temel
ikili
morfolojik
işlemlerin
matematiksel
tanımlanmaktadır:
16
ifadeleri
aşağıdaki
denklemlerle
X⊕B={pϵZ2 :p=x+b, xϵX, bϵB}
XϴB={ pϵZ2 :p+bϵX,ᴠbϵB}
genleşme
3.30
aşınma
3.31
XoB=(XϴB)⊕B
açınım
3.32
X•B=(X⊕B)ϴB
kapanım
3.33
Yukarıdaki denklemlerde X Görüntü, B Yapı elemanı, x X'in elamanı,b B'nin elemanıdır.
3.5.1. Genleşme işlemi
Görüntüdeki bir nesneyi büyütmeye ya da kalınlaştırmaya yarayan morfolojik işlemdir.
Sayısal bir görüntüyü genişletmek onu yapısal elemanla kesiştiği bölümler kadar
büyütmektir. Görüntünün her bir pikseli, yapısal elemanın merkez noktasına oturtularak
genleşme işlemi yapılmaktadır. Kalınlaştırma işleminin nasıl yapılacağını yapısal eleman
belirler. Genleşme işlemi uygulanan görüntüde, görüntü içerisindeki deliklerin ve
boşlukların doldurulması ve köşe noktasının yumuşaması gözlenir (Gonzalez vd., 2003).
3.5.2. Aşınma işlemi
Görüntüdeki nesneyi küçültmeye ya da inceltmeye yarayan morfolojik işlemdir. Bu işlem
tam olarak olmasa da bir bakıma genleşme işleminin tersi gibi düşünülebilir. Görüntüdeki
nesneler ufalır, delik kısım genişler, birbirine bağlı nesneler ayrılma eğilimi gösterir
(Gonzalez vd. 2003).
3.5.3. Açınım işlemi
Temel olarak aşınma işlemini takip eden genleşme işlemidir. Görüntüdeki nesnenin
çevresini yumuşatır ve ince çıkıntıları yok eder. Nesneler orijinal görüntüdeki nesneye
göre biraz küçülmüş olur. Görüntü içerisindeki nesneler ve nesne içerisindeki boşluklar
yapısal elemanın büyüklüğüne göre temizlenir. Birbirine yakın nesneler birbirinden
ayrılmış olur (Karhan vd., 2011).
17
3.5.4. Kapanım işlemi
Temel olarak genleşme operatörünü takip eden aşınma operatörüdür. Açınım işlemindeki
gibi görüntüdeki nesnenin çevresini yumuşatır ama ince boşlukları doldurarak nesnedeki
delikleri kapatır. Nesneler orijinal görüntüdekine göre büyür ve birbirine yakın nesneler
bağlanmış olur (Karhan vd., 2011).
3.5.5. Yapılandırma elemanı
Yapılandırma elemanı; görüntü üzerinde yapacağımız işleme ve yapmak istediğimiz
uygulamaya göre istenilen boyutlarda ve istenilen şekilde hazırlanmış küçük ikili seviyede
bir görüntüdür. Yapılandırma elemanı farklı geometrik şekillerden herhangi biri olabilir. En
çok kullanılanları kare, dikdörtgen ve dairedir. Şekil 3.8’de yapılandırma elemanına
örnekler verilmiştir.
Şekil 3.8. Örnek yapılandırma elemanları
3.5.6. Gri seviyede morfolojik işlemler
İlk başlarda ikili seviyede kullanılan morfolojik operatörler, minimum ve maksimum
işlemleri kullanılarak gri seviyede de uygulanabilmektedir. Aşınma işleminde her piksele
komşuluğundaki minimum piksel değeri verilir. Genleşmede ise maksimum piksel değeri
verilir.
18
3.6. K-means Yöntemi
Mac Queen (1967) tarafından bulunan K-means algoritması, kümeleme problemini çözen
en
basit
denetimsiz
öğrenme
algoritmalarından
biridir.
Bölümleyici
kümeleme
tekniklerinden olan K-means, bilimsel ve endüstriyel uygulamalarda yaygın olarak
kullanılmasının yanında görüntü bölütlemede de çok kullanılan kümeleme algoritmaları
arasında yer almaktadır. Benzer özellik taşıyan veri elemanlarının kendi aralarında
gruplara ayrılması işlemi kümelemedir.
K-means algoritmasının genel mantığı, n adet veri nesnesinden oluşan bir veri kümesini
(X), giriş parametresi olarak verilen k (k ≤ n) adet kümeye bölmektir. Amaç,
gerçekleştirilen bölme işlemi sonunda elde edilen kümelerin; küme içi benzerliklerinin en
büyük ve kümeler arası benzerliklerinin en küçük olmasını sağlamaktır.
K-means kümeleme yönteminin değerlendirilmesinde nesnelerin bulundukları kümelerin
merkez noktalarına uzaklıkları hesaplanır. Bu uzaklığın hesaplanmasında Öklid uzaklığı,
Manhattan uzaklığı, Chebyshev uzaklığı gibi farklı formüller kullanılmaktadır. K-means
kümeleme yönteminin değerlendirilmesinde en yaygın olarak Öklid uzaklığın karesi
kullanılır. Yapılan çalışmada da bu kriter kullanılmıştır. En düşük Öklid uzaklığı karesi
değerine sahip kümeleme en iyi sonucu verir. Nesnelerin bulundukları kümelerin merkez
noktalarına olan uzaklıklarının karelerinin toplamı Denklem 3.34 ile hesaplanmaktadır
(Aloise vd, 2009).
Ö
(
, )
3.34 denkleminde k küme sayısı,
3.34
kümenin merkezi,
veri kümesi, x ise küme
elemanıdır.
Bu kriterleme sonucu, k tane kümenin olabildiğince yoğun ve birbirinden ayrı
sonuçlanması hedeflenmeye çalışılır. Algoritma, Öklid uzaklığı kareleri toplamını
azaltacak k parçayı belirlemeye gayret eder. K-means algoritması, algoritmaya kullanıcı
19
tarafından verilen k parametresi ile n tane veriden oluşan veri setini k adet kümeye böler.
Küme benzerliği kümedeki nesnelerin ortalama değeri ile ölçülür, bu da kümenin ağırlık
merkezidir (Xu ve Wunsch (2005)).
3.6.1. K-means yönteminin adımları
K-means adımları aşağıda açıklanmıştır:
a) İlk önce küme merkezleri (kırmızı noktalar) belirlenir. Bunun için iki farklı yöntem
kullanılabilir. İlk yöntemde nesneler arasından küme sayısı olan k adet rastgele nokta
seçilmesidir. İkinci yöntem ise merkez noktaların tüm nesnelerin ortalaması alınarak
belirlenmesidir.
b) Test kümesindeki her verinin seçilen merkez noktalara yakınlığı Öklit uzaklığı
yöntemiyle hesaplanır.
c) Her veri kendine en yakın merkez noktanın olduğu kümeye dahil edilir.
d) Oluşan kümelerin merkez noktaları o kümedeki tüm nesnelerin ortalama değerleri ile
değiştirilir.
e) Kümeleme işlemi yeni merkez noktasına göre tekrar yapılır.
Merkez noktalar değişmeyene kadar b, c, d ve e adımları tekrarlanır.
Algoritmanın performansını etkileyen kriterler; k küme sayısı, başlangıç olarak seçilen
küme merkezlerinin değerleri ve benzerlik ölçümüdür.
K-means yönteminin adımları Şekil 3.9'da verilmiştir.
CIE Lab renk uzayı RGB renk uzayına göre görsel açıdan daha düzgün değişim gösterdiği
için mesafeye bağlı kümeleme algoritmasında işlem sonucu CIE Lab renk uzayında daha
başarılı olmaktadır.
20
3.7. Otsu Metodu
Gri seviyede bir görüntüyü ikili biçime çevirmek için izlenecek yöntemde, bir eşik değeri
belirlenir ve bu eşik değerin üzerindeki renkler beyaza, altındaki renkler siyaha
dönüştürülür. Ancak tüm görüntüler için sabit bir eşik değeri kullanılırsa, görüntüler
üzerinde kabul edilebilir sonuçlar almak mümkün olmayacaktır. Eşik değerin, resmin renk
dağılımına uygun olarak belirlenmesini sağlayacak bir yöntem Otsu (1979) metodudur.
Otsu metodu gri seviye görüntüler üzerinde çalışır ve sadece yoğunluk değerlerinin
görüntü üzerinde kaçar defa bulunduğuna bakar. Bu yüzden önce görüntünün renk
histogramı hesaplanır. Daha sonra yapılan bütün işlemler histogram dizisi üzerinde
gerçekleştirilir.
Şekil 3.9. K-means adımları
*Kırmızı noktalar kümelerin ağırlık merkezini, yeşil ve sarı noktalar ise küme elemanlarını göstermektedir.
21
3.7.1. Varyans
Varyans belli bir sayı dizisinin dizinin aritmetik ortalaması etrafındaki dağılımının
yorumlanabilmesini sağlayan bir ölçüdür. Varyansın büyük olması, değerlerin dağınık ve
kendi ortalamalarından uzak olduklarını, küçük olması ise değerlerin kendi ortalamaları
etrafında çok dağılmadıklarını gösterir. Varyans formülü aşağıdaki eşitlikte verilmiştir.
=
(
− ̅ ) Pr( )
Denklem 3.35’de
̅
3.35
X kümesinin elemanı, Pr( ) olasılık
ağırlıklı ortalama,
fonksiyonudur.
Görüntü üzerinde bir renk değerinin olasılığı bu değerin resimdeki sayısının, toplam piksel
sayısına bölümüdür.
3.7.2. Otsu metodu ve algoritması
Otsu metodunda, sınıf içi varyansı minimuma indiren eşik değeri aranmaktadır. Bu değer
aşağıdaki gibi hesaplanmaktadır.
(
)=
Denklem 3.36'da
(
(
)
ve
)+
( )
( )
3.36
t eşik değeri ile ayrılan sınıfların ağırlık değerleri, oluşan sınıfların varyanslarıdır.
Şekil 3.10'da gri seviyede örnek bir görüntü ve histogramı verilmiştir.
22
ve
,
Şekil 3.10. Örnek gri seviye görüntü ve histogramı
Bu görüntü 36 piksellik bir gri seviyede görüntüdür ve yoğunluk değeri 0 ile 5 arasında
değişmektedir. Eşik değeri 3 olan bu görüntü için arka plan histogramı Şekil 3.11’de
gösterilmiştir.
Şekil 3.11 Örnek görüntünün arka plan histogramı
Şekil 3.11'deki histogram için ağırlık, ortalama ve varyans değerleri sırasıyla
=
8+7+2
= 0.4722
36
3.37
=
(0 8) + (1 7) + (2 2)
= 0.6471
17
3.38
=
((0 − 0.6471)
17
8)
+
((0 − 0.6471)
17
7)
+
olarak hesaplanır.
23
((0 − 0.6471)
17
2)
= 0.4627
3.39
Şekil 3.12. Örnek görüntünün ön plan histogramı
Şekil 3.12'de verilen ön plan histogramı için de aynı değerler hesaplanır.
=
6+9+4
= 0.5278
36
3.40
=
(3 6) + (4 9) + (5 4)
= 3.8947
19
3.41
=
((3 − 3.8947)
19
6)
+
((4 − 3.8947)
19
9)
+
((5 − 3.8947)
19
4)
= 0.5152
3.42
Sınıf içi varyans daha önceden verilmiş olan formülle hesaplandığında aşağıdaki sonuç
elde edilir:
(
)=
(
)
(
)+
(
)
(
) = 0.4722 0.4637 + 0.5278 0.5152 = 0.4909
3.43
Yukarıda anlatılan işlemler tüm yoğunluk değerleri için hesaplanır ve en küçük sınıf içi
varyans değerini veren eşik değeri bölütleme işleminde kullanılır. Örnek görüntünün
bulunan eşik değerine göre bölütlenmiş hali Şekil 3.13'deki gibidir.
24
Şekil 3.13. Bölütlenmiş görüntü
Sınıf içi varyans değeri minimum iken, sınıflar arası varyans değeri maksimum olur.
Sınıflar arası varyansın formülü aşağıda verilmiştir:
(
)=
−
Denklem 3.44'de (
)=
( )
(t)(
(
) − ( ))
3.44
arka plan görüntü için varyans değeri plan ve ön plan görüntü için ortalama değerleri
ve
ve sırasıyla
arka
ise sırasıyla arka plan ve ön
plan görüntü için ağırlık değerleridir.
Denklem 3.44 sınıfların olasılıkları ve ağırlıkları cinsinden sınıflar arası varyans formunu
vermiştir. Bu ifade sınıf içi varyansların hesaplanmasına göre daha az işlem gerektirir.
Dolayısıyla efektif bir algoritma olarak kullanılabilir.
Otsu metodunun uygulanışının algoritması aşağıda verilmiştir.
1. Histogram ve her yoğunluk düzeyi için olasılık hesaplanır.
2. Başlangıç ωi(0) ve μi(0) değerleri hesaplanır.
3. Eşik değeri bir'den başlayarak maksimum yoğunluğa kadar
a- ωi ve μi değerleri hesaplanır.
b- Sınıflar arası varyans değeri hesaplanır.
4. Maksimum sınıf içi eşik değerini veren eşik değeri aranılan değerdir.
Şekil 3.13’de Otsu algoritmasının akış diyagramı verilmiştir.
25
4. UYGULAMA VE SONUÇLAR
4.1. Gündüz Alınan Görüntülerde Bulutluluk Analizi
Havanın açık olduğu durumda, Rayleigh dağılımına göre gaz molekülleri tarafından mavi
ışık kırmızı ışığa göre daha fazla saçılmaktadır (Chakraborti, 2007). Bu yüzden insan
gözü hava açık olduğu zaman gökyüzünü mavi görmektedir. Bulutlar ise mavi ve
kırmızının birbirine yakın düzeyde saçılmasını sağlar. Bu durum bulutların gri renkte
görünmesine sebep olur (Petty vd., 2006). Bundan dolayı bulut tespiti yaparken mavinin
kırmızıya oranı ya da mavi kırmızı değer farkı için eşik değeri belirlenmeye çalışılmıştır
(Pfister vd., 2003) (Heinle vd., 2010). Yapılan çalışmada ise k-means kümeleme yöntemi
ile görüntü bölütleme işlemi ile bulutlu ve açık gökyüzü ayırt edilmeye çalışılmıştır. Parçalı
bulutlu görüntülerde yüksek oranda başarı elde edilmesine karşın, tam bulutlu ya da bazı
tam açık görüntülerde istenilen sonuç alınamamıştır. Bu yüzden renk uzayı değerlerinden
faydalanılarak görüntüler iki gruba ayrılmıştır. Gündüz görüntülerinin analizinde RGB,
HSV, Lab gibi farklı renk uzayları ile çalışılmıştır.
26
Şekil 3.13. Otsu algoritmasının akış diyagramı
4.1.1. Güneş'in tespiti
Örnek bir görüntü üzerinde HSV renk dağılımına bakıldığı zaman parlaklık değerinin
200'den büyük ve doygunluk değerinin 10'dan küçük olduğu bölüm Güneş olarak
alınmıştır (Roy vd., 2008). Şekil 4.1’deki örnek görüntünün piksellerinin HSV renk
uzayındaki dağılımı Şekil 4.2'de gösterilmiştir. Pikseller gökyüzü, bulut, ve güneş pikselleri
olarak gösterilmiştir.
27
Belirlenen parlaklık ve doygunluk değerleriyle Güneş tespit edildiğinde görüntüdeki diğer
bazı piksellerin de Güneş'e aitmiş gibi algılandığı görülmüştür (Şekil 4.3). Bu pikselleri yok
etmek ve aynı zamanda bulunacak güneş piksellerindeki çıkıntıları yok edebilmek için
aşınma işlemi uygulanmıştır (Şekil 4. 4). Bu işlemle bütün parçacıklar kaldırılamadığından
bağlantılı bileşenler etiketleme yöntemi yardımıyla görüntüdeki en büyük nesne güneş
olarak kabul edilmiştir (Şekil 4.5). Son olarak Şekil 4.5'deki nesnedeki boşluğu doldurmak
için morfolojik operatörlerden faydalanılarak Şekil 4.6'daki görüntü elde edilmiştir. İkili
seviyedeki görüntü kullanılarak orijinal görüntüde Güneş işaretlenmiştir (Şekil 4.7).
Şekil 4.1. Örnek tüm gökyüzü kamera görüntüsü ve bu görüntünün piksellerinin HSV uzayında
dağılımı
Şekil 4.2. Şekil 4.1'deki görüntünün piksellerinin HSV uzayında dağılımı
28
Şekil 4.3. Şekil 4.1’den HSV uzayında Güneş tespit edilen pikseller
Şekil 4.4 Şekil 4.3’e aşınma işlemi uygulanarak elde edilen görüntü
29
Şekil 4.5. Şekil 4.4’deki görüntünün en büyük nesnesini gösteren görüntü
Şekil 4.6. Şekil 4.5’deki nesnenin boşlukları doldurularak elde edilen görüntü
30
Şekil 4.7. Güneş işaretli görüntü
4.1.2. K-means kümeleme yöntemi ile bulutluluk tespiti
K-means yöntemi ile yapılan bulutluluk tespitinde parçalı bulutlu görüntülerde bulutların
yüksek oranda doğrulukla tespit edildiği görülmüştür (Şekil 4.8). Görüntünün çalışma alanı
içerisindeki piksellerinin Lab uzayındaki a ve b değerleri hesaplanmıştır. Bulunan a ve b
değerleri k-means kümeleme işlemi ile ikiye ayrılarak bulutlu ve açık gökyüzü elde
edilmiştir.
Şekil 4.8. K-means kümeleme yöntemine örnek görüntü
31
4.1.3 RGB uzayı kullanılarak bulut tespiti
K-means kümeleme yöntemi rengi iki farklı sınıfa ayırmaya çalışmaktadır. Bu yöntem Lab
renk uzayında mavi rengi ayırırken başarılı olmaktadır. Görüntünün karlı ya da bulutlu
havalarda tamamen beyaza yakın bir görünümde olmasından dolayı bu tip görüntülerde kmeans kümeleme yöntemi ile istenilen sonuçlar alınamamıştır. Bu tip görüntülerde RGB
renk uzayında R değeri ile B değerinin arasındaki fark bir eşik değeri ile ayrılarak
bulutluluk tespiti yapılmıştır. Eşik değeri olarak 20 alınmıştır. Aynı şekilde gün batımında
da gökyüzündeki mavi rengin değişiminden dolayı k-means yöntemi ile istenilen sonuç
alınamamıştır. RGB uzayında daha iyi sonuç elde edilmiştir. Şekil 4.9'da RGB renk
uzayında analiz yapılarak bulutluluk tespitine bir örnek verilmiştir.
Şekil 4.9. R-B yöntemine örnek görüntü ve bunun bulut işaretli durumu
4.1.4. İki yöntemden uygun olanın seçilmesi
Kullanılan iki yöntem farklı durumlarda birbirlerine göre farklı oranlarda başarı göstermiştir.
Bu yüzden iki durumu ayırt edecek bir algoritma geliştirilmeye çalışılmıştır. Bu algoritma
için de renk uzaylarından faydalanılmıştır. Tam bulutlu ya da çok yüksek oranda bulutlu
durumlarda HSV uzayında, çalışma alanındaki piksellerin ortalama doygunluk değerinin,
rengin gri tonlara yaklaşmasından dolayı çok küçük çıktığı tespit edilmiştir. Bu yüzden
ortalama doygunluk (S) değeri 10.5’in altında olan görüntüler RGB renk uzayı kullanılarak
32
analiz edilmiştir. Gün batımında alınan görüntülerde de RGB renk uzayı kullanıldığında
daha başarılı sonuç elde edilmiştir. Bu durum için de LAB renk uzayında, çalışma
alanındaki piksellerin ortalama L (parlaklık) değerinin 80’in altında olduğu görüntüler RGB
renk uzayı altında analiz edilmiştir. Tablo 4.1 kullanılarak gündüzün farklı zamanlarında
değişik bulut yoğunluklarında kullanılacak yöntem seçilmiştir.
Tablo 4.1. Gündüz alınan görüntülerin analizinde kullanılan yöntem seçim tablosu
KRİTER
UYGULAMA
Ortalama S değeri < 10.5
RGB renk uzayında eşik değeri kullanımı
Ortalama L değeri < 80
RGB renk uzayında eşik değeri kullanımı
Diğer durumlar
K-means Yöntemi
4.2. Gece Alınan Görüntülerde Bulutluluk Analizi
Gece alınan görüntülerin analizinde de iki yöntem denenmiştir. Birincisi gri seviyede
analiz, diğeri ise k-means yöntemi ile analizdir. Ay'ın konumu ve parlaklığı, gri seviyede
çalışıldığında görüntüye gri seviyede etki edebileceği için analizi çok fazla etkilemektedir.
Ay'ın ortamı belirli bir seviyeden fazla aydınlattığı durumda “k-means” kümeleme yöntemi
kullanılmıştır. Gri seviyede çalışırken batı tarafından şehir ışıklarının etkisi ve Ay'ın
konumuna göre batı ve doğudan gelen ışık görüntünün sağ ve sol taraflarını
aydınlatmaktadır.
Bu
etkiyi
minimuma
indirebilmek
için
maskeleme
görüntüsü
değiştirilerek çalışma alanı biraz küçültülmüştür. Gri seviyedeki görüntüden bulutluluk
analizi yapılırken ilk önce görüntü tam açık ya da kapalı olarak ikiye ayrılmaya
çalışılmıştır. Bu ayrımı yapmak için gri seviyeden ikili seviyeye geçiş işlemi yapılarak
görüntüde oluşan ayrışık küçük nesnelerin sayısına bakılmıştır. Bu sayının 40'dan küçük
olması durumunda görüntü tam kapalı gökyüzü, 100'ün üzerinde olması durumunda ise
tam açık gökyüzü olarak değerlendirilmiştir. Diğer durumda ise bulutlu kısım tespit
edilmeye çalışılmıştır. Bu işlemi yapmak için eşik değeri belirlenmesi gerekmektedir.
Ortamdaki yıldızlar bu eşik değerinin belirlenmesine etki edeceği için ilk önce yıldızlar
görüntüden
kaldırılmaya
çalışılmıştır
ve
bunun
için
morfolojik
operatörlerden
faydalanılmıştır. Bu iş için açınım operatörü kullanılmıştır. Daha sonra otomatik eşik
33
değeri belirlemek için Otsu metodu kullanılarak eşik değeri belirlenmiş ve ikili seviyedeki
görüntü elde edilmiştir.
4.2.1. Karanlık gecede bulutluluk analizi
Karanlık gecede ortam yeterince aydınlanmadığından renklerden faydalanılamamaktadır.
Bu yüzden bulutluluk analizi görüntünün gri seviyedeki değerleri kullanılarak yapılmıştır.
İlk önce görüntü tam açık gökyüzü ya da tam kapalı olarak ayrılmaya çalışılmıştır. Bunun
için görüntünün RGB uzayındaki kırmızı bileşeni alınmıştır. Kırmızı bileşen daha sonra
Otsu metodu ile ikili seviyeye çevrilmiştir (Şekil 4.10). İkili seviyedeki bu görüntüde
bağlantılı bileşenler analizi uygulanmış ve toplam piksel sayısı 4 ile 12 arasındaki
nesnelerin sayısı bulunmuştur. Bu sayı 40 dan küçük ise görüntü tam kapalı gökyüzü, 100
den büyük ise görüntü tam açık gökyüzü olarak değerlendirilmiştir. Diğer durumda ise
görüntü üzerinde bulut belirlenmeye çalışılmıştır.
Şekil 4.10 Açık gecede yıldızların etkisi
Tam açık ya da tam kapalı gökyüzü olarak değerlendirilmeyen görüntülerde ilk olarak
orijinal görüntünün R bileşeni alınmıştır. Şekil 4.11 ve 4.12'de sırasıyla orijinal görüntü ve
görüntünün R bileşeni görülmektedir.
34
Şekil 4.11. Orijinal görüntü
Şekil 4.12. Şekil 4.11’deki görüntünün R bileşeni
R bileşeni üzerinde Otsu metodu ile bulutları tespit edebilmek için açınım işlemi
yapılmıştır. (Şekil 4.13). Yani önce aşınma sonra genleşme işlemi yapılır. Her ne kadar
görüntü orijinal halini kaybetse de orijinal görüntüye yakın bir şekilde bir sonraki adımı
etkileyecek yıldız etkisi yok edilmeye çalışılmıştır. Şekil 4.13 üzerinde Otsu metodu
uygulanarak bulutlu ve açık bölge şeklinde görüntü ikiye ayrılmıştır. İşaretlenen bulutlar
Şekil 4.14'de görülmektedir. Karanlık gecede yapılan analizlerde batıdaki şehir ışıkları ve
doğuda ve batıda oluşabilecek Ay ışığı eşik belirleme işlemini çok etkileyeceğinden
maskeleme görüntüsü doğu ve batı tarafını daraltacak şekilde ayarlanmıştır.
35
Şekil 4.13. Şekil 4.12’ye açınım işlemi uygulanarak elde edilen görüntü
Şekil 4.14. Şekil 4.11’deki görüntünün bulut işaretli durumu
36
4.2.2 Aydınlık gecede bulutluluk analizi
4.2.2.1 Ay'ın tespiti
Yapılan çalışmada Ay’ın gökyüzündeki yeri tespit edilmiştir. Bunun için RGB renk
uzayında B değerlerinin 200'den büyük olduğu değerler Ay olarak işaretlenmiştir. Güneş'in
tespitinde olduğu gibi Ay tespitinde de morfolojik operatörlerden faydalanılmıştır. Verilen
örnekte B bileşeni ile belirlenen parça, tek parça halinde ve içerisinde boşluklar
olmayacak şekilde çıktığından morfolojik operatörlerle yapılan işlem Ay tespitini
değiştirmemiştir (Şekil 4.15). Bu yüzden bu adımlar gösterilmemiştir. Ay’ın ortamı çok
fazla aydınlattığı durumlarda B değerlerinin 200'den büyük olduğu değerler ekranın büyük
bir kısmını kapsadığından dolayı B değerinin 250'den büyük olduğu değerler Ay olarak
hesaplanmıştır. Bunun için de görüntünün piksellerinin Lab uzayında ortalama L değeri
alınmış ve bu değerin 150'den büyük olduğu durumlarda eşik değeri 250 olarak
belirlenmiştir.
Şekil 4.15. Orijinal görüntü ve bunun Ay tespit edilmiş hali
37
4.2.2.2. K-means kümeleme yöntemi ile bulutluluk tespiti
Ay'ın ortamı çok aydınlattığı gecelerde alınan görüntülerin analizinde k-means yöntemi
kullanıldığında iyi sonuç alınmıştır. Şekil 4.16'da örnek bir görüntü ve k-means ile
belirlenen bulutlar görülmektedir.
Şekil 4.16. K-means yöntemine örnek görüntü
4.2.2.3. Gece alınan görüntülerde uygun yöntemin seçilmesi
Gece alınan görüntülerde, görüntü ilk önce aydınlık ve karanlık olarak ikiye ayrılmıştır.
Karanlık görüntülerde gri seviyede analiz, aydınlık görüntülerde ise renkli uzayda analiz
yapılmıştır. İki farklı analiz yönteminden hangisinin kullanılacağını belirlemek için HSV
uzayında çalışma alanının ortalama V değerine bakılmıştır. Karanlık gecelerde görüntü ilk
önce tam kapalı gökyüzü ve tam açık gökyüzü olarak ayrılmaya çalışılmıştır. Bunun için
görüntüdeki yıldızların etkisiyle oluşacak küçük nesnelerin sayısına bakılmıştır. Tam
kapalı ya da tam açık gökyüzü görüntüsü olarak belirlenemeyen görüntülerde Otsu
metodu kullanılarak bulutlu bölge belirlenmeye çalışılmıştır. Tablo 4.2'de uygulanan kriter
ve yöntem gösterilmiştir.
38
Tablo 4.2. Gece alınan görüntülerin analizinde kullanılan yöntem seçim tablosu
KRİTER
YÖNTEM
Küçük parçacık sayısı > 40 ve
küçük parçacık sayısı < 100 ve
Gri seviyede analiz
Ortalama V değeri <= 11
Ortalama V değeri > 11
K-means yöntemi
4.3. Bulutluluk Oranı Hesabı
Bulutluluk oranı çalışılan görüntüde bulut tespit edilmiş piksel sayısının, görüntünün
çalışma alanındaki toplam piksel sayısından Güneş ya da Ay olarak tespit edilen piksel
sayısının çıkartılması ile elde edilen sayıya oranı olarak hesaplanmıştır.
− ü
4.1
ş
Denklem 3.45'de bulut, toplam bulutlu piksel sayısı, toplam, çalışma alanındaki toplam
piksel sayısı, güneşyadaAy ise Gündüz Güneş gece ise Ay olarak tespit edilen piksel
sayısıdır.
39
5. TARTIŞMA VE ÖNERİLER
Bu çalışmada TUG'da kullanılmakta olan tüm gökyüzü kamera sisteminin görüntüleri
kullanılarak bulutluluk analizi yapılması üzerine çalışılmıştır. Kamera sisteminin hava
şartları dolayısıyla buğulanması, kırmızılaşması gibi durumlar ve kamera üzerindeki kar ve
yağmur etkileri çalışma dışında tutulmuştur. Önceki bölümlerde anlatılan yöntemleri
kullanan bir yazılım yapılmıştır. Bu yazılım TUG'da lisanslı olarak kullanılmakta olan IDL
ile geliştirilmiştir. Yazılım kodları Ekler bölümünde verilmiştir. Bu yazılımla yapılan
analizlerle ilgili örnekler Şekil 5.1, 5.2, 5.3 ve 5.4'de görülmektedir. Şekil 5.1 ve Şekil 5.2
gündüz görüntüleri üzerinde yapılan analizlere, Şekil 5.3 ve Şekil 5.4 ise gece görüntüleri
üzerinde yapılan analizlere örnek olarak verilmiştir. Şekillerde görüntüler soldan sağa
orijinal görüntü ve bulut işaretli görüntü olacak şekilde dizilmiştir. Bulut işaretli
görüntülerde kırmızı renk Ay ya da Güneş, siyah renk k-means yöntemi ile tespit edilen
bulut, beyaz ise karanlık gecede analizle ya da R-B yöntemi ile tespit edilen bulutu
göstermektedir. Görüntü hiç değişmemişse tam açık, tamamen beyazla kaplı ise tam
kapalı olarak sınıflandırılmıştır. Gündüz yapılan analizlerde Güneş’in çevresinde bulut
olarak algılanmaktadır. Tam açık gökyüzü olan görüntülerde öğlen vaktinde Güneşin bu
etkisi çok belli olmaktadır. Şekil 5.1’de en alt sıradaki görüntüler buna örnektir. Gün
batımına doğru alınan bazı görüntülerde de açık gökyüzü, bulut gibi algılanmıştır. R-B
yöntemi hem tam kapalı gökyüzüne ait hem de gün batımına yaklaşılan zamana ait olan
görüntüler için uygulanmıştır. İki ayrı durum için ayrı eşik değerleri alınmasının sistemin
performansını arttıracağı düşünülmektedir. Şekil 5.2'deki ilk görüntü bu duruma bir
örnektir. Gece görüntüleri için yapılan analizde, Ay'ın etkisinin Güneş etkisine benzer
olduğu söylenebilir. Şekil 5.4' deki ilk görüntü buna bir örnektir.
40
Şekil 5.1. Gündüz görüntüleri üzerinde yapılan analiz
*Önce orijinal görüntü, hemen yanında bulut işaretlenmiş görüntü verilmiştir.
Şekil 5.2. Gündüz görüntüleri üzerinde yapılan analiz
*Önce orijinal görüntü, hemen yanında bulut işaretlenmiş görüntü verilmiştir.
41
Şekil 5.3. Gece görüntüleri üzerinde yapılan analiz
*Önce orijinal görüntü, hemen yanında bulut işaretlenmiş görüntü verilmiştir
Şekil 5.4. Gece görüntüleri üzerinde yapılan analiz
*Önce orijinal görüntü, hemen yanında bulut işaretlenmiş görüntü verilmiştir
Çalışmada gündüz ve gece bulutluluk tespiti için değişik yöntemler denenmiştir. K-means
kümeleme yöntemi ile parçalı bulutlu görüntülerle iyi sonuçlar alındığı görülmüştür. RGB
renk uzayında ise çok bulutlu ve gün batımındaki görüntülerde daha iyi sonuç alınmıştır.
Farklı yöntemleri birleştirerek bulut tespit başarısının daha yükseltilebileceği görülmüştür.
HSV ve LAB renk uzaylarından faydalanılarak uygulanacak yöntemlere göre görüntüler
ayrılmaya çalışılmıştır. Renk uzaylarının bir değerini kullanmak yerine daha fazla
42
değişkenle ve veriyle modelleme yapmak yöntem seçim algoritmasını güçlendirecektir.
Güneş'in ve Ay'ın görüntüde belirlenmesindeki görüntü işlem uygulamalarında sıkıntılar
görülmüştür. Görüntünün üzerinde Güneş ve Ay çevresindeki yansımalar ve parlamalar
tespiti zorlaştırmaktadır. Literatürdeki bazı tüm gökyüzü kamerası çalışmalarında Şekil
5.5'deki gibi bu etkileri azaltıcı önlemler alınmıştır (Linfoot vd, 2008).
Şekil 5.5. Güneş ve ay yansıma engelleyici
Çalışmanın sonraki aşamasında astronomi verilerinden faydalanarak uygulamada
kullanılan algoritmaların güçlendirilmesi düşünülmektedir. Güneş'in ve Ay'ın görüntü
üzerinde olması gereken yerin belirlenmesi, yansıma ve parlama gibi gürültülerin
anlaşılmasını ve yok edilmesini kolaylaştıracaktır. Aynı zamanda karanlık gece ve aydınlık
gecenin belirlenmesi için çalışmada kullanılan algoritmalarıda güçlendirecektir. Aynı
zamanda gece ve gündüz görüntülerinin ayırt edilerek gece ve gündüz analizinin
birleştirilip tam otomatik bir sistem oluşturulması mümkün olacaktır.
43
KAYNAKLAR
ALOISE, D., Deshpande, A., Hansen, P., Popat,P., NP-hardness of Euclidean sum of
squares clustering, Machine Learning, 75, p:245-49, (2009)
ASHLEY, M.C.B., Jurcevic J.S., A Cloud detector for automated telescopes, Publication of
Astronomical Society of Australia, PASA 9(2), (1991)
CHAKRABORTI, S., Verification of Rayleight Scattering Cros Section, American Journal
of Physics, Vol:75, 9, p:824-26, (2007)
CHARLES, P., Digital Video and HDTV: Algorithms and Interfaces. Morgan Kaufmann,
San Francisco, (2003), p:260.
CLAY, R.W., Pace, R.T., Riordan, D. S., Smth, A. G. K. & Wild N. R., Cloud monitoring for
large cosmic ray sites, Proceedings of the 26th International Cosmic Ray Conference.,
(IUPAP). Vol:5, Salt Lake City, Utah, p:421, (1999)
FORD, A., Roberts, A., Colour Space Conversions. Westminster University, London ,
(1998), http://www.poynton.com/PDFs/coloureq.pdf [erişim 30.11.2011].
Difraction limited, The boltwood cloud sensor http://www.cyanogen.com/cloud_main.php
[erişim 01.12.2011]
GONZALEZ, C.R., Woods, E.R., Eddins, S.L., Digital Image Processing Using MATLAB,
(2003), p:337-45.
GRASSMANN, H., Schubring G., Hermann Günther Grassmann (1809-1877): visionary
mathematician, scientist and neohumanist scholar : papers from a sesquicentennial
conference, Springer, (1996) p:78.
HEINLE, A., Macke, A. and Srivastav, A., Automatic cloud classification of whole sky
images, Atmos.Meas.Tech.,3, p:557–67, (2010)
HSV renk uzayı, http://tr.wikipedia.org/wiki/HSV_renk_uzay%C4%B1 [erişim 28.09.2011]
44
KARHAN, M., Oktay O., Karhan Z., Demir H., Morfolojik Görüntü İşleme Yöntemleri ile
Kaysılarda Yaprak Delen (Çil) Hastalığı Sonucu Oluşan Lekelerin Tespiti, 6th International
Advanced Technologies Symposium(IATS' 11), Elazığ, (2011)
KARTAL, D., Kuantum Kuyulu Kızılötesi Fotodedektörler, Yüksek Lisans Tezi, Cumhuriyet
Üniversitesi, Sivas, (2006)
LINFOOT, A., Alliss, R., A Cloud Detection Algorithm Applied to A Whole Sky Imager
Instrument Using Neural Networks, (2008), http://ai.metr.ou.edu/ams2008/129536.pdf,
[erişim 30.11.2011]
MACQUEEN, J. B., Some Methods for Classification and Analysis of Multivariate
Observations, Proceedings of 5-th Berkeley Symposium on Mathematical Statistics and
Probability, University of California Press, Berkeley, p:281-97, (1967).
OTSU, N., A Threshold Selection Method from Gray-Level Histograms, IEEE Transactions
on Systems, Man, and Cybernetics, Vol. 9, No. 1, p:62-6, (1979).
PETTY, G. W. ,A first course in atmospheric radiation, Sundog Publishing, Madison,
Wisconsin (2006).
PFISTER, G., McKenzie, R. L., Liley, J. B., Thomas, A., Forgan,B. W., and Long, C. N.
Cloud coverage based on all-sky imaging and its impact on surface solar irradiance, J.
Appl. Meteorol.,42, 1421–34, (2003).
RGB Renk uzayı, http://tr.wikipedia.org/wiki/RGB_renk_uzay%C4%B1 [erişim 28.09.2011]
ROY, G., Hayman S., Julian W., Sky Modelling from Digital
http://www.cadplan.com.au/Reports/dsmreport.pdf, University of Sydney
University, (2008) [erişim 30.11.2011]
Imagery,
Murdoch
SERRA, J., Image Analysis and Mathematical Morphology, Vol:1, Academic, London,
(1982)
SERRA, J., Image Analysis and Mathematical Morpholoji , Vol:2, Academic Press,
London, (1988)
45
SMITH, T., Guild, J . The C.I.E. colorimetric standards and their use. Transactions of the
Optical Society, 33, p:73–134, (1931–32).
SMITH, A.R., Color gamut transform pairs, Computer graphics, 12, (1978), p:12-9
SONKA, M., Hlavac, V., Boyle, R., Image Processing, Analysis, and Machine Vision,
Thomson, (2008a), p:332-3
SONKA, M., Hlavac, V., Boyle, R., Image Processing, Analysis, and Machine Vision,
Thomson, (2008b), p:657
XU, R., Wunsch, II. D., Survey of Clustering Algorithms, IEEE Transactions On Neural
Networks, 16, 3, (2005).
WRIGHT, W.D., A re-determination of the trichromatic coefficients of the spectral colours.
Transactions of the Optical Society, 30, (1928), p:141-64.
46
EKLER
IDL kodları
Oluşturulan yazılımda, değişik algoritmaların gece ve gündüz için sürekli değiştirilerek test
edilebilinmesi için kodlar gece ve gündüz için ayrı fonksiyonlara bölünmüştür.
function cloud_cluster,day_photo;
;Gündüz alınan görüntülerde k-means yöntemi
maskimage=calculate_mask()
in_bound=where(maskimage gt 50)
out_bound=where(maskimage le 50)
mask2=maskimage
mask2(out_bound)=2
day_photo_for_sun=day_photo
sky_photo_size=size(day_photo)
image_size=size(day_photo)
day_photo_xyz=fltarr(3,image_size(2),image_size(3))
day_photo_lab=fltarr(3,image_size(2),image_size(3))
for i=0,image_size(2)-1 do begin
for k=0,image_size(3)-1 do begin
xyz=rgb_to_xyz(float(day_photo(0,i,k)),float(day_photo(1,i,k)),float(day_photo(2,i,k)))
lab=xyz_to_lab(float(xyz(0)),float(xyz(1)),float(xyz(2)))
day_photo_xyz(0,i,k)=xyz(0)
day_photo_xyz(1,i,k)=xyz(1)
day_photo_xyz(2,i,k)=xyz(2)
day_photo_lab(0,i,k)=(lab(0)/100)*256
day_photo_lab(1,i,k)=lab(1)+127
day_photo_lab(2,i,k)=lab(2)+127
47
endfor
endfor
ab=fltarr(2,sky_photo_size(2),sky_photo_size(3));
ab[0,*,*]=REFORM(day_photo_lab[1, *, *])
ab[1,*,*]=REFORM(day_photo_lab[2, *, *])
ab_two_dimen=REFORM(ab,2,sky_photo_size(5)/sky_photo_size(0))
ab_two_dimen2=ab_two_dimen(*,in_bound)
openw,33,'idlicin2.txt'
printf,33,ab_two_dimen2
close,33
spawn,'java -jar kmeans.jar',Weights
Weights=reform(Weights,2,2)
k=2
;Weights = CLUST_WTS(ab_two_dimen2, N_CLUSTERS = k, N_ITERATIONS = 40)
Kmean kümeleme işlemi idlde çalıştırılamadı.Bu kısım java ile yapıldı.
CenterInd = CLUSTER (ab_two_dimen2, Weights, N_CLUSTERS = 2)
Center = TRANSPOSE(Weights)
size_in_bound=size(in_bound)
for l=0L,size_in_bound(1)-1 do begin
mask2(in_bound(l))=CenterInd(l)
endfor
Center=float(Center)
centertot=total(Center,2)
meanall=centertot/2
mean1=meanall(0)
mean2=meanall(1)
if mean2 gt mean1 then begin
cloudind=where(mask2 eq 1)
endif else begin
cloudind=where(mask2 eq 0)
48
endelse
redchannel=REFORM(day_photo[0, *, *])
greenchannel=REFORM(day_photo[1, *, *])
bluechannel=REFORM(day_photo[2, *, *])
redchannel=reform(redchannel,1,sky_photo_size(5)/sky_photo_size(0))
greenchannel=reform(greenchannel,1,sky_photo_size(5)/sky_photo_size(0))
bluechannel=reform(bluechannel,1,sky_photo_size(5)/sky_photo_size(0))
redchannel(cloudind)=0
greenchannel(cloudind)=0
bluechannel(cloudind)=0
day_photo2=bytarr(3,sky_photo_size(2),sky_photo_size(3));
day_photo2[0,*,*]=reform(redchannel,sky_photo_size(2),sky_photo_size(3))
day_photo2[1,*,*]=reform(greenchannel,sky_photo_size(2),sky_photo_size(3))
day_photo2[2,*,*]=reform(bluechannel,sky_photo_size(2),sky_photo_size(3))
day_photo3=find_sun(day_photo_for_sun,day_photo2)
return,day_photo3
end
function r_minus_b,allskyimage
;Gündüz alınan görüntülerde r_minus_b yönteminin uygulanması
READ_JPEG, 'C:\mask2\mask.jpg', maskimage
masksize=size(maskimage)
in_bound=where(maskimage gt 50)
out_bound=where(maskimage le 50)
out_bound=where(maskimage le 50)
maskimage(in_bound)=1
maskimage(out_bound)=0
allskyimagerminusb=allskyimage
redChannel = REFORM(allskyimage[0, *, *])
49
greenChannel = REFORM(allskyimage[1, *, *])
blueChannel = REFORM(allskyimage[2, *, *])
imageSize=size(allskyimage)
for i=0,imageSize[2]-1 do begin
for y=0,imageSize[3]-1 do begin
if blueChannel(i,y) lt redChannel(i,y) then begin
dev1=redChannel(i,y) - blueChannel(i,y)
endif else begin
dev1=blueChannel(i,y)-redChannel(i,y)
endelse
deviation=dev1
if maskimage(i,y) eq 1 then begin
if deviation lt 20 then begin
allskyimagerminusb(*,i,y)=255
endif
endif
endfor
endfor
clouds=allskyimagerminusb
return, clouds
end
function calculate_mask
;maskeleme
image_path='C:\mask2\maskcircle.jpg'
READ_JPEG, image_path, maskimage
maskimage=REFORM(maskimage[0, *, *])
sizemask=size(maskimage)
reform_size_mask=sizemask(4)
50
maskimage=reform(maskimage,1,reform_size_mask)
return,maskimage
end
function rgb_to_xyz,R,G,B
;RGB xyz dönüşümü
var_R = float( R / 255 )
;R from 0 to 255
var_G = double( G / 255 )
var_B = float( B / 255 )
;G from 0 to 255
;B from 0 to 255
if var_R gt 0.04045 then begin
var_R = var_R + 0.055
var_R = var_R/ 1.055
var_R = var_R ^ 2.4
endif else begin
var_R = var_R / 12.92
endelse
if var_G gt 0.04045 then begin
var_G = var_G + 0.055
var_G = var_G/ 1.055
var_G = var_G ^ 2.4
endif else begin
var_G = var_G / 12.92
endelse
if var_B gt 0.04045 then begin
var_B = var_B + 0.055
var_B = var_B / 1.055
var_B = var_B ^ 2.4
endif else begin
51
var_B = var_B / 12.92
endelse
var_R = var_R * 100
var_G = var_G * 100
var_B = var_B * 100
;Observer. = 2°, Illuminant = D65
X = var_R * 0.4124 + var_G * 0.3576 + var_B * 0.1805
Y = var_R * 0.2126 + var_G * 0.7152 + var_B * 0.0722
Z = var_R * 0.0193 + var_G * 0.1192 + var_B * 0.9505
xyz=float(indgen(3))
xyz[0]=X
xyz[1]=Y
xyz[2]=Z
return,xyz
end
function xyz_to_lab,X,Y,Z
;xyz lab dönüşümü
ref_X = 95.047 ; Observer= 2°, Illuminant= D65
ref_Y = 100.000
ref_Z = 108.883
var_X = X / ref_X
;ref_X = 95.047
var_Y = Y / ref_Y
;ref_Y = 100.000
var_Z = Z / ref_Z
;ref_Z = 108.883
if var_X gt 0.008856 then begin
var_X = var_X ^ 0.333333
endif else begin
var_X = 7.787 * var_X
var_X = var_X + 0.137931034
52
Observer= 2°, Illuminant= D65
endelse
if var_Y gt 0.008856 then begin
var_Y = var_Y ^ 0.333333
endif else begin
var_Y = 7.787 * var_Y
var_Y = var_Y + 0.137931034
endelse
if var_Z gt 0.008856 then begin
var_Z = var_Z ^ 0.333333
endif else begin
var_Z = 7.787 * var_Z
var_Z=var_Z+0.137931034
endelse
L = ( 116 * var_Y ) - 16
a = 500 * ( var_X - var_Y )
b = 200 * ( var_Y - var_Z )
LAB=float(indgen(3))
LAB[0]=float(L)
LAB[1]=a
LAB[2]=b
return,LAB
end
function mean_hsv,day_photo
;ortalama hsv
maskimage=calculate_mask()
in_bound=where(maskimage gt 50)
out_bound=where(maskimage le 50)
COLOR_CONVERT, day_photo, day_photo_hsv, /RGB_HSV
53
H = REFORM(day_photo_hsv[0, *, *])
S = REFORM(day_photo_hsv[1, *, *])
V = REFORM(day_photo_hsv[2, *, *])
sky_photo_size=size(day_photo)
H=reform(H,1,sky_photo_size(5)/sky_photo_size(0))
S=reform(S,1,sky_photo_size(5)/sky_photo_size(0))
V=reform(V,1,sky_photo_size(5)/sky_photo_size(0))
H=mean(H(in_bound))
S=mean(S(in_bound))
V=mean(V(in_bound))
result=[H,S,V]
return,result
end
function cal_lab,day_photo
;ortalama lab
maskimage=calculate_mask()
in_bound=where(maskimage gt 50)
out_bound=where(maskimage le 50)
mask2=maskimage
mask2(out_bound)=2
image_size=size(day_photo)
day_photo_lab=fltarr(3,image_size(2),image_size(3))
for i=0,image_size(2)-1 do begin
for k=0,image_size(3)-1 do begin
xyz=rgb_to_xyz(float(day_photo(0,i,k)),float(day_photo(1,i,k)),float(day_photo(2,i,k)))
lab=xyz_to_lab(float(xyz(0)),float(xyz(1)),float(xyz(2)))
day_photo_lab(0,i,k)=(lab(0)/100)*256
day_photo_lab(1,i,k)=lab(1)+127
54
day_photo_lab(2,i,k)=lab(2)+127
endfor
endfor
lab=fltarr(3,image_size(2),image_size(3));
lab[0,*,*]=REFORM(day_photo_lab[0, *, *])
lab[1,*,*]=REFORM(day_photo_lab[1, *, *])
lab[2,*,*]=REFORM(day_photo_lab[2, *, *])
labtotal=REFORM(lab,3,image_size(5)/image_size(0))
labtotal=labtotal(*,in_bound)
Lmean=mean(labtotal(0,*,*))
amean=mean(labtotal(1,*,*))
bmean=mean(labtotal(2,*,*))
result=[Lmean,Amean,bmean]
return,result
end
function cloud_cluster_night,night_photo
;Gece alınan görüntülerde k-means yöntemi
maskimage=calculate_mask()
in_bound=where(maskimage gt 50)
out_bound=where(maskimage le 50)
mask2=maskimage
mask2(out_bound)=2
night_photo_for_moon=night_photo
sky_photo_size=size(night_photo)
image_size=size(night_photo)
meanhsv=mean_hsv(night_photo)
meanhsv(1)=meanhsv(1)*100
if meanhsv(1) lt 4.8 then begin
55
cloudind=in_bound
markmoon=0
endif else begin
night_photo_xyz=fltarr(3,image_size(2),image_size(3))
night_photo_lab=fltarr(3,image_size(2),image_size(3))
for i=0,image_size(2)-1 do begin
for k=0,image_size(3)-1 do begin
xyz=rgb_to_xyz(float(night_photo(0,i,k)),float(night_photo(1,i,k)),float(night_photo(2,i,k)))
lab=xyz_to_lab(float(xyz(0)),float(xyz(1)),float(xyz(2)))
night_photo_xyz(0,i,k)=xyz(0)
night_photo_xyz(1,i,k)=xyz(1)
night_photo_xyz(2,i,k)=xyz(2)
night_photo_lab(0,i,k)=(lab(0)/100)*256
night_photo_lab(1,i,k)=lab(1)+127
night_photo_lab(2,i,k)=lab(2)+127
endfor
endfor
ab=fltarr(2,sky_photo_size(2),sky_photo_size(3));
ab[0,*,*]=REFORM(night_photo_lab[1, *, *])
ab[1,*,*]=REFORM(night_photo_lab[2, *, *])
ab_two_dimen=REFORM(ab,2,sky_photo_size(5)/sky_photo_size(0))
ab_two_dimen2=ab_two_dimen(*,in_bound)
openw,33,'idlicin2.txt'
printf,33,ab_two_dimen2
close,33
spawn,'java -jar kmeans.jar',Weights
Weights=reform(Weights,2,2)
k=2
;Weights = CLUST_WTS(ab_two_dimen2, N_CLUSTERS = k, N_ITERATIONS = 40)
Kmean kümeleme işlemi idlde çalıştırılamadı.Bu kısım java ile yapıldı.
56
CenterInd = CLUSTER (ab_two_dimen2, Weights, N_CLUSTERS = 2)
Center = TRANSPOSE(Weights)
size_in_bound=size(in_bound)
for l=0L,size_in_bound(1)-1 do begin
mask2(in_bound(l))=CenterInd(l)
endfor
Center=float(Center)
centertot=total(Center,2)
meanall=centertot/2
mean1=meanall(0)
mean2=meanall(1)
if mean2 gt mean1 then begin
cloudind=where(mask2 eq 1)
endif else begin
cloudind=where(mask2 eq 0)
endelse
markmoon=1
endelse
redchannel=REFORM(night_photo[0, *, *])
greenchannel=REFORM(night_photo[1, *, *])
bluechannel=REFORM(night_photo[2, *, *])
redchannel=reform(redchannel,1,sky_photo_size(5)/sky_photo_size(0))
greenchannel=reform(greenchannel,1,sky_photo_size(5)/sky_photo_size(0))
bluechannel=reform(bluechannel,1,sky_photo_size(5)/sky_photo_size(0))
redchannel(cloudind)=0
greenchannel(cloudind)=0
bluechannel(cloudind)=0
night_photo2=bytarr(3,sky_photo_size(2),sky_photo_size(3));
night_photo2[0,*,*]=reform(redchannel,sky_photo_size(2),sky_photo_size(3))
57
night_photo2[1,*,*]=reform(greenchannel,sky_photo_size(2),sky_photo_size(3))
night_photo2[2,*,*]=reform(bluechannel,sky_photo_size(2),sky_photo_size(3))
if markmoon eq 1 then begin
night_photo3=find_moon(night_photo_for_moon,night_photo2)
endif else begin
night_photo3=night_photo2
endelse
return,night_photo3
end
function night_cloud,night
;Gece alınan görüntülerde karanlık gecede bulutluluk hesabı
size_night=size(night)
red=bytarr((size(night))(2),(size(night))(3));
red=reform(night[0,*,*])
dims = SIZE(red, /DIMENSION)
yildiz_sayisi=night_cloud_yildiz_sayisi(night)
if yildiz_sayisi lt 40 then begin
maskimage=calculate_mask()
in_bound=where(maskimage gt 50)
cloudindex=in_bound
red(cloudindex)=255
endif else begin
if yildiz_sayisi gt 100 then begin
;do nothing clear sky
endif else begin
d=8 & B=shift(dist(2*d+1),d,d) LE d
openedImg=MORPH_OPEN(red, B,/GRAY)
maskimage=calculate_mask_yumurta()
58
in_bound=where(maskimage gt 50)
out_bound=where(maskimage le 50)
openedImg=reform(openedImg,1,(size(openedImg))(4))
openedImg_inbound=openedImg(in_bound)
threshold=calculate_treshold(openedImg_inbound)
whiteindex=where(openedImg gt threshold)
blackindex=where(openedImg le threshold)
red(whiteindex)=255
red(blackindex)=0
endelse
endelse
redchannel=REFORM(night[0, *, *])
greenchannel=REFORM(night[1, *, *])
bluechannel=REFORM(night[2, *, *])
redchannel=reform(redchannel,1,size_night(5)/size_night(0))
greenchannel=reform(greenchannel,1,size_night(5)/size_night(0))
bluechannel=reform(bluechannel,1,size_night(5)/size_night(0))
size_in_bound=size(in_bound)
for l=0L,size_in_bound(1)-1 do begin
if red(in_bound(l)) eq 255 then begin
redchannel(in_bound(l))=255
greenchannel(in_bound(l))=255
bluechannel(in_bound(l))=255
endif
endfor
night[0,*,*]=reform(redchannel,size_night(2),size_night(3))
night[1,*,*]=reform(greenchannel,size_night(2),size_night(3))
night[2,*,*]=reform(bluechannel,size_night(2),size_night(3))
return,night
59
end
function calculate_treshold,openedImg_inbound
;Otsu threshold
histdata=histogram(openedImg_inbound)
size_is=size(openedImg_inbound)
total=ulong(size_is[2]*size_is[3])
sum =ulong(0)
for t=0,255 do begin
sum += ulong(t * histData[t]);
endfor
sumB = ulong(0);
wB = ulong(0);
wF = ulong(0);
varMax = ulong(0);
threshold = ulong(0);
varBetween1=ulong64(0)
varBetween=ulong64(0)
for t=0,255 do begin
wB = wB+histData[t]
;
// Weight Background
if wB eq 0 then begin
continue
endif
wF = total - wB;
// Weight Foreground
if wF eq 0 then begin
break
endif
sumB += t * histData[t]
mB = sumB / wB;
;
// Mean Background
60
mF = (sum - sumB) / wF;
// Mean Foreground
; Calculate Between Class Variance
varBetween1=wB * wF
varBetween1=varBetween1/10000
if mB gt mF then t1=mB-mF
if mF ge mB then t1 = mF-mB
t2=t1*t1
varBetween = varBetween1*t2
;Check if new maximum found
if varBetween gt varMax then begin
varMax = varBetween;
threshold = t;
endif
endfor
return,threshold
end
function calculate_mask_yumurta
;Karanlık gecede maskeleme
image_path='C:\mask2\maskyumurta2.jpg'
READ_JPEG, image_path, maskimage
maskimage=REFORM(maskimage[0, *, *])
sizemask=size(maskimage)
reform_size_mask=sizemask(4)
maskimage=reform(maskimage,1,reform_size_mask)
return,maskimage
end
function find_moon_index,day_photo
61
;Ay tespit
READ_JPEG, 'C:\mask.jpg', maskimage
sizemask=size(maskimage)
reform_size_mask=sizemask(4)
maskimage=reform(maskimage,1,reform_size_mask)
in_bound=where(maskimage gt 50)
out_bound=where(maskimage le 50)
meanlab=cal_lab(day_photo)
if meanlab(0) gt 150 then begin
ayesik=250
endif else begin
ayesik=200
endelse
sky_photo_size=size(day_photo)
redChannel = REFORM(day_photo[0, *, *])
greenChannel = REFORM(day_photo[1, *, *])
blueChannel = REFORM(day_photo[2, *, *])
redChannel=reform(redChannel,1,sky_photo_size(5)/sky_photo_size(0))
greenChannel=reform(greenChannel,1,sky_photo_size(5)/sky_photo_size(0))
blueChannel=reform(blueChannel,1,sky_photo_size(5)/sky_photo_size(0))
totalpixel=(size(in_bound))(1)
count1=ulong(0)
for pp=0L,totalpixel-1 do begin
if blueChannel(in_bound(pp)) gt ayesik then begin
count1=count1+1
endif
endfor
if count1 ne 0 and count1 lt 108317 then begin;burdaki 108317 hicbiri mavi olmazsa
moonindex = make_array(count1,/ulong)
62
lilos=ulong(0)
for ps=0UL,totalpixel-1 do begin
if blueChannel(in_bound(ps)) gt ayesik then begin
moonindex(lilos)=in_bound(ps)
lilos=lilos+1
endif
endfor
moonindex=reform(moonindex,1,(size(moonindex))(1))
maskimage(0,*)=0;
maskimage(moonindex)=255;
maskimage=reform(maskimage,sizemask(1),sizemask(2))
maskimage=maskimage GT 150
dims = SIZE(maskimage, /DIMENSIONS)
regions = LABEL_REGION(maskimage)
hist = HISTOGRAM(regions)
FOR i=1, N_ELEMENTS (hist) - 1 DO begin
if hist(i) lt 250 then regions(where (regions eq i))=0
endfor
regionindex=where(regions ne 0)
if (size(regionindex))(0) gt 0 then begin
regions(where (regions ne 0))=1
maskimage=regions
d=5 & B=shift(dist(2*d+1),d,d) LE d
closing = MORPH_CLOSE(maskimage, B)
moonindex=where(closing eq 1)
endif
endif else begin
moonindex=0
endelse
63
return ,moonindex
end
function find_moon,day_photo_for_moon,day_photo
;ay tespit
sky_photo_size=size(day_photo)
index=find_moon_index(day_photo_for_moon)
redchannel=REFORM(day_photo[0, *, *])
greenchannel=REFORM(day_photo[1, *, *])
bluechannel=REFORM(day_photo[2, *, *])
redchannel=reform(redchannel,1,sky_photo_size(5)/sky_photo_size(0))
greenchannel=reform(greenchannel,1,sky_photo_size(5)/sky_photo_size(0))
bluechannel=reform(bluechannel,1,sky_photo_size(5)/sky_photo_size(0))
redchannel(index)=255
greenchannel(index)=0
bluechannel(index)=0
day_photo[0,*,*]=reform(redchannel,sky_photo_size(3),sky_photo_size(2))
day_photo[1,*,*]=reform(greenchannel,sky_photo_size(3),sky_photo_size(2))
day_photo[2,*,*]=reform(bluechannel,sky_photo_size(3),sky_photo_size(2))
return,day_photo
end
function find_sun_index,day_photo
;güneş tespit
maskimage=calculate_mask()
in_bound=where(maskimage gt 50)
out_bound=where(maskimage le 50)
COLOR_CONVERT, day_photo, day_photo_hsv, /RGB_HSV
H = REFORM(day_photo_hsv[0, *, *])
64
S = REFORM(day_photo_hsv[1, *, *])
V = REFORM(day_photo_hsv[2, *, *])
sky_photo_size=size(day_photo)
H=reform(H,1,sky_photo_size(5)/sky_photo_size(0))
S=reform(S,1,sky_photo_size(5)/sky_photo_size(0))
V=reform(V,1,sky_photo_size(5)/sky_photo_size(0))
totalpixel=(size(in_bound))(1)
l=0L
for p=0L,totalpixel-1 do begin
if ((S(in_bound(p)) lt 0.0390625) and (V(in_bound(p)) gt 0.78125)) then begin
l=l+1
endif
endfor
if l ne 0 and l lt (size(in_bound))(1) then begin;burdaki 108317 hicbiri mavi olmazsa
sunindex = make_array(l,/ulong)
l=0L
for p=0L,totalpixel-1 do begin
if ((S(in_bound(p)) lt 0.0390625) and (V(in_bound(p)) gt 0.78125)) then begin
sunindex(l)=in_bound(p)
l=l+1
endif
endfor
sunindex=reform(sunindex,1,(size(sunindex))(1))
maskimage(0,*)=0;
maskimage(sunindex)=255;
sizemask=size(maskimage)
maskimage=reform(maskimage,502,429)
maskimageorj=maskimage
dims = SIZE(maskimage, /DIMENSIONS)
65
d=4 & B=shift(dist(2*d+1),d,d) LE d
eroded = erode(maskimage, B)
regions = LABEL_REGION(eroded)
hist = HISTOGRAM(regions)
if N_ELEMENTS(hist) gt 1 then begin
biggest=0
biggesthist=0
FOR i=1, N_ELEMENTS (hist) - 1 DO begin
if hist(i) gt biggesthist then begin
biggesthist=hist(i)
biggest=i
endif
endfor
regions(where (regions ne biggest))=0
regions(where (regions eq biggest))=1
endif
regionindex=where(regions eq 1)
if (size(regionindex))(0) gt 0 then begin
regions(where (regions ne 1))=0
maskimage=regions
d=4 & B=shift(dist(2*d+1),d,d) LE d
dilated = dilate(maskimage, B)
result2=region_fill(dilated,[1,600])
sunindex=where(result2 eq 1)
endif
endif else begin
sunindex=0
endelse
return ,sunindex
66
end
function find_sun,day_photo_for_sun,day_photo
;güneş tespit
sky_photo_size=size(day_photo)
index=find_sun_index(day_photo_for_sun)
redchannel=REFORM(day_photo[0, *, *])
greenchannel=REFORM(day_photo[1, *, *])
bluechannel=REFORM(day_photo[2, *, *])
redchannel=reform(redchannel,1,sky_photo_size(5)/sky_photo_size(0))
greenchannel=reform(greenchannel,1,sky_photo_size(5)/sky_photo_size(0))
bluechannel=reform(bluechannel,1,sky_photo_size(5)/sky_photo_size(0))
redchannel(index)=255
greenchannel(index)=0
bluechannel(index)=0
day_photo[0,*,*]=reform(redchannel,sky_photo_size(3),sky_photo_size(2))
day_photo[1,*,*]=reform(greenchannel,sky_photo_size(3),sky_photo_size(2))
day_photo[2,*,*]=reform(bluechannel,sky_photo_size(3),sky_photo_size(2))
return,day_photo
end
67
ÖZGEÇMİŞ
İsmail Başlar 06.12.1978 tarihinde Adana'da doğdu. İlk, orta ve lise öğrenimini Adana’da
tamamladı. 1997 yılında girdiği Çukurova Üniversitesi Mühendislik Fakültesi Elektrik
Elektronik Mühendisliği Bölümü’nden 2002 yılında mezun oldu. 2005 yılından bu yana
TÜBİTAK Ulusal Gözlemevi’nde uzman yardımcısı olarak çalışmaktadır.
68

Benzer belgeler