T.C. SÜLEYMAN DEMİREL ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "T.C. SÜLEYMAN DEMİREL ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ"

Transkript

1 T.C. SÜLEYMAN DEMİREL ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ OPENCL ORTAMINDA GÖRÜNTÜ İYİLEŞTİRME İŞLEMLERİNİN PARALEL PROGRAMLAMA YÖNTEMİYLE GERÇEKLEŞTİRİLMESİ Menduh Furkan Aslan Danışman Dr. Öğr. Üyesi Tuna GÖKSU YÜKSEK LİSANS TEZİ ELEKTRİK ELEKTRONİK MÜHENDİSLİĞİ ANABİLİM DALI ISPARTA

2 2018 [Menduh Furkan ASLAN]

3

4 TAAHHÜTNAME Bu tezin akademik ve etik kurallara uygun olarak yazıldığını ve kullanılan tüm literatür bilgilerinin referans gösterilerek tezde yer aldığını beyan ederim. Menduh Furkan ASLAN

5 İÇİNDEKİLER Sayfa İÇİNDEKİLER... i ÖZET... iii ABSTRACT... iv TEŞEKKÜR... v ŞEKİLLER DİZİNİ... vi SİMGELER VE KISALTMALAR DİZİNİ... ix 1. GİRİŞ KAYNAK ÖZETLERİ GÖRÜNTÜ İYİLEŞTİRME Görüntü İyileştirme İle İlgili Temel Bilgiler Analog Görüntü Görüntü Örnekleme Görüntü Nicemleme Sayısal Görüntü Uzaysal Çözünürlük Gri Seviye Çözünürlük Görüntü Histogramı Parlaklık Ayarı Kontrast Ayarı Görüntü İyileştirmede Kullanılan Filtreler Görüntü Konvolüsyonu Ortalama Filtresi Gauss Bulanıklaştırma Filtresi Laplacian Filtresi Sobel Operatörleri PARALEL PROGRAMLAMA Paralellik Türleri Paralel Hesaplama Paralel Bilgisayar Mimarisi Flynn Taksonomisi Paralel Programlama Modelleri Ortak Bellek Modeli Dağıtık Bellek Modeli Veri Paralel Modeli Grafik İşlemci Birimi Genel Amaçlı Grafik İşlemci Birimi OpenCL OpenCL Özellikleri Platform Modeli Yürütme Modeli Bellek Modeli OpenCL Yazılım Tasarımı Ve Kullanılan Kodlar ARAŞTIRMA BULGULARI Parlaklık, Kontrast Ayarlamalarının OpenCL Ortamında Geliştirilmesi Ortalama Filtresinin OpenCL Ortamında Geliştirilmesi i

6 5.3. Gauss Bulanıklaştırma Filtresinin OpenCL Ortamında Geliştirilmesi Laplacian Filtresinin OpenCL Ortamında Geliştirilmesi Kenar Belirleme Filtresinin OpenCL Ortamında Geliştirilmesi Geliştirilen Filtreler İle Kontrast Parlaklık Ayarlamalarının OpenCL Ortamındaki Performansları Ve Seri Programlama Yöntemi ile Performanslarının Kıyaslanması TARTIŞMA VE SONUÇLAR KAYNAKLAR EKLER EK A. Kodlar ÖZGEÇMİŞ ii

7 ÖZET Yüksek Lisans Tezi OPENCL ORTAMINDA GÖRÜNTÜ İYİLEŞTİRME İŞLEMLERİNİN PARALEL PROGRAMLAMA YÖNTEMİYLE GERÇEKLEŞTİRİLMESİ Menduh Furkan ASLAN Süleyman Demirel Üniversitesi Fen Bilimleri Enstitüsü Elektrik Elektronik Mühendisliği Anabilim Dalı Danışman: Dr. Öğr. Üyesi Tuna GÖKSU Sinyal ve görüntü işlemede kullanılan fonksiyonların hızlandırılması için günümüzde paralel programlama yoğun olarak kullanılmaya başlanmıştır. Paralel programlama için çoğunlukla donanım olarak çok çekirdekli işlemciler, grafik işlemciler, FPGA tabanlı sistemler kullanılmaktadır. Bu donanımların çok çekirdekli yapılara sahip olmaları sayesinde aynı anda birçok hesaplama yapabilme imkânına sahiptirler. Bu sayede hesaplama süresi seri programlamaya nazaran daha kısa hale gelmektedir. Yapılan bu çalışmada OpenCL tabanlı, paralel olarak çalışabilen görüntü iyileştirme uygulamaları gerçekleştirilmiştir. Bu uygulamalarda kontrast ve parlaklık ayarlamaları ile görüntü bulanıklaştırma ve keskinleştirme işlemlerinde sıkça kullanılan ortalama, gauss bulanıklaştırma, laplacian ve kenar belirleme filtreleri vardır. Görüntü iyileştirmede ve işlemede yaygın olarak kullanılmakta olan OpenCV (Open Source Computer Vision Library) kütüphanesinde, aynı uygulamalar seri programlama tekniği ile geliştirilerek, elde edilen sonuçlar paralel olarak geliştirilen kütüphane ile kıyaslanmıştır. Paralel programlamanın performans açısından daha iyi olduğu karşılaştırma sonuçlarıyla desteklenmiştir. Kullanılan donanım için paralel programlama sayesinde hesaplama sürelerinde 1,58 kat ile 904 kat arasında azalma gözlenmiştir. Anahtar Kelimeler: Paralel programlama, görüntü iyileştirme, OpenCL. 2018, 100 sayfa iii

8 ABSTRACT M.Sc. Thesis PERFORMING OF IMAGE ENHANCEMENT OPERATIONS IN OPENCL ENVIRONMENT WITH PARALLEL PROGRAMMING METHOD Menduh Furkan ASLAN Süleyman Demirel University Graduate School of Natural and Applied Sciences Department of Electrical Electronic Engineering Supervisor: Asst. Prof. Dr Tuna GÖKSU For the signal and the acceleration of the functions used in image processing, parallel programming has been used extensively today. For parallel programming, mostly multi-core processors, graphics processors, FPGA based systems are used as hardware. Thanks to the multi-core structure of these hardware, it is possible to do many calculations at the same time. In this case, calculation time becomes shorter than serial programming. In this study, an image enhancement applications that can work as parallel on the OpenCL based graphics processor, were developed. These applications include contrast and brightness adjustments and mean, gaussian blur, laplacian and edge detection filters that are commonly used in image blur and sharpening operations. The same filters as the serial programming logic are applied in OpenCV (Open Source Computer Vision Library) library which is widely used in the image processing and enhancement. The results are compared with the library which is developed as parallel. It was supported by the results of the comparison that parallel programming is better than serial programming in terms of performance. Due to parallel programming for the hardware used, a reduction between 1,58 times and 904 times in the calculation times was observed. Keywords: Parallel programming, image enhancement, OpenCL. 2018, 100 pages iv

9 TEŞEKKÜR Bu araştırma için beni yönlendiren, karşılaştığım zorlukları bilgi ve tecrübesi ile aşmamda yardımcı olan değerli Danışman Hocam Dr. Öğr. Üyesi Tuna GÖKSU ya teşekkürlerimi sunarım. Tezimin her aşamasında beni yalnız bırakmayan aileme sonsuz sevgi ve saygılarımı sunarım. Menduh Furkan ASLAN ISPARTA, 2018 v

10 ŞEKİLLER DİZİNİ Sayfa Şekil 3.1. Sayısal görüntü işlemenin ana aşamaları... 9 Şekil 3.2. Sayısal görüntünün elde edilmesi Şekil 3.3. Düzgün örnekleme için kullanılan tarak fonsiyonu Şekil 3.4. Matris formundaki sayısal görüntünün piksel dağılımı Şekil x16 boyutundaki matristen oluşan görüntünün 256 farklı gri seviye gösterimi Şekil 3.6. Analog ve sayısal görüntü karşılaştırması Şekil 3.7. Farklı uzaysal çözünürlükte olan ve her bir pikseli 8 bit ile kodlanan gri ton seviyeli örnek görüntüler Şekil 3.8. Aynı uzaysal çözünürlüğe sahip farklı gri seviyedeki görüntüler. 18 Şekil 3.9. Görüntü histogramı Şekil Görüntü parlaklık seviyeleri ve histogram dağılımları Şekil Giriş görüntüsü üzerinde parlaklık ayarı Şekil Görüntü kontrast seviyeleri ve histogram dağılımları Şekil Giriş görüntüsü üzerinde kontrast ayarı Şekil x3 Konvolüsyon maskesi kullanılarak gerçekleştirilen filtreleme işlemi mekanizması Şekil x3 Konvolüsyon maskesindeki değerler ile görüntü parçası üzerindeki piksellerin konvolüsyon işlem bağlantısı Şekil Ortalama filtreleri Şekil Ortalama filtresinin maske boyutu büyüklüğüne göre uygulanma sonucu oluşan çıkış görüntüleri Şekil Standart sapma değeri 1 olan tek boyutlu gauss dağılımı Şekil Standart sapma değeri 1 olan iki boyutlu gauss dağılımı Şekil x5 boyutunda standart sapması 1 olan gauss bulanıklaştırma maskesi Şekil x3 boyutunda standart sapması 1 olan gauss bulanıklaştırma maskesi Şekil x3 boyutunda elde edilen laplacian maskesi Şekil x3 boyutundaki farklı laplacian maskeleri Şekil Görüntü üzerinde birinci ve ikinci derece türev uygulaması Şekil Laplacain filtresinin giriş görüntüsü üzerindeki uygulaması Şekil Sobel operatörleri Şekil Sobel operatörlerinin giriş görüntüsü üzerindeki uygulaması Şekil 4.1. Seri programlama çalışma mantığı Şekil 4.2. Paralel programlama çalışma mantığı Şekil 4.3. Paralel programlamada iş birimlerine bölüştürme işlemi Şekil 4.4. Ortak bellek mimarisi Şekil 4.5. Dağıtık bellek mimarisi Şekil 4.6. Flynn taksonomisinde bulunan mimarilerin iç yapıları Şekil 4.7. Programın iş parçacıklarına ayrılması Şekil 4.8. Mesaj geçirme modeli yapısı Şekil 4.9. Veri paralel modeli Şekil CPU ve GPU için bellek bant genişliği karşılaştırması vi

11 Şekil CPU ve GPU için saniyedeki ondalık sayı işlemlerinin karşılaştırması Şekil CPU ve GPU iç mimari gösterimleri Şekil Platform modeli Şekil İş kalemlerini iş gruplarına göre gruplandırılması Şekil İş grubu örneği Şekil Bellek modeli Şekil 5.1. Heterojen ortamda görüntü iyileştirme işlemleri için kullanılan program akış diyagramı Şekil 5.2. Parlaklık ayarlamasının OpenCL paralel ortamındaki kernel derlemesi Şekil x300 Çözünürlüğündeki giriş görüntüsü Şekil x300 Çözünürlüğündeki giriş görüntüsüne parlaklık ayarlaması yapılması sonucu oluşan çıkış görüntüsü Şekil 5.5. Kontrast ayarlamasının OpenCL paralel ortamındaki kernel derlemesi Şekil x625 Çözünürlüğündeki giriş görüntüsü Şekil x625 Çözünürlüğündeki giriş görüntüsüne kontrast ayarlaması yapılması sonucu oluşan çıkış görüntüsü Şekil x3 Boyutundaki ortalama filtrenin OpenCL paralel ortamındaki kernel derlemesi Şekil x512 Çözünürlüğündeki giriş görüntüsü Şekil x512 Çözünürlüklü giriş görüntüsüne 3x3 boyutlu maske ile ortalama filtre uygulanması sonucu oluşan çıkış görüntüsü.. 67 Şekil x512 Çözünürlüklü giriş görüntüsüne 5x5 boyutlu maske ile ortalama filtre uygulanması sonucu oluşan çıkış görüntüsü.. 67 Şekil x3 Boyutundaki gauss bulanıklaştırma filtresinin OpenCL paralel ortamındaki kernel derlemesi Şekil x480 Çözünürlüğündeki giriş görüntüsü Şekil x3 Maske boyutlu gauss bulanıklaştırma filtresinin uygulanması sonucu oluşan çıkış görüntüsü Şekil x5 Maske boyutlu gauss bulanıklaştırma filtresinin uygulanması sonucu oluşan çıkış görüntüsü Şekil x3 Boyutundaki laplacian filtresinin OpenCL paralel ortamındaki kernel derlemesi Şekil x625 Çözünürlüğündeki giriş görüntüsü Şekil x3 Maske boyutlu laplacian filtresinin uygulanması sonucu oluşan filtrelenmiş görüntü Şekil x3 Maske boyutlu laplacian filtresinin uygulanması sonucu elde edilen filtrelenmiş görüntünün giriş görüntüsünden çıkarılarak elde edilen netleştirilmiş görüntü Şekil x5 Maske boyutlu laplacian filtresinin uygulanması sonucu oluşan filtrelenmiş görüntü Şekil x5 Maske boyutlu laplacian filtresinin uygulanması sonucu elde edilen filtrelenmiş görüntünün giriş görüntünün giriş görüntüsünden çıkarılarak elde edilen netleştirilmiş görüntü Şekil x3 Boyutundaki kenar belirleme filtresinin OpenCL paralel ortamındaki kernel derlemesi Şekil x480 Çözünürlüğündeki giriş görüntüsü vii

12 Şekil x3 Maske boyutlu sobel operatörleri kullanılarak oluşturulan kenar belirleme filtresinin giriş görüntüsüne uygulanması sonucu oluşan filtrelenmiş görüntü Şekil x5 Maske boyutlu sobel operatörleri kullanılarak oluşturulan kenar belirleme filtresinin giriş görüntüsüne uygulanması sonucu oluşan filtrelenmiş görüntü Şekil Kontrast ve parlaklık ayarlama uygulamalarının OpenCL kernel ortamında çalışma süreleri Şekil Kontrast ve parlaklık ayarlama uygulamalarının matris işlemlerinin seri programlama ile çalışma süreleri Şekil x3 Maske boyutlu görüntü iyileştirme filtrelerin OpenCL kernel ortamında çalışma süreleri Şekil x3 Maske boyutlu görüntü iyileştirme filtrelerin matris işlemlerinin seri programlama ile çalışma süreleri Şekil x5 Maske boyutlu görüntü iyileştirme filtrelerinin OpenCL kernel ortamında çalışma süreleri Şekil x5 Maske boyutlu görüntü iyileştirme filtrelerin matris işlemlerinin seri programlama ile çalışma süreleri viii

13 SİMGELER VE KISALTMALAR DİZİNİ API Application Programming Interface CPU Central Processing Unit DSP Digital Signal Processing FPGA Field Programmable Gate Array GPU Graphics Processing Unit GPGPU General Purpose Graphics Processing Unit ID Identification MIMD Multiple Input Multiple Data MISD Multiple Input Single Data OpenCL Open Computing Language OpenCV Open Computer Vision RGB Red Green Blue SIMD Single Input Multiple Data SISD Single Input Single Data VHDL Very High Speed Integrated Circuit Harware Description Language ix

14 1. GİRİŞ Hızla gelişmekte olan teknoloji sebebiyle sinyal ve görüntüyü dijital ortamda işleyebilme ve üretebilme ihtiyacı artmıştır. Bu alanlarla ilgili geliştirilen yazılımlar teknolojiye ayak uydurabilmekte zorlanmakta ve yeni problemler ortaya çıkarmaktadır. Bu problemlerin en önemlilerinden biri hız performansıdır. Bilgisayarlardaki hız performansını yükseltmek için yapılan saat hızını arttırma işlemi sonucunda bilgisayarda yanlış işlem yapılmasına ve yüksek güç tüketilmesine sebep olmuştur. Hız performansı, tek işlemci üzerinde aynı işin seri programlama ile yapılmasından ötürü karşılaşılan ciddi bir sorundur. Bu problemin aşılması için, aynı iş üzerinde birçok işlemci paralel olarak çalıştırılması düşünülmüş ve gerçekleştirilmiştir. Paralel olarak çalışan grafik işlemciler (GPU) günümüzde bilgisayarlar içerisinde çok kullanılan donanımsal cihazlardır. Yapılarında çok sayıda işlemci çekirdeği bulunmaktadır. Grafik işlemcilerin matematiksel işlemlerde sağladığı yüksek başarı oranı ve paralel çalışabilme özelliği ile genel amaçlı olarak kullanılabilen grafik işlemcilerin (GPGPU) geliştirilmesine sebep olmuştur. Böylelikle yazılımların hesaplama süresi kısalmış ve performasında yükselme görülmüştür. Gerçekleştirilen bu tezde, seri programlama ile oluşturulan görüntü iyileştirme uygulamaları paralel olarak geliştirilen uygulamalar ile kıyaslanmıştır. Paralel olarak programlanabilen grafik işlemciler için OpenCL yapısının kullanılması tercih edilmiştir. Bilgisayarlarda merkezi işlem birimi (CPU) ve grafik işlemcilerin birlikte programlanmasına olanak sağlayan OpenCL mimarisi heterojen programlama için çok uygun bir yapıdır. Bu yapı kullanılarak görüntü iyileştirmede sıklıkla kullanılan filtrelerden ortalama, gauss bulanıklaştırma, laplacian, kenar belirleme filtresi ve kontrast parlaklık ayarlamaları bu uygulamalar içeriğinde geliştirilmiştir. Seri programlama için yazılımcılar tarafından genellikle tercih edilen OpenCV kütüphanesi kullanılmıştır. Bu kütüphaneden hazır filtre fonksiyonları kullanılmamış olup fonksiyonlar temel programlama yapıları kullanılarak oluşturulmuştur. OpenCL yapısı kullanılarak geliştirilen görüntü iyileştirme işlemlerinin başarı sonucunun uygulamalarla 1

15 desteklenmesi için paralel olarak geliştirilen bu uygulamalar ve OpenCV kütüphanesinden yararlanılarak seri ortamda geliştirilen görüntü iyileştirme uygulamalarıyla birlikte bazı testlere tabi tutulmuştur. Kıyaslama sonuçlarına göre 1.58 kat ile 904 kat arası hızlanma gözlemlenmiştir. Hızlanma fark aralığının bu denli fazla olması gerçekleştirilen uygulamalardaki işlem sayısı, kullanılan maske boyutu ve donanımdaki mimarinin nasıl tasarlandığına bağlıdır. 2

16 2. KAYNAK ÖZETLERİ Paralel hesaplamanın ilk olarak ortaya atılması 1950 ve 1960 lara dayanmaktadır. Amdahl (1967), yaptığı çalışma için ne kadar paralel performans kazancı edebileceği hakkında teorik olarak varsayımda bulunmuştur. Bu düşüncesi daha sonra Amdahl Kanunu olarak adlandırılmıştır. Görüntü işlemenin paralelleştirilmesi fikri ise 1970 li yıllara dayanmaktadır. Paralel işlemcilerin, görüntü işlemede yüksek verimlilik sağladığı fikrini Meilander (1977) yaptığı çalışmada değerlendirmiştir. Görüntü işleme ortamında saniyede 100 milyon işlem kapasitesine ulaşabilmek için mevcut yazılım ve donanım teknolojisine dayanan paralel işlemci hakkında çalışma yapmıştır lerin ortalarında FPGA in piyasaya çıkmasından sonra, cihaz üzerinde görüntü iyileştirme işlemleri yapılmaya başlanılmıştır. 90 ların başında itibaren FPGA üzerinde uygulama yapılması hız kazanmıştır. Chan vd. (1994), çalışmalarında FPGA in lojik hücre yapısı, bit seviyesi sistolik konsept kullanılarak gerçek zamanlı bit seviyesinde görüntü işleme operasyonları gerçekleştirmek için en uygun olanı olduğunu belirmiştir. FPGA kullanarak 1 boyutlu medyan filtresi uygulaması gerçekleştirmiştir. Asano vd. (2009), yaptıkları çalışmada CPU, GPU ve FPGA arasındaki performansları kıyaslamışlardır. Bu kıyaslamayı yaparken görüntü işlemede üç uygulama gerçekleştirmişlerdir; iki boyutlu filtre, stereovizyon ve k-ortalamalar kümesi. Elde ettikleri sonuçlara göre sade hesaplama yöntemlerinde GPU nun yüksek performans gösterdiği gözlemlenmiştir. Bu hesaplamalarda piksellerin bağımsız olarak işlenebilir olması etkendir. Karmaşık algoritmalarda ise FPGA, GPU dan daha performanslı olduğu görülmüştür. Nedeni olarak GPU nun yerel hafıza alanının küçük olması veya bellek mimarisinden kaynaklı bellek erişimi limitasyonun olması sebep gösterilmiştir. 3

17 Potluri vd. (2011), OpenCL programlama modeli kullanarak hücresel yapay sinir ağları uygulaması ile GPU üzerinde görüntü işleme algoritmasının değerlendirilmesine yönelik gerçek zamanlı uygulama gerçekleştirmişlerdir. Geliştirdikleri CNN-UM modelini hem CPU ve GPU üzerinde çalıştırılabileceğini belirtmişlerdir. CPU ve GPU üzerinde yaptıkları uygulamalar sonucunda işlenecek görüntünün piksel sayısının az olması durumunda CPU ve GPU performanslarının neredeyse birbirlerine eşit olduğunu gözlemlemişlerdir. İşlenecek görüntü pikselinin fazla olması durumunda ise GPU nun CPU dan daha performanslı olduğu çıkarımını yapmışlardır. Wang vd. (2012), Viola-Jones yüz belirleme algoritmasını, OpenCL mimarisi ile paralel olarak uygulamasını gerçekleştirmişlerdir. AMD ve NVIDIA graifk işlemci birimlerinde paralelleştirme yapılarak yüksek başarı performansı gözlemlemişlerdir. Yaptıkları çalışma sonucunda zaman maliyetini tutmak için CPU ve GPU nun beraber paralelleştirilebileceği çıkarımını yapmışlardır. Paralelleştirilen Viola-Jones yüz belirleme algoritmasının AMD ve NVIDIA grafik işlemci birimlerinde birbirine yakın performans gösterdiğini deneyler sonucunda görmüşlerdir. Mukherjee vd. (2012), çalışmalarında iki boyutlu projeksiyonlar kullanarak konik ışınlı bilgisayarlı tomografinin yeniden yapılandırılması için, GPU lar kullanılarak bir görüntü algoritması uygulanmıştır. Bu uygulamayı CPU ortamında ve CPU-GPU hetorejen ortamında gerçekleştirmişlerdir. C ve Matlab daki CPU kodlarını, heterojen ortamda yazılan CUDA-C ve OpenCL yazılım platformlarıyla karşılaştırmışlardır. Heterojen platformların, CPU ya göre oldukça başarılı performans gösterdiklerini çalışmalarında sonuçlarla desteklemişlerdir. Aynı GPU üzerinde OpenCL ve CUDA performans kıyaslaması yapıp, CUDA nın OpenCL e göre daha hızlı görüntü görüntü işleme yaptığı sonucunu, uyguladıkları algoritma için gözlemlemişlerdir. Ayrıca aynı OpenCL kodunun AMD ve NVIDIA GPU ları üzerinde performanslarını gözlemleyip, NVIDIA nın daha hızlı olduğunu uygulama sonucu tespit etmişlerdir. 4

18 Skalicky vd. (2013), transmural elektrofizyolojik görüntüleme algoritmasının yürütülmesini hızlandırmak için, bu algoritmayı farklı donanımlar üzerinde kullanarak performans değerlendirmesi yapmışlardır. Üç platformlu CPU+GPU+FPGA sistemini beraber kullanarak, bu sisteme karşı tek olarak kullanılan CPU, GPU ve FPGA sistemlerini ve ikili olarak kullanılan CPU+GPU, CPU+FPGA, GPU+FPGA sistemlerininin performanslarını karşılaştırmışlardır. Sonuçlarda ise üçlü kullandıkları sistemde GPU nun performansa en fazla katkı sağladığı, CPU nun ise en az katkı sağladığı görülmüştür. Beklentileri üzerine tekli olarak kullanılan sistemlerin en kötü performans gösterdiğini gözlemlemişlerdir. Üç platformlu sistemin, iki platformlu sistemlere göre 12 kat daha hızlı olduğunun farkına varmışlardır. Ravibabu vd. (2014), çalışmalarında OpenCL paralel programlama ortamını kullanarak GPU üzerinde görüntü onarımı için Belief Propagation algoritmasınının paralel uygulamasını gerçekleştirmişlerdir. Aynı algoritmayı CPU üzerinde seri hesaplama yaparak, iki uygulamanın sonucu karşılaştırmışlardır. Beklentileri gibi, GPU nun CPU dan daha hızlı sonuç verdiğini deney sonuçları göstermiştir. Stoica vd. (2014), kendi iç mimarileri sebebiyle görüntü işleme için doğrusal olmayan hücresel yapay sinir ağlarının (CNNs) ayrık zaman modeli büyük ölçekli paralel mimarileri kullanarak verimli uygulamalar yapmak için uygun olduklarını düşünmüşlerdir. NVIDIA nın CUDA platformunda yaptıkları ölçümler sonucunda GPU da yapılan uygulama CPU dan çok daha kısa sürmüştür. CPU ve GPU ortamlarındaki ölçümler sırasında işlenecek görüntünün piksel sayısı artırılmış ve bu durumda GPU daki işlenme süresinin CPU daki işlenme süresine göre daha az arttığı görülmüş. Böylelikle GPU nun CPU ya göre performans başarı yüzdesi yüksek pikselli görüntü işleme uygulamalarında, düşük pikselli görüntü işleme uygulamalarına göre daha iyi olduğunun farkına varılmıştır. Mevcut geliştirme araçlarının GPU da yeni programlama dili öğrenilmesi gerektirmediği ve CUDA platformunun C, C++ gibi dillerle uyumlu olduğunu da çalışmalarında belirtmişlerdir. 5

19 Yi vd. (2014), yüz tanımlamada ve yüz belirlemede giriş görüntüsi piksel değeri yükseldikçe gerçek zamanlı görüntü işlemenin daha fazla hesaplama gücü gerektirdiğini öne sürmüşlerdir. Çalışmalarında yerel ikili örüntü tabalı yüz tanımlama ve belirleme algoritmaları için bazı optimizasyon teknikleri ile ilgili uygulamalar gerçekleştirmişlerdir. Farklı GPU larda OpenCL ve CUDA programlama mimarilerini kullanarak gerçekleştirdikleri deneylerde GPU nun CPU ya karşı yüksek başarım oranı yakaladığı gözlemlemişlerdir. Bhagat vd. (2014), çalışmalarında görünütü keskinleştirme için dalgacık tabalı çok seviyeli adaptif keskin olmayan maskeleme tekniği önermişlerdir. Bu tekniği ayrık zamanlı dalgacık dönüşümü yaparak uygulamışlardır. Algoritma hızlı görünütü işleme için CPU ve GPU ortamlarında heterojen olarak tasarlanmıştır. Yaptıkları bu uygulama sonucunda heterojen ortamda (CPU+GPU) gerçekleştirilen işlem, sadece CPU ortamındaki işleme göre oranla önemli miktarda hızlanma göstermiştir. Gerçek zamanlı performans için mobil cihazlara uygulanabilir olduğunuda çalışmalarında belitmişlerdir. Cavus vd. (2014), yaptıkları çalışmada GPGPU da OpenCL mimarisini kullanarak TRABZ-10 adında görüntü işleme kütüphanesi geliştirmişlerdir. Bu kütüphaneyi, bazı görüntü iyileştirme filtreleri kullanarak OpenCV ile kıyaslamışlardır. Elde ettikleri sonuçlara göre geliştirdikleri kütüphanenin, OpenCV den daha hızlı olduğunu belirlemişlerdir. Bu uygulamalara ek olarak yüz tespit uygulaması yapmışlardır. Yüz tespit uygulamasında da geliştirdikleri kütüphanenin OpenCV ye oranla daha başarılı olduğunu gözlemlemişlerdir. Hill vd. (2015), FPGA donanımları üzerinde, Altera nın OpenCL SDK sı ve VHDL donanım tanımlama dilini kullanarak üç görüntü işeleme çekirdeği (Canny kenar belirleme, Sobel filtresi ve SURF özellik çıkarıcı) arasında performans ve verimlilik kıyaslaması yapmışlardır. Deney sonuçlarında OpenCL in VHDL e göre daha fazla kaynak kullandığını görmüşlerdir. OpenCL in verimlilik avantajının olması, artan kaynak kullanımının sonucu olduğu çıkarımı yapılmıştır. OpenCL kullanarak çekirdek tasarlamanın VHDL yönteminden 6 kat daha hızlı olduğunu belirlemişlerdir. VHDL ve OpenCL in aynı donanım üzerinde gerçekleştirilen 6

20 testleri sonucunda aralarındaki performans farklarının %2 ile %10 arasında olduğu görülmüştür. Ayrıca OpenCL için oluşturulan üç adet görüntü işleme çekirdeği ile ilgili, farklı FPGA donanımları üzerinde herhangi bir kod değişikliğine gidilmeden aynı şekilde başarıyla uygulanılabilir olduğu tespitini yapmışlardır. Dantas vd. (2015), OpenCL e ek olarak destekleyen kütüphanelerin yetersizliğini tespit etmişlerdir. Bu sebeple 2D ve 3D olarak OpenCL i desteklemek için VisionGL kütüphanesini genişletmek amacıyla çalışma yapmışlardır. Kütüphane programcıya yardımcı olmak ve yeni gölgelendiricilerin kullanımını kolaylaştırmak için sarıcı kod üreticisine sahiptir. Sarıcı kod, CPU ve GPU arasında görüntü kopyalarını otomatik olarak yönetir, yalnızca gerekiğinde veri gönderir, gölgelendirici parametrelerini GPU ya gönderir, gerektiğinde gölgelendiricileri derler, bağlar ve çalıştırır. OpenCL gölgelendiricileri ile yüksek performanslı 2D ve 3D görüntüleri işleyen yeni bir kütüphane oluşturma amacıyla yaptıkları bu çalışmada, OpenCV-OpenCL modülüne karşı oluşturdukları VisionCL kütüphanesini test etmişlerdir. VisionCL kütüphanesi ile görüntü işleme, OpenCV-OpenCL modülüne göre daha hızlı gerçekleştiğini tespit etmişlerdir. Shen vd. (2015), düşük ışık seviyeli görüntü iyileştirme algoritmalarının, pratik uygulamalarda gerçek zamanlı olarak istenen gereklilikleri karşılamakta zorlandığını belirtmişlerdir. Bu duruma yönelik olarak CUDA kullanarak düşük ışık seviyeli görüntü iyileştirme için paralel algoritma optimizasyonu çalışması yapmışlardır. De-hazing tekniğine dayalı görüntü iyileştirme algoritması kullanmışlardır. CPU-GPU heterojen ortamında paralel hesaplama için uygun olmayan atmosferik ışık tahmininin, yüksek paralellik derecesi ile elde etmek için geliştirilmesini yapmışlardır. Geliştirdikleri yeni paralel algoritmanın, CPU üzerindeki geleneksel algoritmaya göre performansını karşılaştırmışlardır ve yürütme hızında önemli bir gelişme kaydettiklerini gözlemlemişlerdir. Ayat vd. (2015), Cyclone V FPGA kartında görüntü işleme deneyi olarak bir Sobel filtre algoritmasının uygulanması için, OpenCL için Altera SDK ya dayanan 7

21 OpenCL programlama platformunu kullanmışlardır. Bu platformun taşınabilirliğini kullanarak, çekirdek kodunun performansını, farklı görüntü ve çekirdek boyutları için GPU ve çok çekirdekli CPU uygulamalarına göre karşılaştırmışlardır. Filtre boyutunu arttırdıkları zaman FPGA, GPU ve CPU lar için hesaplama süresinin ne oranda değiştiğini yaptıkları uygulama sonucunda gözlemlemişlerdir. Sonuçlara göre her cihazın kendi optimizasyonunu gerektirdiği ve aynı kodun bu optimizasyonlar olmadan çok iyi performans göstermeyeceğini de belirtmişlerdir. Pereira vd. (2016), OpenCL standardını kullanarak CPU ve GPU platformları için Walsh-Hadamard dönüşümünün paralel uygulamasını geliştirmişlerdir. OpenCL in kod düzeyinde taşınılabilir olduğu ancak CPU ve GPU için aynı kod kullanıldığı zaman performansın düşeceğini belirtmişlerdir. Bu yüzden iki adet farklı ortamlar için Walsh-Hadamard dönüşümü sunmuşlardır. Bu dönüşümleri GPU lar için OpenCL-GPU ve CPU lar için OpenCL-CPU olarak geliştirmişlerdir. Sonuçları kıyasladıklarında GPU üzerinde çalışan OpenCL-GPU nun, çok çekirdekli bir CPU da çalışan OpenCL-CPU dan hızlı çalıştığını gözlemlemişlerdir. En iyi performansı elde etmek için OpenCL kodunun hedeflenen ortama uyarlanması gerektiği de çalışmalarında belirtilmiştir. 8

22 3. GÖRÜNTÜ İYİLEŞTİRME Sayısal görüntü işleme, herhangi bir yoldan elde edilen analog görüntünün önce sayısal forma dönüştürülmesi, ardından farklı amaçlar (iyileştirme, sıkıştırma, sınıflandırma, onarma, anlama ve yorumlama v.b.) için dijital bilgisayarlarla işlenmesi ile ilgilidir. Sayısal görüntü işleme ile ilgili ana kısımlar Şekil 3.1 de gösterilmektedir (Kızılkaya, 2008). Şekil 3.1. Sayısal görüntü işlemenin ana aşamaları (Kızılkaya, 2008) Elde Etme: Analog görüntüyü gerçek dünyadan alınıp, dijital ortamda sayısal hale dönüştürülmesinin gerçekleştiği basamaktır. Ön İşleme: Sayısal görüntünün kullanılmadan önce daha başarılı sonuçlar elde edilmesi için bir takım ön işlemelerden geçirilmesidir. Bu işlemler; - Görüntü İyileştirme - Görüntü Onarma - Görüntü Sıkıştırma Bölütleme: Bölütleme basamağında, görüntüdeki cisim ve arka planın ya da görüntü içerisinden ilgilenilen farklı özelliklere sahip alanların birbirinden ayrıştırılması gerçekleştirilir. Görüntüdeki cismin sınırları, şekli ya da o cismin alanları gibi ham bilgiler bölütleme basamağında üretilir. 9

23 Gösterim ve Tanımlama: Ham bilgiler, görüntüde ilgilenilen ayrıntı ve bilgilerin ön plana çıkarılması bu basamakta gerçekleşir. Yorumlama: Bu basamakta, bir takım farklı karar verme mekanizmaları ile görüntüdeki cisimlerin ya da alanların sınıflandırılması yapılır. Görüntü iyileştirme, görüntü işlemenin ön işleme basamağında yapılan ara basamak olarak görülebilir. Ön işleme, alınan sayısal görüntünün farklı amaçlarda daha yüksek başarı sağlanması için bir takım işlemlerden geçirilmesi işlemi olduğu daha önceden belirtilmişti. Görüntü iyileştirme işlemi ise sayısal görüntü üzerinde bazı oynamalar yapılarak istenilen bir amaç doğrultusunda görüntünün daha iyi hale getirilmesi işlemidir. Görüntü iyileştirme sürecinde her durumda aynı görüntü iyileştirme tekniği uygulanamaz. Her görüntüye ve her amaca göre görüntü iyileştirme yöntemi o duruma göre kullanılmalıdır Görüntü İyileştirme İle İlgili Temel Bilgiler Görüntü kavramı, görme ve görünüm sözcükleriyle bağlantılıdır. Cisimlerin yüzeylerine çarpan ya da iç kısımlarından geçebilen ışınları yansıtmaları yoluyla algılanmalarına görme; bu cisimlerin algılanabilen içeriğine görünüm; görünümün herhangi bir yolla sağlanmış iki boyut üzerindeki çizelgesine ise görüntü adı verilir (Kızılkaya, 2008) Analog Görüntü Elde edilen analog görüntü fonksiyonu f(x,y) sürekli fonksiyonu olsun. Dijital bilgisayar ortamında f(x,y) sürekli fonksiyonu işlenemez. Bu sebeple analog görüntünün dijital bilgisayar ortamında, üzerinde işlem yapılabilmesi için sayısallaştırılması gerekir. Analog görüntüyü temsil eden f(x,y) sürekli fonksiyonu için iki adet sayısallaştırma işlemi bulunmaktadır. Bu fonksiyonun (x,y) uzaysal koordinatlarının sayısallaştırılması işlemine görüntü örnekleme, f(x,y) genlik değerleri sayısallaştırılıyorsa bu işleme görüntü nicemleme adı 10

24 verilir (Kızılkaya, 2008). Şekil 3.2 de örnek bir görüntünün örnekleme ve nicemleme işlemlerinden geçerek sayısalaştırlıması işlemi gösterilmiştir. a b c d Şekil 3.2. Sayısal görüntünün elde edilmesi (a) Analog resim (b) Sürekli görüntüde A dan B ye tarama çizgisi, örnekleme ve nicemleme kavramlarını göstermek için kullanılır (c) Örnekleme ve nicemleme (d) Sayısal tarama hattı (Gonzalez, 1992) Görüntü Örnekleme İki boyutlu olarak elde edilen sürekli zamanlı fonksiyona sahip analog görüntüden, eşit aralıklarda olmak üzere x ekseninden N adet örnek ve y 11

25 ekseninden M adet örnek alınarak ayrık zamanlı fonksiyona sahip analog görüntü elde edilir. Bu işlem sonucunda yatayda N, ve düşeyde M örnek ile N x M örnek değerli analog görüntü tanımlanabilir. Yapılan bu işlemlere düzgün örnekleme denir. Sonuç olarak ayrık zamanlı görüntü fonksiyonu, sürekli zamanlı görüntü fonksiyonu cinsinden denklem (3.1) ile ifade edilir. f(x i, y i ) = f(x, y )comb(x, y ) (3.1) Denklemde yer alan f(x, y ), sürekli görüntü fonksiyonunu temsil etmektedir. Burada, i = 0, 1, 2,, N-1 ve j = 0, 1, 2,, M-1 olmak üzere ayrık zamanlı görüntü fonksiyonu için alınan örnek değerlerinin bulunduğu indislerdir. Son olarak denlemde yer alan comb(x, y ) ifadesi ise tarak fonksiyonunu göstermektedir. Analog sürekli zamanlı görüntü fonsiyonunun düzgün bir şeklide örneklenmesi için kullanılan tarak fonksiyonu Şekil 3.3 te gösterilir (Kızılkaya, 2008). Şekil 3.3. Düzgün örnekleme için kullanılan tarak fonsiyonu (Kızılkaya, 2008) Şekil 3.3 ten anlaşılacağı gibi tarak fonksiyonu kaydırma işlemi yapılmış impulsların toplamından oluşmaktadır. Matematiksel ifadeyle belirmek gerekirse, N 1 M 1 comb(x, y ) = δ(x i, y i) i=0 j=0 (3.2) 12

26 denklemiyle gösterilir. Sonuç olarak (3.1) ve (3.2) denklemleri kullanılarak {(x i, y i ) i = 0, 1, 2,, N-1, j = 0, 1, 2,, M-1 } ile verilen ayrık düzlem üzerinde tanımlı yeni görüntü fonksiyonu elde edilir. Bu fonksiyonu ayrık değerler cinsinden f(i, j) ile ifade edilir (Kızılkaya, 2008) Görüntü Nicemleme Ayrık görüntü fonksiyonun genlik değeri görüntüde belirli bir maksimum ve minimum değer arasında değişim gösterir. Bu değerler arası basamaklara ayrılarak, ilgili genlik değerine en yakın olan basamak değerini atama işlemine nicemleme denir. Bilgisayarlar 0 ve 1 çalışma mantığına dayandığından ötürü, nicemleme işlemi 0 ve 1 arasındaki değerler ile gerçekleşir (Kızılkaya, 2008). Bu tanıma ek olarak, sayısal görünütünün en küçük yapı birimlerinin parlaklık şiddetini gösteren değerleri bulma işlemine de nicemleme denebilir Sayısal Görüntü Örnekleme ve nicemleme işlemleri sonrasında oluşan sayısal görüntü, pozitif tam sayı değerlerinden oluşan 2 boyutlu matris yapısındadır. NxM boyutundaki matris formunda yazılan sayısal görüntünün, matris açılımı aşağıdaki ifade gösterilmiştir. f(x,y) ifadesi ise görüntüyü temsil etmekle birlikte bu ifadedeki x,y değişkenleri ise görüntü üzerindeki elemanların koordinatlarını belirtir. Bu durum denklem (3.3) ten anlaşılabilir. f(0, 0) f(0, 1) f(0, N 1) f(1, 0) f(1, 1) f(1, N 1) f(x, y) = [ ] (3.3) f(m 1, 0) f(m 1, 1) f(m 1, N 1) Bu koordinatların belirttiği elemanlar, sayısal görüntü matrisini oluşturan en küçük yapılardır. Sayısal görüntüyü oluşturan en küçük matris elemanına piksel adı verilir. Şekil 3.4 te gösterilen matriste, örnekleme işlemi sonucunda oluşan M satırlık ve N sütunluk sayısal görüntü gösterilmiştir ve matris içindeki noktalar ise pikselleri ifade etmektedir. 13

27 Şekil 3.4. Matris formundaki sayısal görüntünün piksel dağılımı Matris formundaki sayısal görüntüyü oluşturan her bir pikselin sahip olduğu parlaklık değerlerine gri seviye denir. Gri seviye aralıkları, bütün piksellerin kodlandığı bit sayısına göre belirlenir. Gri seviye sayısı aşğıda verilen denklem ile bulunmaktadır. Buradaki m ifadesi görüntüdeki bit sayısını belirtmektedir. Gri seviye sayısı = G = 2 m (3.4) Gri seviye sayısının 2 olması m ifadesinin yani bit sayısının 1 olması anlamına gelir. Bu durumda oluşan görüntüde 2 renk mevcuttur. Bu renkler 0 siyah ve 1 beyazdır. Bu görüntüye ikili (binary) görüntü denir ve görüntüdeki pikseller yalnızca bu iki rengi alabilirler (Kızılkaya, 2008). Bit sayısının 1 den büyük olması şartı ile kodlanılan görüntülere gri ölçek (gray scale) görüntü adı verilir. Gri ölçek görüntüler yaygın olarak her pikseli 8 bit ile kodlanmıştır. 8 bit görüntülerin (3.4) ifadesi sonucunda 256 adet gri seviyeden oluştuğu anlaşılabilir. Dikkat edilmesi gereken nokta, 0 gri seviyesi siyah renk, 14

28 255 gri seviyesi ise beyaz renge ve bu gri seviyeler arası ise farklı gri renk tonlarına karşılık gelir. Şekil 3.5 te 16x16 boyutundaki matristen oluşan ve pikselleri 8 bit için kodlanan sayısal görüntünün 256 farklı gri seviyeden olştuğu gösterilmiştir (Kızılkaya, 2008). Şekil x16 boyutundaki matristen oluşan görüntünün 256 farklı gri seviye gösterimi (Kızılkaya, 2008) Aynı cisme ait kırmızı, yeşil ve mavi olarak kodlanmış gri seviye görüntülerin üst üste ekranda gösterilmesi ile oluşan görüntülere renli görüntü denir. Her renk 8 bit olarak kodlanırsa, üç renk (RGB) 3x8=24 bit olarak kodlanır ve renkli görüntülerin her bir pikseli 24 bitlik veri olarak görüntülenir. Sonuç olarak renkli görüntülerdeki renk seviye aralığı ise milyondur. Örnekleme işlemi sonucunda görüntü piksellere ayrılır ve matris formunda görüntü oluşturulması sağlanır. Nicemleme işlemi sonucunda ise bit sayısına göre pikseller kodlanarak piksellere renk seviyesi ataması yapılır. Şekil 3.6 da sürekli zamanlı görüntü ve bu görüntüden örnekleme ve nicemleme işlemleri sonucunda oluşan sayısal görüntü gösterilmiştir. 15

29 a b Şekil 3.6. Analog ve sayısal görüntü karşılaştırması (a) Sürekli zamanlı görüntü (b) Görüntü örnekleme ve nicemleme sonucunda oluşan görüntü (Gonzalez, 1992) Uzaysal Çözünürlük Analog görüntünün sayısallaşması için, bu görüntüden eşit aralıklı olmak kaydıyla yatay ve dikey düzlem üzerinden örnekler (piksel) alınması gerekir. Bu örneklerin yani piksellerin sayısına uzaysal çözünürlük denir. Sayısal görüntüde bulunan piksel sayısının fazla olması uzaysal çözünürlüğü artırır ve görüntü içerisindeki ayrıntıların daha kolay anlaşılmasına neden olur. Piksel sayısı azalır ise, uzaysal çözünürlük azalır ve ayrıntıların fark edilmesi zorlaşır. Şekil 3.7 de farklı uzaysal çözünürlüklere sahip her pikseli 8 bit ile kodlanan gri ton seviyeli örnek görüntüler gösterilmiştir (Kızılkaya, 2008). 16

30 Şekil 3.7. Farklı uzaysal çözünürlükte olan ve her bir pikseli 8 bit ile kodlanan gri ton seviyeli örnek görüntüler (Kızılkaya, 2008) Gri Seviye Çözünürlük Nicemleme işlemi yapılırken analog görüntünün genlik değerleri (parlaklığı) sayısal görüntüde kullanılabilecek hale getirilirken farklı sayılarda gri seviye kullanılabilir. Görüntüdeki her bir pikselin kodlandığı bit sayısından dolayı oluşan gri seviye sayısına gri seviye çözünürlük denir. Gri seviye sayısı azalırsa nicemleme gürültüsü belirginleşmeye başlar. Şekil 3.8 de aynı uzaysal çözünürlüğe sahip farklı gri seviye çözünürlükteki görüntüleri gösterilmiştir. 17

31 Şekil 3.8. Aynı uzaysal çözünürlüğe sahip farklı gri seviyedeki görüntüler (Kızılkaya, 2008) 3.2. Görüntü Histogramı Histogram, görüntüdeki gri ton seviyelerinin piksel sayısı cinsinden ne kadar kullanıldığını belirtir. Görüntünün içerdiği piksellerin gri ton seviyeleri ile ilişkisini gösterir. Görüntü histogramı, görüntü ile ilgili bilgi vererek hangi iyileştirme tekniğinin kullanılacağına karar vermede etkili olabilmektedir. Şekil 3.9 da örnek bir görüntünün histogramı gösterilir. Histogramdaki yatay eksen gri ton seviyelerini, düşey eksen ise piksel sayılarını göstermektedir. 18

32 Şekil 3.9. Görüntü histogramı (Güllü, 2008) Parlaklık Ayarı Görüntünün parlaklığı hakkındaki bilgi, görüntü histogramından çıkarılabilir. Görüntüdeki piksellerin genelinin gri ton seviyesi 0 (siyah) değerine yakınsa parlaklık seviyesi az, 1 (beyaz) değerine yakınsa parlaklık seviyesi fazladır. Şekil 3.10 da parlaklık seviyeleri fazla ve az olan örnek görüntüler ve histogram dağılımları gösterilir. Şekil Görüntü parlaklık seviyeleri ve histogram dağılımları (Güllü, 2008) 19

33 Giriş görüntüsünün çıkış görüntüsü ile bağlantısını matematiksel olarak denklem (3.5) ile ifade edilir. g(x, y) = T[f(x, y)] (3.5) Denklemdeki f(x,y) giriş görüntüsünü, T ifadesi giriş görüntüsü üzerinde yapılan işlemi ve g(x,y) fonksiyonu ise çıkış görüntüsünü ifade eder. Görüntü üzerinde parlaklık ayarı yapılmak istenirse bu ifade denklem (3.6) ya dönüşür (Güllü, 2008). g(x, y) = f(x, y) + b (3.6) Denklemdeki b ifadesi parlaklık ayarını simgeler. Denklemde b>0 olursa parlaklık artar, b<0 olursa parlaklık azalır. Şekil 3.11 de giriş görüntüsü üzerindeki parlaklık ayarının etkisi gösterilir. Şekil Giriş görüntüsü üzerinde parlaklık ayarı (Güllü, 2008) Kontrast Ayarı Kontrast, bir görüntüde kullanılan piksellerin sahip olduğu en düşük seviye gri tonu ile en yüksek seviye gri tonu arasındaki bağlantıyı ifade eder. Kontrastı yüksek olan görüntülerde ayrıntılar daha kolay farkedilirken kontrastı düşük olan görüntülerde ayrıntılar daha zor farkedilir. Şekil 3.12 de kontrast seviyeleri düşük ve yüksek olan görüntüler gösterilir. 20

34 Şekil Görüntü kontrast seviyeleri ve histogram dağılımları (Güllü, 2008) Görüntü üzerindeki kontrast ayarınının matematiksel ifadesi denklem (3.7) ile ifade edilir. g(x, y) = af(x, y) (3.7) Denklemdeki a ifadesi kontrast ayarını ifade eder ve a=1 ise giriş görüntüsü çıkış görüntüsü ile aynı olur. Denklemde a>1 olursa kontrast seviyesi artarken, a<1 olursa kontrast seviyesi azalır. Şekil 3.13 te kontrast seviyesinin giriş görüntüsü üzerindeki etkisi gösterilir. 21

35 Şekil Giriş görüntüsü üzerinde kontrast ayarı (Güllü, 2008) 3.3. Görüntü İyileştirmede Kullanılan Filtreler Görüntü filtreleme görüntüyü daha iyi ve istenilen hale getirmek için kullanılan, görüntüdeki istenilen ayrıntıları ortaya çıkarmak ve istenilmeyen gürültülerin yok edilmesini sağlayan matris yapılarıdır. Filtreleme sonucunda görüntüdeki her pikselin değeri yeniden hesaplanır. Filtrelerin matris boyutları tek sayıdır (3x3, 5x5, 7x7). Farklı amaçlar doğrultusunda kullanılan bu filtreler; - Gürültü yok etme, - Görüntü yumuşatma, - Kenar belirleme, - Kenar yakalama işlemleri için kullanılabilirler. Gürültü yok etme ve görüntü yumuşatma işlemlerinde detaylar arası ton geçişi azalır. Bu işlemlerde alçak geçiren filtreler uygulanır. Kenar belirleme ve kenar yakalama işlemlerinde ise ton geçişleri arasındaki fark fazladır ve belirgindir. Bu yüzden bu işlemlerde yüksek geçiren filtreler uygulanır Görüntü Konvolüsyonu Bir maskenin bir görüntü üzerinden kaydırılarak, görüntü üzerindeki piksellerin maske üzerindeki değerler ile çarpılma işlemine görüntü konvolüsyonu denir. Filtreleme işlemlerinde giriş görüntüsü, maske ile konvolüsyon işlemine tabi 22

36 tutulur. İşlem sonucunda oluşan fonksiyon ise filtrelenmiş çıkış görüntüsünü verir. Denklem (3.8) de konvolüsyon işleminin matematiksel ifadesi verilmiştir (Güllü, 2008). a b g(x, y) = w(s, t)f(x s, y t) s= a t= b Bu denklemde; - w, konvolüsyon maskesi - w maskesi m x n boyutunda matristir - a=(m-1)/2, b=(n-1)/2 - f, giriş görüntüsü - g, çıkış görüntüsüdür (Gonzalez, 1992). (3.8) (3.5) deki ifade de değerler yerine yazılacak olursa; g(x, y) = w( a, b)f(x + a, y + b) + w( a + 1, b + 1)f(x + a 1, y + b 1) + + w(a, b)f(x a, y b) (3.9) elde edilir. Denklem (3.9), görüntü konvolüsyonu ifadesinin açılmış halidir. Bu denlemdeki maske boyutu 3x3 seçilirse; g(x, y) = w( 1, 1)f(x + 1, y + 1) + w( 1, 0)f(x + 1, ) + + w(1, 1)f(x 1, y 1) (3.10) Denklem (3.10), 3x3 boyutlu konvolüsyon maskesi ile yapılan konvolüsyon işleminin matematiksel ifadesini göstermektedir. 3x3 konvolüsyon maskesi kulanılarak yapılan konvolüsyon işleminin genel görüntüsü Şekil 3.14 te gösterilir. 23

37 Şekil x3 Konvolüsyon maskesi kullanılarak gerçekleştirilen filtreleme işlemi mekanizması (Gonzalez, 1992) Bu mekanizmada 3x3 lük maske ile o anda konvolüsyon yapmakta olduğu görüntü parçasınının pikselleri arasındaki işlem bağlantısı Şekil 3.15 te gösterilir. Görüntü parçasının ortasındaki 70 değerinin yeni ifadesi konvolüsyon işlemi sonrasında bulunur. Bu konvolüsyon işlemi (3.11) de ifade edilmiştir. a b g(x, y) = w(s, t)f(x s, y t) s= a t= b g(x, y) = w( 1, 1)f(x + 1, y + 1) + w(0, 1)f(x, y + 1) + w(1, 1)f(x 1, y + 1) + w( 1, 0)f(x + 1, y) + w(0, 0)f(x, y) + w(1, 0)f(x 1, y) + w( 1, 1)f(x + 1, y 1) + w(0, 1)f(x, y 1) + w(1, 1)f(x 1, y 1) g(x, y) = ( 1x85) + ( 1x68) + ( 1x51) +( 2x83) + (10x70) + ( 2x48) 24

38 +( 1x77) + ( 1x75) + ( 1x50) = 32 (3.11) Şekil x3 Konvolüsyon maskesindeki değerler ile görüntü parçası üzerindeki piksellerin konvolüsyon işlem bağlantısı (Güllü, 2008) Ortalama Filtresi Ortalama filtresi, görüntünün ilgili piksel değerinin kendisi ve komşu piksellerin dâhil olduğu ortalama değer ile değiştirilmesidir. Ortalama filtresinde kullanılan maske ile giriş görüntüsünün konvolüsyon işlemi sonrasına çıkış görüntüsü elde edilir. Ortalama filtresi, görüntüdeki gürültüleri ortadan kaldırmak için kullanılır. Bu amaç doğrultusunda filtrenin uygulanmasıyla piksel değerlerinin komşuları ile arasındaki değişim miktarının aza indirgenmesi hedeflenir. Bu yüzden çıkış görüntüsü yumuşatılmış hale gelir. Sonuç olarak görüntü netliği bulanık hale gelir. Şekil 3.16 da ortalama filtreleri maskesi gösterilmiştir. a b Şekil Ortalama filtreleri (a) 3x3 Matris boyutundaki ortalama filtre makesi (b) 5x5 Matris boyutundaki ortalama filtre makesi (Güllü, 2008) 25

39 Kullanılan maske boyutu büyüdükçe görüntü daha bulanık hale gelir. Bu yüzden netlik gittikçe düşer. Şekil 3.17 de 500x500 çözünürlüğündeki bir görüntüye uygulanan ortalama filtrelerinin maske boyutuna göre çıkan sonuç görüntüleri gösterilmiştir. Şekil Ortalama filtresinin maske boyutu büyüklüğüne göre uygulanma sonucu oluşan çıkış görüntüleri (Gonzalez, 1992) Gauss Bulanıklaştırma Filtresi Gauss filtresi gauss formülünden elde edilir ve görüntüyü yumuşatma, gürültüyü ortadan kaldırma gibi sebeplerden dolayı tercih edilir. Tek boyutlu gauss fonksiyonu yazılmak istenirse (Çelik, 2015); (3.12) 26

40 Burada standart sapmayı göstermektedir. Şekil 3.18 de =1 için tek boyutlu örnek gauss dağılımı gösterilmiştir. Şekil Standart sapma değeri 1 olan tek boyutlu gauss dağılımı İki boyutlu gauss fonksiyonu ise (3.13) de gösterilmiştir (Çelik, 2015). (3.13) Bu denklemde x yatay eksendeki merkezden uzaklık, y dikey eksendeki merkezden uzaklığı göstermektedir. Bu denklemde yatay ve dikey standart sapmaların eşit olduğu varsayılmıştır. Şekil 3.19 da =1 için iki boyutlu gauss dağılımı gösterilmiştir. 27

41 Şekil Standart sapma değeri 1 olan iki boyutlu gauss dağılımı Gauss bulanıklaştırma filtresi uygulaması, iki boyutlu gauss maskesi ile giriş resminin konvolüsyonlarının alınması işlemdir. Konvolüsyon işlemi öncesinde iki boyutlu gauss maskesi oluşturulmalıdır. İki boyutlu gauss maskesini hesaplamak için önce maske boyutu ve standart sapma değerleri belirlenmelidir. 5x5 matris boyutunda maske oluşturmak için x ve y değer aralığı -2, -1, 0, 1, 2 olarak seçilir. 3x3 matris boyutunda maske oluşturmak için ise x ve y değer aralığı -1, 0, 1 seçilir. Standart sapma değeri de belirlendikten sonra matris eleman değerleri bulunur. Bulunan değerler tamsayı değerlerine yuvarlanır. Şekil 3.20 de 5x5 maske boyutunda ve standart sapma değeri 1 olan gauss bulanıklaştırma maskesi gösterilmiştir. Şekil 3.21 de ise 3x3 maske boyutunda ve standart sapma değeri 1 olan gauss bulanıklaştırma maskesi gösterilir. 28

42 Şekil x5 boyutunda standart sapması 1 olan gauss bulanıklaştırma maskesi Şekil x3 boyutunda standart sapması 1 olan gauss bulanıklaştırma maskesi Laplacian Filtresi Laplacian filtresi görüntüde netleştirme ve sınırları belirleme amacıyla kullanılır. İkinci derece türev alma mantığına dayanır (Gonzalez, 1992). Tek boyutlu bir f(x) fonksiyon için birinci dereceden türev; (3.14) Benzer bir şekilde ikinci dereceden türevini tanımlarsak; 29 (3.15)

43 ifadesi elde edilir. İki boyutlu f(x,y) fonksiyonunun ikinci derece türevi ifade edilmek istenirse, (3.16) denklemi ile ifade edilir. Ayrı ayrı x ve y değişkenlerine bağlı olarak türevler alınırsa, (3.17) (3.18) denklemleri elde edilir. Tek bir ifade ile yazılmak istenirse f(x,y) fonksiyonunun ikinci derece türevi, (3.19) olarak bulunur. 2 f, f fonksiyonun ikinci derece türevini ya da gradientini ifade eder. Elde edilen eşitlik 3x3 boyutundaki matris formuna geçirilir ve laplacian maskesi elde edilir. Elde edilen maske Şekil 3.22 de gösterilir. Şekil x3 boyutunda elde edilen laplacian maskesi Bu maskenin dışına laplacian maskesi olarak kullanılabilen diğer maskeler şekil 3.23 te gösterilir. 30

44 Şekil x3 boyutundaki farklı laplacian maskeleri Laplacian filtre uygulaması 2.derece türev alınarak yapılmaktadır. Görüntüdeki tek bir görüntü şeridine uygulanan birinci ve ikinci derece türevin piksel geçişlerinde ne anlama geldiği ve nasıl yorumlandığı Şekil 3.24 te gösterilir. Şekil Görüntü üzerinde birinci ve ikinci derece türev uygulaması (Gonzalez, 1992) 31

45 Laplacian filtresinin uygulanma işlemi, giriş görüntüsü ile laplacian maskesinin konvolüsyonlarının alınmasıdır. Bu işlem sonucunda oluşan görüntü süzgeçlenmiş görüntü olarak adlandırılır. Netleştirilmiş görüntüyü bulmak için ise denklem (3.20) ve (3.21) den faydalanılır. Laplacian maskesinin merkezindeki katsayı negatif ise (3.20), pozitif ise (3.21) kullanılır. Sonuç olarak netleştirilmiş görünütü g(x,y) elde edilir (Gonzalez, 1992). (3.20) (3.21) Örnek bir laplacian maskesi ile yapılan uygulama sonucunda giriş görüntüsü, filtrelenmiş görüntü ve sonuç görüntüsü Şekil 3.25 te gösterilir. Sonuç görüntüsünün giriş görüntüsüne göre oldukça net olduğu gözlemlenir. Şekil Laplacain filtresinin giriş görüntüsü üzerindeki uygulaması (Güllü, 2008) Sobel Operatörleri Kenar belirleme uygulaması, bir görüntüdeki gri ton değerlerindeki ani değişikliklerin olduğu yerleri belirleme için kullanılır. Sobel operatörü kenar belirleme uygulamaları için kullanılır. Görüntü üzerindeki süreksizlikleri belirler. 32

46 Süreksizlikleri ve ani değişiklikleri belirlemek için matematikteki birinci derece türev alınarak yapılır. Birinci derece türev yerine gradient kavramı da kullanılmaktadır. 2 boyutlu f(x,y) fonksiyonun gradient vektör tanımı yapılmak istenirse (3.22) ifadesi yazılır (Gonzalez, 1992). (3.22) f, f fonksiyonun gradientini, Gx yatay yöndeki kenarları, Gy dikey yöndeki kenarları belirtir. Bu vektörün genliği ise (3.23) te verilir. (3.23) Pratikte ise yaygın olarak gradienti bulurken kare veya karekök işlemlerinin yerine mutlak toplam kullanılır. Bu ifade (3.24) ile gösterilir. (3.24) 3x3 boyutundaki Gx ve Gy sobel operatörleri Şekil 3.26 da gösterilir. Şekil Sobel operatörleri 33

47 Gx ve Gy sobel operatörlerinin giriş görüntüsü ile ayrı ayrı konvolüsyonları alınır. Sonra denklem (3.21) kullanılarak bu konvolüsyonlar toplanır. Bu işlemler sonucunda kenarları belirlenmiş çıkış görüntüsü oluşur. Giriş görüntüsü ve sobel operatörleri kullanılarak elde edilen çıkış görüntüsü Şekil 3.27 de gösterilir. Şekil Sobel operatörlerinin giriş görüntüsü üzerindeki uygulaması (Kızılkaya, 2008) 34

48 4. PARALEL PROGRAMLAMA Günümüzde gelişimini sürdürmekte olan bilgisayar teknolojisi, yazılımların ihtiyaçlarını karşılamakta çoğu zaman zorluk yaşamaktadır. Yazılımların gereksinimleri gün geçtikçe artmaktadır. Bu duruma istinaden gelişen teknoloji sonucunda yazılımlar daha büyük boyutlu hafızaya, daha hızlı işlemciye ihtiyaç duymaktadır. Bilgisayarlardaki hafıza boyutları yarıiletken malzeme kullanılarak artırılabilmektedir. Ama bilgisayarların hızı belirli maksimum değerlere dayanmasından ötürü saat hızını artırmak işlemcide yapılan hesaplamaların yanlış sonuçlar ortaya çıkarmasına, yüksek güç tüketmesine neden olmaktadır. Bu durumda birçok işlemci paralel olarak aynı iş üzerinde çalışacak şekilde birbirlerine bağlanarak sorun çözülebilmiştir. Paralel olarak çalışan işlemcileri uygun şekilde kullanabilmek için yazılımların paralel olarak programlanması gerekmektedir. Seri programlamada çözülen problem, işlemlere ayrılarak tek bir işlemci üzerinde gerçekleştirilir. İşlemler sırasıyla işlemcide çözülür. Bir işlemin çözümü bitmeden diğer işleme geçilemez. Seri programlama mantığında işlemlerin sırasıyla yapılması ve bir işlem bitmeden diğerine geçilememesi hız ve verimlilik açısında olumsuz etkilere sahiptir. Seri programlamanın çalışma mantığı, Şekil 4.1 de gösterilmiştir (Altıntaş ve Yegenoğlu, 2011). Şekil 4.1. Seri programlama çalışma mantığı Seri programlamadaki çalışma mantığı olan kodların sırasıyla yürütülmesinin yerine aynı anda yürütülmesi istendiğinde paralel programlama yapılması 35

49 gerekir. Paralel programlama mantığına göre bir problem parçalara ayrılarak aynı zamanda çözülebilir. Problemin farklı parçaları, farklı işlemciler ya da işlemcilere ait farklı çekirdekler üzerinde aynı anda çalıştırılır. Bir işlemci ya da bir çekirdekteki işlemin başlaması için diğer işlemin bitmesi beklenmez. Paralel programlamanın çalışma mantığı, Şekil 4.2 de gösterilmiştir (Altıntaş ve Yegenoğlu, 2011). Şekil 4.2. Paralel programlama çalışma mantığı Programlar, yalnız uygun metotları ve komutları içeriyorlarsa diğer işlemcilerin kullanılmasını sağlayarak daha kısa sürede işlem yapılabilmesine olanak sağlamaktadır. Uygun metotları devreye sokmak için yapılacak olan işlemleri ve hesaplamaları paralel olarak kodlamak gerekir. Programın içeriğinde paralel olarak kodlama yapılan yerler doğru ve uygun şekilde yapılmışsa program, işlemleri istenilen kadar işlemci üzerinde eş zamanlı olarak çalıştırır Paralellik Türleri Paralel programlama yapılması sonucu gerçekleşen paralellik işlemci içinde ve dışında olabilir. Dört farklı sınıfta paralellik türü vardır (Akçay vd. 2011). * Bit Düzeyinde Paralellik Bir saat darbesi süresinde, işlemci içinde işlenebilecek bit veri miktarını belirtir. 36

50 * Komut Düzeyinde Paralellik İşlemci içinde, aynı anda yürütülen komut miktarı belirler. * Veri Düzeyinde Paralellik Farklı işlemci veya çekirdeklerin, verilerin farklı parçaları üzerinde aynı görevi yapmasını belirtir. Programlardaki döngülerde bu durum gerçekleştirilebilir. * Görev Paylaşımlı Paralellik Farklı işlemci ya da çekirdeklerin, aynı ya da farklı veri üzerinde farklı görevlerin çalıştırılmasını belirtir. Programlardaki fonksiyonlarda bu durum gerçekleştirilebilir Paralel Hesaplama Bir algoritmada paralelleştirme kullanılmasının sebebi, çoklu işlemci çekirdeklerinden en verimli şekilde yararlanabilmektir (Alexander ve Gardner, 2009). Hesaplama yapılacak olan işlem ilk olarak, Şekil 4.3 te gösterildiği gibi, hesaplama yapacak ne kadar bölüm (bilgisayar ya da işlemci) var ise, bölüm sayısı kadar iş parçalarına bölünür. Buradaki bölünen iş parçaları farklı birimlere iletilir. Daha sonra bölünen iş parçalarının işlemleri, iletildiği birimlerde eşit zaman içerisinde tamamlanır. Geçen süre sonucunda elde edilen hesaplama sonuçları merkezdeki bir birime veya bilgisayara iletilir. Sonuç olarak iş parçalarına ayrılan işlemin paralel olarak hesaplanması ve paralellik kullanılarak daha kısa sürede işlem sonucuna ulaşılması sağlanmış olur. 37

51 Şekil 4.3. Paralel programlamada iş birimlerine bölüştürme işlemi Paralel programlama aşamalarla belirtilecek olunursa; 1) İşlem parçalara bölünür. 2) Bölünen parçalar farklı birimlere iletilir ve bu birimlerde eşit zaman aralıklarında işlevleri görülür. 3) Bütün işlemler görüldükten sonra merkeze iletilir Paralel Bilgisayar Mimarisi Paralel bilgisayarlarda paylaşımlı bellek ve dağıtık bellek olmak üzere iki farklı mimari yapısı vardır (Pacheco, 1997). Şekil 4.4 te gösterilen paylaşımlı bellek mimari yapısında, bu belleği paylaşan birden fazla işlemci mevcuttur. Bir işlemcinin bellek bölgesinde gerçekleştirdiği değişiklikler diğer işlemciler tarafından görülür. Farklı çekirdek ve işlemciler üzerinden belleğe erişim için global adres kullanılır ve bu durum programlayıcıya sağladığı kolaylıktır. Fakat aynı zamanda birçok işlemci ortak belleğe ulaşmak istediğinde aksamalar ve uzun bekleyişler olabilir. Bu durumun alternatifi olarak işlemciler ile bellek arasında anahtar tabanlı yollar mevcuttur. Anahtarlı bağlantıların mevcut olması ile belleğe ulaşım alternatif yollar aracılığı ile olabilir (Pacheco, 1997). 38

52 Şekil 4.4. Ortak bellek mimarisi Her işlemcinin kendisine ait belleğinin bulunduğu dağıtık bellek mimarisi Şekil 4.5 te gösterilir. Bu yapıda her bir işlemci kendi belleğinden sorumludur ve diğer işlemecinin adresini bilmez. Bellek adresi için global adres değişkeni tanımlanamaz. İşlemci kendi belleğine erişmek istediğinde beklemeden anında erişebilir (Pacheco, 1997). Şekil 4.5. Dağıtık bellek mimarisi 4.4. Flynn Taksonomisi Bilgisayar mimarilerini sınıflandırmak için Michael J. Flynn dört farklı sınıflandırma yapmıştır (Flynn, 1972). 39

53 * Tek Komut Tek Veri ( SISD ) Bu mimaride çalıştırılmak istenen komut tek bir işlemci üzerinde gerçekleştirilir. Seri programlama buna en iyi örnek olarak gösterilebilir (Barney, 2010). * Tek Komut Çok Veri ( SIMD ) Çok işlemcili ve ya çok çekirdekli olan bu mimari yapılarında çalıştırılmak istenen kodun eş zamanlı olarak işlemciler ve ya çekirdekler üzerinde yürütülmesi işlemidir. Program belleğinden alınan aynı kod işlemci birimleri üzerinde SIMD mimarisi farklı işlemci birimlerinde farklı komutlar yürütülmesi prensibine dayanır. Dağıtık bellek mimarisine sahip bu mimaride her bir işlemci biriminin kendi belleği vardır. Her işlem birimi farklı veri elemanını işleyebilir. Ortak bellek yapısı vardır ve yürütülmek istenen kod buradan ilgili işlemci birimlerine gönderilir (Barney, 2010). * Çok Komut Tek Veri ( MISD ) Bu mimaride her bir işlemci birbirlerinden bağımsız olarak komutları çalıştırır. Her işlem birimi kendine gelen veri üzerinde kendi komutunu işletir ve sonucu işlem sırasında bir sonra gelen işlemciye iletir (Barney, 2010). * Çok Komut Çok Veri ( MIMD ) İşlemci birimleri (İB) birbirinden bağımlı ya da bağımsız olarak çalışabilirler (Barney, 2010). Bu mimarilerin iç yapıları Şekil 4.6 da gösterilir. 40

54 Şekil 4.6. Flynn taksonomisinde bulunan mimarilerin iç yapıları 4.5. Paralel Programlama Modelleri Ortak Bellek Modeli * İş Parçacıklı (Thread) Bu programlama modelinde bir tane uzun bir işlemi, daha küçük iş parçalarına (thread) ayırıp eşzamanlı olarak yürütme prensibi vardır (Barney, 2010). Şekil 4.7 de gösterilen ana program (main) yerel işletim sistemi üzerinde çalıştırmak için programlanır. Ana program bazı seri işler gerçekleştirir ve aynı anda işletim sistemi tarafından programlanabilen ve çalıştırılabilen birkaç iş parçacığı oluşturur. Her bir iş parçacığı yerel verilere sahiptir, ancak aynı zamanda ana 41

55 programın tüm kaynaklarını paylaşır. Bu, her iş parçacığı için bir programın kaynaklarını kopyalamayla ilgili yükü hafifletir. Her iş parçacığı, ana programın hafıza alanını paylaştığı için genel bellek görünümünden de yararlanır. Herhangi bir iş parçacığı, diğer iş parçacıklarıyla aynı anda herhangi bir alt program olarak çalışabilir. İş parçacıkları, genel bellek vasıtasıyla birbirleriyle iletişim kurar. İş parçacıkları uygulamaları, paralel kaynak koddan çağrılan alt program kütüphanesi ve seri ya da paralel kaynak koda yerleştirilmiş bir dizi derleyici yönergelerini içerir. Bu durumlarda paralelliği belirlemek programcının görevidir. Şekil 4.7. Programın iş parçacıklarına ayrılması (T1, T2, T3, T4: İş parçacıkları) * İş Parçacıksız (Without Thread) Bu programlama modelinde işlemler ve ya görevler, okuma ve yazma yapmak için ortak adres paylaşımı yaparlar. Bu modellerde adres erişimi, çakışma gibi problemleri çözmek için kilit yapıları kullanılır Dağıtık Bellek Modeli * Mesaj Geçirme Modeli Bu modelde görevler, hesaplama sırasında kendi yerel bellekleri kullanırlar (Barney, 2010). Birden fazla görevin aynı makinada olabilmesinin yanında farklı makinalarda olma durumu da vardır. Görevler arasındaki veri alışverişin 42

56 gerçekleşmesi, birbirleri arasında mesaj gönderip alma işlemleriyle meydana gelir. Bu durumdan dolayı veri alışverişinin gerçekleşmesi, birbirleri arasında kurulan iş birliği ile olur. Bu modelde uygulamalar genellikle alt program kütüphanesi içerir. Alt programları çağırma işlemi, kaynak koda yerleştirilmiştir. Bu model yapısı Şekil 4.8 de gösterilir. Şekil 4.8. Mesaj geçirme modeli yapısı Veri Paralel Modeli Adres uzayı global olarak değerlendirilir. Bu modelde paralel çalışmaların çoğu veri kümesindeki işlemleri gerçekleştirmek için olur (Barney, 2010). Veri takımları ortak bir yapıda düzenlenir. Görevler, aynı veri yapısı üzerinde topluca çalışır ancak her görev aynı veri yapısının farklı bölmhoshonde yürütülür. Görevler, aynı işlemi kendi çalışma alanlarında gerçekleştirirler. Bu model Şekil 4.9 da gösterilir. 43

57 Şekil 4.9. Veri paralel modeli 4.6. Grafik İşlemci Birimi (GPU) Grafik işlemci birimi (GPU), bilgisayarlarda grafik oluşturmak için kullanılan elektronik devredir. GPU ların ana görevi grafiksel işlemlerde CPU nun (Merkezi İşlemci Birimi) yükünü azaltarak daha yüksek performans sağlamaktır. Günümüzde, GPU lar da CPU lar gibi çok çekirdekli yapılar haline gelmiştir (Peker ve Şen, 2012). Son yıllarda GPU daki transistor sayılarının artış göstermesi ile görüntüyü meydana getiren matrislerde işlem yapabilmesi hızlanmıştır. Gerçek zamanlı, yüksek tanımlı 3 boyutlu grafikler için yüksek piyasa talebi sebebiyle GPU'lar çok paralel, çok iş parçacıklı, muazzam hesaplamalı beygir gücü olan çok çekirdekli işlemci ve çok yüksek bellek bant genişliği olan yapılara dönüşmüştür (NVIDIA CUDA, 2017). Şekil 4.10 ve Şekil 4.11 de GPU ve CPU arasındaki karşılaştırmalar gösterilir. 44

58 Şekil CPU ve GPU için bellek bant genişliği karşılaştırması (NVIDIA CUDA, 2017) Şekil CPU ve GPU için saniyedeki ondalık sayı işlemlerinin karşılaştırması (NVIDIA CUDA, 2017) 45

59 Ondalık sayı işlemleri yapabilme hızları açısından GPU nun CPU dan çok daha fazla olmasının nedeni, GPU nun çoklu paralel hesaplama için özelleşmiş olmasıdır. Bu nedenle GPU da fazla sayıda transistor, veri ön bellekleme (data cache) ve akış denetimi (data control) yerine yüksek derecede paralellik gerektiren veri işlemesi için tasarlanmış ve buna yönelik GPU içine yerleştirilmiştir (NVIDIA CUDA, 2017). Şekil 4.12 de CPU ve GPU tek çekirdek içerisindeki iç mimari yapıları gösterilmiştir. Şekil CPU ve GPU iç mimari gösterimleri (NVIDIA CUDA, 2017) Son yıllarda GPU lar grafik uygulamaları dışında genel amaçlı kullanılmaya başlanmıştır. Bu durum genel amaçlı uygulamaların hız performanslarına olumlu etki göstermiştir Genel Amaçlı Grafik İşlemci Birimi (GPGPU) GPU nun sadece grafik işlemlerinde değil, bunların yanında genel amaçla kullanılması genel amaçlı grafik işleme birimini (GPGPU) ortaya çıkarmıştır. GPGPU nun çalışma mantığı uygulama içindeki hesaplamanın yoğun olan kısımlarını paralel olarak GPU içerisinde, diğer kısımları ise CPU içinde işleve sokmaktır (Çetin ve Hacıömeroğlu, 2013). GPGPU ile gerçekleştirilen uygulamalar; sayısal işaret isleme, görüntü işleme, ses işleme, paralelleştirilebilen bilimsel hesaplamalar. 46

60 GPGPU uygulamaları iki aşamadan oluşur. 1. CPU içinde çalıştırılabilir olan ana işlemci (host) program. 2. GPU daki çekirdekler içinde hesaplama yapabilir durumda olan çekirdek fonksiyonundan. Çekirdekler içerisinde çalışmakta olan çekirdek fonksiyonları, CPU dan GPU ya verinin iletilmesi sonucunda bu verinin kendisine düşen kısmı ile ilgili işlemleri yerine getirir. CPU daki ana işlemci programı tarafından yürütülen işlemler; gelen verinin GPU ya iletilmesi, istenilen verilerin toplanması, verilerdeki format değiştirme gibi ardışık işlemlerdir (Yağlıkçı, 2014). Son yıllardaki GPU nun genel amaçlar için kullanılmasına yönelik çalışmalar gerçekleştirilmesi bazı altyapıların ortaya çıkmasına zemin hazırlamıştır. OpenCL ve CUDA yazılım geliştirme platformları, grafik işlemciler üzerinde genel amaçlı yazılım yapılmasına olanak sağlayan yapılardır OpenCL (Open Computing Language) OpenCL CPU, GPU ve diğer işlemcilerin birleşiminden oluşan bilgisayar yapılarının programlanması için geliştirilen yazılım platformudur. OpenCL, heterojen sistemlerin genel amaçlı paralel programlanması için ilk açık, telif ücretsiz standarttır. OpenCL standardı ilk önce Apple tarafından tanıtıldı ve daha sonra açık standartlar örgütünün (Khronos Group) parçası oldu. OpenCL yapısı, çekirdeğe yazmak için dil tanımlar. Bu çekirdekler farklı hesaplama aygıtlarında çalışabilirler. OpenCL, hesaplama çekirdeği yazmak için genişletilmiş bir C dili ve bu çekirdekleri oluşturmak ve yönetmek için bir dizi uygulama programlama ara yüzü (API) tanımlar. Hesap çekirdeği, hedeflenen aygıt için ana bilgisayar uygulaması yürütülürken anında derleyen bir çalışma zamanı derleyicisi ile derlenir. Bu durumda ana işlemci uygulamasının, tek bir taşınabilir bilgi işlem çekirdeği kümesiyle sistemdeki tüm hesaplama aygıtlarından yararlanmasını sağlar (Banger ve Bhattacharyya, 2013). 47

61 OpenCL Özellikleri OpenCL özellikleri dört kısımda tanımlanır. Platform Modeli: OpenCL C çekirdeğini yürütme işi için bir veya daha fazla aygıt işlemcisi ve yürütmeyi koordine eden bir ana işlemci var olduğunu belirtir. Ayrıca aygıtlar için soyut bir donanım modeli tanımlar. Yürütme Modeli: OpenCL ortamının ana işlemci tarafından nasıl yapılandırıldığını ve ana işlemcinin aygıtları çalışma şeklini nasıl yönlendireceğini tanımlar. Bu, ana işlemcide yürütülecek bir ortamın, ana makine-aygıt etkileşim mekanizmalarının ve çekirdeklerin yapılandırılması sırasında kullanılan eşzamanlılık modelinin tanımlanmasını içerir. Eşzamanlılık modeli, bir algoritmanın OpenCL çalışma öğelerine ve çalışma gruplarına nasıl ayrıştırılacağını tanımlar. Bellek Modeli: Çekirdeklerin kullandığı soyut belleği tanımlar. Bellek modeli, diğer hızlandırıcılar tarafından kabul edilebilirliği sınırlı olmasa da, geçerli GPU bellek hiyerarşilerine çok yakındır. Programlama Modeli: Eşzamanlılık modelinin fiziksel donanımla nasıl eşleştirileceğini tanımlar (Banger ve Bhattacharyya, 2013) Platform Modeli OpenCL platformunda, OpenCL destekli yapılara cihaz (device) denir. Cihazlar GPU, DSP, FPGA ya da çok çekirdekli GPU lar olabilir. Bu cihazlar ortak bir ana işlemciye bağlıdır. Cihazlar bir veya daha fazla hesaplama birimlerinden (compute units) oluşur. Hesaplama birimleri birbirlerinden bağımsız şekilde fonksiyon gösterirler. Hesaplama birimleri de bir veya daha fazla işleme elemanlarından (processing elements) oluşur (Banger ve Bhattacharyya, 2013). İşleme elemanları kodları, SIMD ya da SPMD olarak çalıştırır. Tek bir komut işlemi aynı anda tasarıma göre değişmekle birlikte 2, 3, 4, 8 veya 16 kelimelik veri 48

62 üzerine uygulayabilmektedir. Bu konsept Şekil 4.13 te gösterilir (Banger ve Bhattacharyya, 2013). Şekil Platform modeli Yürütme Modeli OpenCL yürütme modeli iki bileşenden oluşur: çekirdekler (kernels) ve ana işlemci programları. Çekirdekler, bir veya daha fazla OpenCL cihazı üzerinde çalışan çalıştırılabilir programın parçalarıdır. Çekirdekler, veri ya da görev paralelinde olabilen C fonksiyonlarına benzetilebilir. Ana işlemci programı ana sistem üzerinde yürütülür, cihazların bağlamını (context) tanımlar ve komut sıralarını kullanarak çekirdek yürütmelerini yönetir. Çekirdekler sırayla sıraya dizilir, ancak sırayla veya sıra dışı olarak yürütülebilir (AMD, 2010). Çekirdek, ana işlemci üzerinde tanımlanır. Ana işlemci programı, OpenCL cihazı üzerinde çekirdeğin çalıştırılması için komut gönderir. Bu komut gönderildiği zaman, OpenCL sistemi tamsayı indis uzayı oluşturur. Çekirdek, bu tamsayı indis uzayının her bir noktası için işlem yapar. Çalışan çekirdeğin her bir birimine iş kalemi (work-item) denir. İş kalemleri bağımsızdırlar. İş kalemleri, indis uzayında koordinatlar ile tanımlanır. Her bir iş kalemi aynı çekirdek fonksiyonunda ve farklı data üzerinde çalıştırılır (AMD, 2010). 49

63 Tam sayı indis uzayı N boyutludur ve N=1,2 ya da 3 olabilir. Doğrusal bir veri dizisinin işlenmesi N = 1, görüntü işlenmesi N = 2 ve 3 boyutlu cildin işlenmesi durumunda ise N = 3 olarak kabul edilir. N boyutlu indis uzayları iş gruplarına (work-group) bölünür. İş grupları da iş kalemlerine bölünerek uzayın indislenmesi yapılır. Bölünme işlemleri ana işlemci tarafından yapılır. Her bir iş grubunun boyutu, kendi yerel dizin alanı tarafından tanımlanır. Aynı iş grubundaki tüm iş kalemleri aynı cihazda birlikte yürütülür. Tek bir cihazda yürütülmesinin nedeni, iş kalemlerinin yerel bellek ve senkronizasyonu paylaşmasına izin vermektir. Küresel iş kalemleri bağımsızdır ve senkronize edilemez. Senkronizasyona yalnızca bir iş grubundaki iş kalemleri arasında izin verilir. İş kalemlerinin, iş gruplarına göre gruplandırılması Şekil 4.14 te gösterilir (AMD, 2010). Şekil İş kalemlerini iş gruplarına göre gruplandırılması (AMD, 2010) Notasyonların daha iyi anlaşılması için Şekil 4.15 te iş grubu örneği gösterilir. Şekil 4.15 te 1024 (32x32) olan iki boyutlu bir resim gösterilmektedir. Dizin alanı, 16 iş grubuna bölünmüştür. Vurgulanan iş grubunun kimliği (3,1) ve yerel boyutunun 64 (8x8) olduğu gösterilir. İş grubundaki vurgulanan iş kaleminin yerel kimliği (4,2), fakat evrensel kimliği (28,10) ile de belirtilebilir. Kısacası çekirdek içindeki iş kalemlerinin kimlikleri (indisleri) çağrılırken her iki değer de kullanılabilir (AMD, 2010). 50

64 Şekil İş grubu örneği (AMD, 2010) Ana işlemci programı, içeriği kullanarak OpenCL cihazındaki çekirdeklerin kurulumdan ve yönetiminden sorumludur. OpenCL ortamı, ana işlemci programı içinde oluşturulduğunda çalışabilmek için cihazlar, çekirdekler, program nesneleri ve bellek nesnelerine gerek vardır (Munshi vd. 2012). Cihazlar: Ana işlemci tarafından kullanılacak OpenCL cihazlarının koleksiyonudur. Çekirdekler: OpenCL aygıtlarında çalışan OpenCL fonksiyonlarıdır. Program Nesneleri: Program kaynak kodu ve çalıştırılabilir çekirdek uygulaması. Bellek Nesneleri: OpenCL aygıtları tarafından görülebilen ve bir çekirdek içinde kullanılan nesneler kümesidir. Ana işlemci ve OpenCL cihazları arasındaki etkileşim, ana işlemci tarafından komut gönderilmesiyle gerçekleşir. Bu yapıya komut kuyruğu denir. Komut kuyruğu, ana işlemci tarafından oluşturulur ve ortam tanımlandıktan sonra tek bir OpenCL cihazına bağlanır. OpenCL cihazına bağlandıktan sonra komutlar 51

65 komut kuyruğu ile aygıta göderilir. Komut kuyrukları üç tip komutu kabul eder (Munshi vd. 2012). Çekirdek yürütme komutları bir OpenCL cihazının içindeki çekirdekleri çalıştırır. Bellek komutları, ana işlemci ile farklı bellek nesneleri arasında veri aktarır. Diğer görevleri ise verileri bellek nesneleri arasında taşır ve bellek nesnelerini ana bilgisayar adres alanından eşleştirir veya eşleştirmeyi kaldırır. Senkronizasyon komutları, komutların yürütülecek sıraya göre düzenlenmesini yapar Bellek Modeli OpenCL iki tür bellek nesnesi tanımlar: arabellek (buffer) nesneleri ve görüntü (image) nesneleri. Bir ara bellek nesnesi, çekirdeklerin erişebileceği bitişik bir bellek bloğudur. İstenildiği zaman veri yapıları bu arabelleğe eşlenebilir ve işaretçiler (pointer) aracılığıyla arabelleğe erişebilir. Bu durum, istenildiği takdirde herhangi bir veri yapısı tanımlama durumunda kolaylık sağlar. Görüntü nesneleri görüntü tutmakla sınırlıdır. Bir görüntü saklama biçimi, belirli bir OpenCL cihazının ihtiyaçlarına göre optimize edilebilir. Bu nedenle, OpenCL'in bir uygulamaya resim formatını özelleştirme özgürlüğü vermesi önemlidir. OpenCL çerçeveleri görüntüleri değiştirmek için işlevler sağlar, ancak bu belirli işlevlerin dışında resim nesnesinin içeriği çekirdek programından gizlenir. OpenCL bellek modelini beş faklı bellek bölgesini tanımlar (Munshi vd. 2012). Bu durum Şekil 4.16 da gösterilmiştir. 52

66 Şekil Bellek modeli (Munshi vd. 2012) Ana işlemci belleği (Host memory): Bu bellek bölgesi yalnızca ana işlemciye görülebilir. OpenCL ortamında, ana işlemcinin OpenCL nesneleri ve yapıları ile nasıl etkileşime girdiğini tanımlar. Evrensel bellek (Global memory): Bu bellek bölgesi, tüm iş gruplarındaki tüm iş kalemlerine okuma / yazma erişimi sağlar. İş kalemleri, evrensel bellekte bir bellek nesnesinin herhangi bir öğesinden okuma yapabilir veya bunlardan birine yazabilir. Evrensel belleğe yazma ve evrensel bellekten okuma yapma, aygıtın özelliklerine bağlı olarak önbelleğe alınabilir. Sabit bellek (Constant memory): Evrensel hafızanın bu hafıza bölgesi çekirdeğin çalıştırılması diğer bir deyişle uygulama süresince sabit kalır. İş 53

67 kalemleri bu bellekten sadece okuma yapabilir. Ana işlemci tarafından bu alana veri yazılıp bu alandan veri okunabilir. Yerel bellek (Local memory): Her bir iş grubuna ait yerel bellek vardır. Yerel bellek bölgesi, ait olduğu iş grubundaki tüm iş kalemleri tarafından yazma okuma yapma durumları için erişilebilir durumdadır. İş grubu dışındaki iş kalemleri tarafından erişim yoktur. Özel bellek (Private memory): Her bir iş kalemine ait özel bellek vardır. Diğer iş kalemleri tarafından bu belleğe erişim izni yoktur. Çoğu durumda, ana işlemci belleği ve aygıt belleği birbirinden bağımsızdır. Bu yüzden bellek yönetiminde ana işlemci ve hesaplama aygıtı arasında veri paylaşımına izin verilmesi gerekir. Bu, verilerin ana işlemci belleğinden evrensel belleğe, yerel belleğe gitmesinin ve verilerin tekrar ana işlemciye geri gelmesi durumunun olması anlamına gelir. Bu işlem, okuma / yazma komutlarının komut kuyruğuna eklenmesi ile çalışır. Eklenilen komutlar ya bloke edici ya da blokajsız olabilir. Bloke etme durumunda ana işlemci beleğinin komutu, bellek işlemleri tamamlanasıya kadar bekler. Blokajsız durumunda ise bellek işlemleri tamamlanmadan ana işlemci komutları kuyruğa ekler (AMD, 2010) OpenCL Yazılım Tasarımı ve Kullanılan Kodlar OpenCL platformunda hesaplama yapmak istendiği zaman, mevcut olan donanımsal yapıyla uyumlu yazılım algoritması uygulamak gerekir. Uygulanacak algoritma içerik olarak aşağıdaki unsurları barındırmalıdır. Host Program: Bilgisayarın platform ve cihaz bilgileri alınır. OpenCL içerikleri oluşturulur. OpenCL cihazı ile host program arasında komut akışını sağlayacak komut kuyruğu oluşturulur. 54

68 İçerige bağli hedef bellek bölümlendirmesi yapılır. (Yani her iş parçası için arabellek oluşturulur.) Giriş vektörleri komut kuyruğu aracılığı ile arabelleklere yazılır. Kernel kodu, host kodun içine gömülür ve derlenir. Kernel kodu oluşturulur ve argümanları tanıtılır. Kernel kodu çalıştırılır. GPU üzerindeki ara bellekte bulunan değerler C ye yazılır. Son olarak hafızada yer tutan bölümler silinir, temizlenir Kernel Programı: C diliyle yazılan, iş parçacıklarına iş yaptıracak ve ana işlemi barındıran kod parçasıdır. Aşağıda çarpma işlemi yapan örnek bir kernel kodu gösterilir; kernel void dp_mul( global const float *a, global float *c) { int id = get_global_id (0); c[id] = a[id] * b[id]; } global const float *b, Host programı içeriğinde kullanılan kalıplar (Khronos OpenCL Working Group, 2012); Yapılan sorgu ile OpenCL ortamı için platform bilgileri alınır. cl_int clgetplatformids (cl_uint num_entries, cl_platform_id *platforms, cl_uint *num_platforms) Yapılan sorgu ile OpenCL cihazı bilgileri alınır. Kullanılacak olan cihaz tipi belirlenir. cl_int clgetdeviceids (cl_platform_id platform, cl_device_type device_type, cl_uint num_entries, cl_device_id *devices, cl_uint *num_devices) 55

69 OpenCL cihazı için içerik tanımlanır. Bu içerikte komut kuyruğu, program objeleri, kernel objesi ve paylaşılan bellek objeleri bulunur. cl_context clcreatecontext (const cl_context_properties *properties, cl_uint num_devices, const cl_device_id *devices, void (CL_CALLBACK *pfn_notify)(const char *errinfo, const void *private_info, size_t cb, void *user_data), void *user_data, cl_int *errcode_ret) Komut kuyruğu oluşturulur. Bu komut kuyruğu aracılığı ile ana (host) cihazından kullanılacak hesaplama (compute) cihazına komutlar gönderilir. cl_command_queue clcreatecommandqueue (cl_context context, cl_device_id device, cl_command_queue_properties properties, cl_int *errcode_ret) Bir boyutlu objeler için ara depolama yerleri oluşturulur. cl_mem clcreatebuffer (cl_context context, cl_mem_flags flags, size_t size, void *host_ptr, cl_int *errcode_ret) İki ve üç boyutlu objeler için ara depolama yerleri oluşturulur. cl_mem clcreateimage (cl_context context, cl_mem_flags flags, const cl_image_format *image_format, const cl_image_desc *image_desc, void *host_ptr, cl_int *errcode_ret) Ara depolama alanında bulunan sonuçlar ana (host) belleğe okunur. cl_int clenqueuereadbuffer (cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_write, size_t offset, size_t size, const void *ptr, cl_uint num_events_in_wait_list, const cl_event *event_wait_list, cl_event *event) 56

70 Ana bellekte bulunan komut kuyrukları ara depolama alanına yazılır. cl_int clenqueuewritebuffer (cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_write, size_t offset, size_t size, const void *ptr, cl_uint num_events_in_wait_list, const cl_event *event_wait_list, cl_event *event) Program objeleri için oluşturulan içerik kaynak koda yüklenir. cl_program clcreateprogramwithsource (cl_context context, cl_uint count, const char **strings, const size_t *lengths, cl_int *errcode_ret) Program derlemesi yapılır. cl_int clbuildprogram (cl_program program, cl_uint num_devices, const cl_device_id *device_list, const char *options, void (CL_CALLBACK *pfn_notify)(cl_program program, void *user_data), void *user_data) İşlem yapılacak kernel kaynağı oluşturulur. cl_kernel clcreatekernel (cl_program program, const char *kernel_name, cl_int *errcode_ret) Kernel kaynağındaki argümanlar tanıtılır. cl_int clsetkernelarg (cl_kernel kernel, cl_uint arg_index, size_t arg_size, const void *arg_value) Kernel çalıştırılır. cl_int clenqueuendrangekernel (cl_command_queue command_queue, cl_kernel kernel, cl_uint work_dim, const size_t *global_work_offset, const 57

71 size_t *global_work_size, const size_t *local_work_size, cl_uint num_events_in_wait_list, const cl_event *event_wait_list, cl_event *event) 58

72 5. ARAŞTIRMA BULGULARI OpenCL kullanılarak paralel olarak geliştirilen görüntü iyileştirme uygulamaları Windows ortamında geliştirilmiştir. İşletim sistemi Windows 7 dir. Uygulamaların çalıştığı ortamda kullanılan donanımlar ise, dört çekirdekli Intel Core i merkezi işlem birimi ve NVIDIA GeForce GT 540M 1 GB grafik işlemci birimidir. Derleyici program olarak ise Windows ortamı için sık kullanılmakta olan Microsoft Visual Studio 2012 dir. Derleyiciye ek olarak NVIDIA GPU Computing Toolkit paketi kurularak OpenCL ile ilgili kütüphane dosyaları temin edilmiştir. Paralel ortamda geliştirilen uygulamaların geliştirilme amacını göstermek, sayısal veriler kullanılarak sağladığı hızlanmanın miktarının gözlemlemek ve kıyaslama yapılması için seri ortamda çalışan görüntü iyileştirme uygulamalarının gerçekleştirilmesi uygun görülmüştür. OpenCV kütüphanesinden görüntüyü çekmek, görüntü iyileştirme ile ilgili matris işlemleri için döngülerin gerçekleştirilme işlemi ve görüntünün ekrana bastırılması için yararlanılmıştır. Seri ortamda çalışan görüntü iyileştirme işlemleri C++ yazılım dilinde geliştirilmiştir. Geliştirilen uygulamalarda parlaklık ve kontrast ayarlamaları bulunmaktadır. Bunların yanında ortalama filtresi, gauss bulanıklaştırma filtresi, laplacian filtresi ve sobel operatörü kullanılarak oluşturulan kenar belirleme filtresi olmak üzere dört adet filtre vardır. Bu filtrelerde 3x3 ve 5x5 olmak üzere iki farklı boyutlu maske kullanılmıştır. Görüntü iki boyutlu olduğu için evrensel kimlik, iş kalemleri ve iş grupları iki boyutlu olarak tanıtılmışlardır. Görüntüde işlem yapmak için kullanılan iş kalemleri sayısı, kullanılan görüntü çözünürlükleri dikkate alınarak oluşturulmuştur. NVIDIA GeForce GT 540M ekran kartı en hızlı 4 boyutundaki vektörlerle çalışmaktadır. Bu sebeple kernel de kullanılan matris işleminde float4 veri tipi kullanılmıştır. 59

73 OpenCL ile paralel ortamda geliştirilen kontrast, parlaklık ayarlamaları ve filtrelerin görüntü iyileştirme süreci içinde hangi çözünürlükte ne kadar hızlanma sağladığını tespit etmek için farklı çözünürlükte görüntüler kullanılması uygun görülmüştür. 300x300, 320x480, 500x375, 512x512, 640x480, 1000x625 çözünürlüğüne sahip farklı görüntüler kullanılmıştır. Sonuç olarak OpenCL ortamında parlaklık ve kontrast ayarlamaları ve görüntü iyileştirme filtreleri için 6 farklı çözünürlükte görüntü kullanılmıştır. Uygulamalarda 4 farklı filtre, 2 farklı maske boyutu kullanılarak, 6 farklı çözünürlükteki görüntülerin her birine yönelik görüntü iyileştirme uygulamaları gerçekleştirilmiştir. Bu filtrelerin ve kontratst parlaklık ayarlamalarına yönelik her birinin kıyaslanması için seri ortamda filtreler ve kontrast parlaklık ayarlamaları içeren yazılımlar geliştirilmiştir. OpenCV kütüphanesinden hazır fonsiyonlar kullanılmamış olup döngüler kullanılarak yeniden filtreler tasarlanmıştır. OpenCL paralel programlama mimarisi kullanılarak heterojen ortamda gerçekleştirilen görüntü iyileştirme işlemlerinin program akış diyagramı Şekil 5.1 de gösterilir. 60

74 Ana işlemci ara bellekleri için bellek ayrıldı ve tanıtıldı. Platform ve cihaz bilgileri alındı. Platform yüklendi. Cihaz listesi elde edildi ve istenilen cihaz seçildi. Cihaz için içerik oluşturuldu. Komut kuyruğu oluşturuldu. İki boyutlu görüntü ara bellek tarafından okundu. İki boyutlu görüntüler için oluşturulan ara bellekler cihaza kopyalandı. İki boyutlu görüntülerin kernel tarafından nasıl okunacağı ile ilgili örnekleme fonksiyonu oluşturuldu. Kernel kaynağından program oluşturuldu. Program kuruldu ve OpenCL için kernel oluşturuldu. Kernel için argümanlar kuruldu. (Giriş görüntüsü, çıkış görüntüsü ve örnekleme görüntüsü) Kernel için evrensel çalışma boyutu ve yerel çalışma gruplarının boyutu tanıtıldı. Cihazda OpenCL kerneli çalıştırıldı. (Görüntü iyileştirme işlemi) Cihazdan ana işlemci ara belleğine iyileştirilen görüntü okundu. OpenCL için ayrılmış bütün nesneler ve ana işlemci ara belleği serbest bırakıldı. Şekil 5.1. Heterojen ortamda görüntü iyileştirme işlemleri için kullanılan program akış diyagramı 61

75 5.1. Parlaklık, Kontrast Ayarlamalarının OpenCL Ortamında Geliştirilmesi Paralel ortamda OpenCL kullanılarak geliştirilen parlaklık ayarlamasına yönelik yazılımın Microsoft Visual Studio 2012 programı içindeki kernel derlemesi Şekil 5.2 de gösterilir. NVIDIA GeForce GT 540M ekran kartının aynı anda çalıştırabileceği iş kalemi kapasitesi 32 dir. Ancak iyileştirme yapılan Şekil 5.3 teki görüntü 300x300 çözünürlüğünde olduğundan ve iş kalemi sayısı çözünürlüğe tam bölünebilmesi gerektiğinden dolayı işlem yapılacak veriler 15 iş kaleminden oluşan gruplara ayrılmıştır. Şekil 5.2. Parlaklık ayarlamasının OpenCL paralel ortamındaki kernel derlemesi OpenCL kullanılarak paralel ortamda gerçekleştirilen parlaklık ayarlama uygulamaları sonucunda Şekil 5.3 teki 300x300 çözünürlükteki giriş görüntüsünden Şekil 5.4 teki çıkış görüntüsü oluşmuştur. Çıkış görüntüsüne bakılarak parlaklığın azaldığı gözlemlenmiştir. 62

76 Şekil x300 Çözünürlüğündeki giriş görüntüsü Şekil x300 Çözünürlüğündeki giriş görüntüsüne parlaklık ayarlaması yapılması sonucu oluşan çıkış görüntüsü Paralel ortamda OpenCL kullanılarak geliştirilen kontrast ayarlamasına yönelik yazılımın Microsoft Visual Studio 2012 programı içindeki kernel derlemesi Şekil 5.5 te gösterilir. İyileştirme yapılan Şekil 5.6 daki görüntü 1000x625 63

77 çözünürlüğünde olduğundan iş kalemi sayısı 25 iş kaleminden oluşan gruplara ayrılmıştır. Şekil 5.5. Kontrast ayarlamasının OpenCL paralel ortamındaki kernel derlemesi OpenCL kullanılarak paralel ortamda gerçekleştirilen kontrast ayarlama uygulamaları sonucunda Şekil 5.5 teki 1000x625 çözünürlüğündeki giriş görüntüsünden Şekil 5.7 deki çıkış görüntüsü oluşmuştur. Çıkış görüntüsüne bakıldığında kontrastın arttığı görülmüştür. Şekil x625 Çözünürlüğündeki giriş görüntüsü 64

78 Şekil x625 Çözünürlüğündeki giriş görüntüsüne kontrast ayarlaması yapılması sonucu oluşan çıkış görüntüsü 5.2. Ortalama Filtresinin OpenCL Ortamında Geliştirilmesi Paralel ortamda OpenCL kullanılarak geliştirilen 3x3 boyutundaki ortalama filtresinin Microsoft Visual Studio 2012 programı içindeki kernel derlemesi Şekil 5.8 de gösterilir. İyileştirme yapılan Şekil 5.9 daki görüntü 512x512 çözünürlüğünde olduğundan iş kalemi sayısı 16 seçilmiştir. Şekil x3 Boyutundaki ortalama filtrenin OpenCL paralel ortamındaki kernel derlemesi 65

79 OpenCL kullanılarak paralel ortamda gerçekleştirilen ortalama filtre uygulamaları sonucunda 3x3 ve 5x5 boyutundaki maskeler kullanılarak Şekil 5.9 daki 512x512 çözünürlüğündeki giriş görüntüsünden Şekil 5.10 ve Şekil 5.11 deki çıkış görüntüleri oluşmuştur. Çıkış görüntülerine bakılarak maskenin boyutu büyüdükçe görüntünün daha da bulanıklaştığı gözlemlenmiştir. Şekil x512 Çözünürlüğündeki giriş görüntüsü 66

80 Şekil x512 Çözünürlüklü giriş görüntüsüne 3x3 boyutlu maske ile ortalama filtre uygulanması sonucu oluşan çıkış görüntüsü Şekil x512 Çözünürlüklü giriş görüntüsüne 5x5 boyutlu maske ile ortalama filtre uygulanması sonucu oluşan çıkış görüntüsü 67

81 5.3. Gauss Bulanıklaştırma Filtresinin OpenCL Ortamında Geliştirilmesi Paralel ortamda OpenCL kullanılarak geliştirilen 3x3 boyutundaki gauss bulanıklaştırma filtresinin Microsoft Visual Studio 2012 programı içindeki kernel derlemesi Şekil 5.12 de gösterilir. Görüntü iyileştirme yapılan Şekil 5.13 teki görüntü 320x480 çözünürlüğünde olduğundan işlem yapılacak veriler 16 iş kaleminden oluşan gruplara ayrılmıştır. Şekil x3 Boyutundaki gauss bulanıklaştırma filtresinin OpenCL paralel ortamındaki kernel derlemesi OpenCL kullanılarak paralel ortamda gerçekleştirilen gauss bulanıklaştırma filtre uygulamaları sonucunda 3x3 ve 5x5 boyutundaki maskeler kullanılarak Şekil 5.13 teki 320x480 çözünürlüğündeki giriş görüntüsünden Şekil 5.14 ve Şekil 5.15 teki çıkış görüntüleri oluşmuştur. Çıkış görüntülerine bakılarak maskenin boyutu büyüdükçe görüntünün daha da bulanıklaştığı gözlemlenmiştir. 68

82 Şekil x480 Çözünürlüğündeki giriş görüntüsü Şekil x3 Maske boyutlu gauss bulanıklaştırma filtresinin uygulanması sonucu oluşan çıkış görüntüsü 69

83 Şekil x5 Maske boyutlu gauss bulanıklaştırma filtresinin uygulanması sonucu oluşan çıkış görüntüsü 5.4. Laplacian Filtresinin OpenCL Ortamında Geliştirilmesi Paralel ortamda OpenCL kullanılarak geliştirilen 3x3 boyutundaki laplacian filtresinin Microsoft Visual Studio 2012 programı içindeki kernel derlemesi Şekil 5.16 da gösterilir. Görüntü iyileştirme yapılan Şekil 5.17 deki görüntü 500x375 çözünürlüğünde olduğundan işlem yapılacak veriler 25 iş kaleminden oluşan gruplara ayrılmıştır. Şekil 5.17 deki 500x375 çözünürlükteki giriş görüntüsünden 3x3 boyutundaki laplacian filtresi kullanılarak Şekil 5.18 deki filtrelenmiş görüntü oluşmuştur. Kullanılan filtrenin merkezindeki katsayının işareti negatif olduğundan dolayı netleştirilmiş görüntüyü bulmak için giriş görüntüsünden filtrelenmiş görüntü çıkarılmıştır. Filtreleme işlemi sonucunda Şekil 5.19 daki netleştirilmiş görüntü elde edilmiştir. Aynı görüntüye 5x5 maske boyutlu laplacian filtresi uygulanmış ve Şekil 5.20 deki filtrelenmiş görüntü ve Şekil 5.21 deki netleştirilmiş görüntü elde edilmiştir. 70

84 Şekil x3 Boyutundaki laplacian filtresinin OpenCL paralel ortamındaki kernel derlemesi Şekil x625 Çözünürlüğündeki giriş görüntüsü 71

85 Şekil x3 Maske boyutlu laplacian filtresinin uygulanması sonucu oluşan filtrelenmiş görüntü Şekil x3 Maske boyutlu laplacian filtresinin uygulanması sonucu elde edilen filtrelenmiş görüntünün giriş görüntüsünden çıkarılarak elde edilen netleştirilmiş görüntü 72

86 Şekil x5 Maske boyutlu laplacian filtresinin uygulanması sonucu oluşan filtrelenmiş görüntü Şekil x5 Maske boyutlu laplacian filtresinin uygulanması sonucu elde edilen filtrelenmiş görüntünün giriş görüntüsünden çıkarılarak elde edilen netleştirilmiş görüntü 73

87 5.5. Kenar Belirleme Filtresinin OpenCL Ortamında Geliştirilmesi Paralel ortamda OpenCL kullanılarak geliştirilen 3x3 boyutundaki sobel operatörleri kullanılarak elde edilen kenar belirleme filtresinin Microsoft Visual Studio 2012 programı içindeki kernel derlemesi Şekil 5.22 de gösterilir. Görüntü iyileştirme yapılan Şekil 5.23 teki görüntü 640x480 çözünürlüğünde olduğundan işlem yapılacak veriler 16 iş kaleminden oluşan gruplara ayrılmıştır. Şekil 5.23 teki 640x480 çözünürlükteki giriş görüntüsünden 3x3 boyutundaki kenar belirleme filtresi kullanılarak Şekil 5.24 teki filtrelenmiş çıkış görüntüsü oluşmuştur. Aynı görüntüye 5x5 maske boyutlu kenar belirleme filtresi uygulanmış ve Şekil 5.25 teki filtrelenmiş çıkış görüntüsü oluşmuştur. Şekil x3 Boyutundaki kenar belirleme filtresinin OpenCL paralel ortamındaki kernel derlemesi 74

88 Şekil x480 Çözünürlüğündeki giriş görüntüsü Şekil x3 Maske boyutlu sobel operatörleri kullanılarak oluşturulan kenar belirleme filtresinin giriş görüntüsüne uygulanması sonucu oluşan filtrelenmiş görüntü 75

89 Şekil x5 Maske boyutlu sobel operatörleri kullanılarak oluşturulan kenar belirleme filtresinin giriş görüntüsüne uygulanması sonucu oluşan filtrelenmiş görüntü 5.6 Geliştirilen Filtreler İle Kontrast Parlaklık Ayarlamalarının OpenCL Ortamındaki Performansları Ve Seri Programlama Yöntemi İle Performanslarının Kıyaslanması OpenCL ortamında geliştirilen filtreler, kontrast parlaklık ayarlamalarının başarım performansları ölçülmüştür. Seri ortamda geliştirilen uygulamalar ile kıyaslanmıştır. Başarım performansları ölçülürken dikkate alınan zaman aralığı görüntü pikselleri üzerinde iyileştirme yapma süreleridir. Bu süre aralığının karşılaştırmada referans alınmasının sebebi kerneldeki hızlanma miktarının seri programlamaya göre ne kadar iyi olduğunu gözlemlenmek içindir. OpenCL de bu zaman aralığı kernel programının çalışma zamanıdır. Seri programlamada ise ana fonksiyondaki döngülerle görüntü pikselleri üzerindeki matris işlemlerinin yapılma süreleridir. 76

MOD419 Görüntü İşleme

MOD419 Görüntü İşleme MOD419 Görüntü İşleme Ders Kitabı: Digital Image Processing by Gonzalez and Woods Puanlama: %30 Lab. %20 Vize %10 Quizes %40 Final %60 devam mecburiyeti Görüntü İşleme ye Giriş Görüntü İşleme Nedir? Özellikle

Detaylı

Dijital (Sayısal) Fotogrametri

Dijital (Sayısal) Fotogrametri Dijital (Sayısal) Fotogrametri Dijital fotogrametri, cisimlere ait iki boyutlu görüntü ortamından üç boyutlu bilgi sağlayan, sayısal resim veya görüntü ile çalışan fotogrametri bilimidir. Girdi olarak

Detaylı

Görüntü İşleme. K.Sinan YILDIRIM Cenk İNCE Tahir Emre KALAYCI. Ege Üniversitesi Bilgisayar Mühendisliği Bölümü 2003

Görüntü İşleme. K.Sinan YILDIRIM Cenk İNCE Tahir Emre KALAYCI. Ege Üniversitesi Bilgisayar Mühendisliği Bölümü 2003 Görüntü İşleme K.Sinan YILDIRIM Cenk İNCE Tahir Emre KALAYCI Ege Üniversitesi Bilgisayar Mühendisliği Bölümü 2003 İçerik Görüntü İşleme Nedir? Görüntü Tanımlamaları Görüntü Operasyonları Görüntü İşleme

Detaylı

Hafta 5 Uzamsal Filtreleme

Hafta 5 Uzamsal Filtreleme BLM429 Görüntü İşlemeye Giriş Hafta 5 Uzamsal Filtreleme Yrd. Doç. Dr. Caner ÖZCAN If the facts don't fit the theory, change the facts. ~Einstein İçerik 3. Yeğinlik Dönüşümleri ve Uzamsal Filtreleme Temel

Detaylı

Görüntü İşleme. Dijital Görüntü Tanımları. Dijital görüntü ise sayısal değerlerden oluşur.

Görüntü İşleme. Dijital Görüntü Tanımları. Dijital görüntü ise sayısal değerlerden oluşur. Görüntü İşleme Görüntü işleme, dijital bir resim haline getirilmiş olan gerçek yaşamdaki görüntülerin bir girdi resim olarak işlenerek, o resmin özelliklerinin ve görüntüsünün değiştirilmesidir. Resimler

Detaylı

AMAÇ Araçlardaki Kamera Sistemleri

AMAÇ Araçlardaki Kamera Sistemleri SUNU PLANI AMAÇ OPEN CV GÖRÜNTÜ EŞİKLEME KENAR BULMA ŞEKİL BULMA GÖRÜNTÜ GENİŞLETME VE BOZMA GÖRÜNTÜ DOLDURMA AFFİNE DÖNÜŞÜMÜ PERSPEKTİF DÖNÜŞÜM KUŞ BAKIŞI GÖRÜNTÜ DÖNÜŞÜMÜ AMAÇ Araçlardaki Kamera Sistemleri

Detaylı

GÖRÜNTÜ İŞLEME HAFTA 1 1.GİRİŞ

GÖRÜNTÜ İŞLEME HAFTA 1 1.GİRİŞ GÖRÜNTÜ İŞLEME HAFTA 1 1.GİRİŞ GÖRÜNTÜ İŞLEME Hafta Hafta 1 Hafta 2 Hafta 3 Hafta 4 Hafta 5 Hafta 6 Hafta 7 Hafta 8 Hafta 9 Hafta 10 Hafta 11 Hafta 12 Hafta 13 Hafta 14 Konu Giriş Digital Görüntü Temelleri-1

Detaylı

GÖRÜNTÜ İŞLEME - (6.Hafta) GÖRÜNTÜ NETLEŞTİRME ALGORİTMALARI

GÖRÜNTÜ İŞLEME - (6.Hafta) GÖRÜNTÜ NETLEŞTİRME ALGORİTMALARI GÖRÜNTÜ İŞLEME - (6.Hafta) GÖRÜNTÜ NETLEŞTİRME ALGORİTMALARI NETLEŞTİRME/KESKİNLEŞTİRME FİLTRESİ (Sharpening Filter) Bu algoritma orjinal görüntüden, görüntünü yumuşatılmış halini çıkararak belirgin kenarların

Detaylı

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS DERS BİLGİLERİ Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS Sayısal Görüntü İşleme BIL413 7 3+0 3 5 Ön Koşul Dersleri Yok Dersin Dili Dersin Seviyesi Dersin Türü Türkçe Lisans Seçmeli / Yüz Yüze

Detaylı

Bilgisayarla Görüye Giriş

Bilgisayarla Görüye Giriş Bilgisayarla Görüye Giriş Ders 6 Kenar, Köşe, Yuvarlak Tespiti Alp Ertürk alp.erturk@kocaeli.edu.tr KENAR TESPİTİ Kenar Tespiti Amaç: Görüntüdeki ani değişimleri / kesintileri algılamak Şekil bilgisi elde

Detaylı

PARALEL HESAPLAMA ÇAĞRI GİDER ENES BİLGİN

PARALEL HESAPLAMA ÇAĞRI GİDER ENES BİLGİN PARALEL HESAPLAMA ÇAĞRI GİDER 13011016 ENES BİLGİN - 13011004 Paralel Hesaplama Nedir? Paralel Hesaplamanın Avantajları Paralel Hesaplamanın Kullanım Alanları Paralel Hesaplama Yöntemleri, Donanım ve Yazılım

Detaylı

GÖRÜNTÜ İŞLEME - (7.Hafta) KENAR BELİRLEME ALGORİTMALARI

GÖRÜNTÜ İŞLEME - (7.Hafta) KENAR BELİRLEME ALGORİTMALARI GÖRÜNTÜ İŞLEME - (7.Hafta) KENAR BELİRLEME ALGORİTMALARI Bu konuda bir çok algoritma olmasına rağmen en yaygın kullanılan ve etkili olan Sobel algoritması burada anlatılacaktır. SOBEL FİLTRESİ Görüntüyü

Detaylı

Digital Görüntü Temelleri Görüntü Oluşumu

Digital Görüntü Temelleri Görüntü Oluşumu Digital Görüntü Temelleri Görüntü Oluşumu Işık 3B yüzeye ulaşır. Yüzey yansıtır. Sensör elemanı ışık enerjisini alır. Yoğunluk (Intensity) önemlidir. Açılar önemlidir. Materyal (yüzey) önemlidir. 25 Ekim

Detaylı

Dijital Görüntü İşleme (COMPE 464) Ders Detayları

Dijital Görüntü İşleme (COMPE 464) Ders Detayları Dijital Görüntü İşleme (COMPE 464) Ders Detayları Ders Adı Ders Kodu Dönemi Ders Saati Uygulama Saati Laboratuar Saati Kredi AKTS Dijital Görüntü İşleme COMPE 464 Her İkisi 3 0 0 3 5 Ön Koşul Ders(ler)i

Detaylı

Dijital (Sayısal) Fotogrametri

Dijital (Sayısal) Fotogrametri Dijital (Sayısal) Fotogrametri Dijital fotogrametri, cisimlere ait iki boyutlu görüntü ortamından üç boyutlu bilgi sağlayan, sayısal resim veya görüntü ile çalışan fotogrametri bilimidir. Girdi olarak

Detaylı

Görüntü İşleme Ders-7 AND, NAND. % bir görüntüde küçük bir alanın kesilip çıkartılması. >> y=imread('headquarters-2and.jpg');

Görüntü İşleme Ders-7 AND, NAND. % bir görüntüde küçük bir alanın kesilip çıkartılması. >> y=imread('headquarters-2and.jpg'); Görüntü İşleme Ders-7 AND, NAND % bir görüntüde küçük bir alanın kesilip çıkartılması. >> x=imread('headquarters-2.jpg'); >> y=imread('headquarters-2and.jpg'); >> x=rgb2gray(x); >> y=rgb2gray(y); >> imshow(y)

Detaylı

Dijital (Sayısal) Fotogrametri

Dijital (Sayısal) Fotogrametri Dijital (Sayısal) Fotogrametri Dijital fotogrametri, cisimlere ait iki boyutlu görüntü ortamından üç boyutlu bilgi sağlayan, sayısal resim veya görüntü ile çalışan fotogrametri bilimidir. Girdi olarak

Detaylı

MİKROİŞLEMCİ İLE A/D DÖNÜŞÜMÜ

MİKROİŞLEMCİ İLE A/D DÖNÜŞÜMÜ KARADENİZ TEKNİK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR ORGANİZASYONU LABORATUVARI MİKROİŞLEMCİ İLE A/D DÖNÜŞÜMÜ 1. GİRİŞ Analog işaretleri sayısal işaretlere dönüştüren elektronik devrelere

Detaylı

DONANIM KURULUMU. Öğr. Gör. Murat YAZICI. 1. Hafta.

DONANIM KURULUMU. Öğr. Gör. Murat YAZICI. 1. Hafta. 1. Hafta DONANIM KURULUMU Öğr. Gör. Murat YAZICI www.muratyazici.com Artvin Çoruh Üniversitesi, Artvin Meslek Yüksekokulu Bilgisayar Teknolojisi Programı Dersin İçeriği Ekran Kartı (Graphic Card, Video

Detaylı

Bölüm 4 Yoğunluk Dönüşümleri ve Histogram İşleme

Bölüm 4 Yoğunluk Dönüşümleri ve Histogram İşleme BLM429 Görüntü İşlemeye Giriş Bölüm 4 Yoğunluk Dönüşümleri ve Histogram İşleme Dr. Öğr. Üyesi Caner ÖZCAN It makes all the difference whether one sees darkness through the light or brightness through the

Detaylı

Görüntü Bağdaştırıcıları

Görüntü Bağdaştırıcıları Görüntü Bağdaştırıcıları Görüntü Bağdaştırıcıları (Ekran Kartları) Ekrandaki Görüntü Nasıl Oluşur? Monitörünüze yeteri kadar yakından bakarsanız görüntünün çok küçük noktalardan oluştuğunu görürsünüz.

Detaylı

Ayrık Fourier Dönüşümü

Ayrık Fourier Dönüşümü Ayrık Fourier Dönüşümü Tanım: 0 n N 1 aralığında tanımlı N uzunluklu bir dizi x[n] nin AYRIK FOURIER DÖNÜŞÜMÜ (DFT), ayrık zaman Fourier dönüşümü (DTFT) X(e jω ) nın0 ω < 2π aralığında ω k = 2πk/N, k =

Detaylı

Digital Design HDL. Dr. Cahit Karakuş, February-2018

Digital Design HDL. Dr. Cahit Karakuş, February-2018 Digital Design HDL Dr. Cahit Karakuş, February-2018 NOT, AND, and OR Gates NAND and NOR Gates DeMorgan s Theorem Exclusive-OR (XOR) Gate Multiple-input Gates Basic Logic Gates and Basic Digital Design

Detaylı

TEMEL BİLGİSAYAR BİLİMLERİ. Programcılık, problem çözme ve algoritma oluşturma

TEMEL BİLGİSAYAR BİLİMLERİ. Programcılık, problem çözme ve algoritma oluşturma TEMEL BİLGİSAYAR BİLİMLERİ Programcılık, problem çözme ve algoritma oluşturma Programcılık, program çözme ve algoritma Program: Bilgisayara bir işlemi yaptırmak için yazılan komutlar dizisinin bütünü veya

Detaylı

Yıldız Teknik Üniversitesi Fen Bilimleri Enstitüsü Bilgisayar Mühendisliği Bölümü. Bilgisayarla Görme. Final

Yıldız Teknik Üniversitesi Fen Bilimleri Enstitüsü Bilgisayar Mühendisliği Bölümü. Bilgisayarla Görme. Final Yıldız Teknik Üniversitesi Fen Bilimleri Enstitüsü Bilgisayar Mühendisliği Bölümü Bilgisayarla Görme Final Harris ve Moravec Köşe Belirleme Metotları Selçuk BAŞAK 08501008 Not: Ödevi hazırlamak için geliştirdiğim

Detaylı

Bilgisayarla Görüye Giriş

Bilgisayarla Görüye Giriş Bilgisayarla Görüye Giriş Ders 5 Görüntü Süzgeçleme ve Gürültü Giderimi Alp Ertürk alp.erturk@kocaeli.edu.tr Motivasyon: Gürültü Giderimi Bir kamera ve sabit bir sahne için gürültüyü nasıl azaltabiliriz?

Detaylı

MMT 106 Teknik Fotoğrafçılık 3 Digital Görüntüleme

MMT 106 Teknik Fotoğrafçılık 3 Digital Görüntüleme MMT 106 Teknik Fotoğrafçılık 3 Digital Görüntüleme 2010-2011 Bahar Yarıyılı Ar. Gör. Dr. Ersoy Erişir 1 Konvansiyonel Görüntüleme (Fotografi) 2 Görüntü Tasarımı 3 Digital Görüntüleme 3.1 Renkler 3.2.1

Detaylı

Sahada Programlanabilir Kapı Dizileri (FPGA) Sayısal CMOS Tümdevre Tasarımı Y. Fırat Kula

Sahada Programlanabilir Kapı Dizileri (FPGA) Sayısal CMOS Tümdevre Tasarımı Y. Fırat Kula Sahada Programlanabilir Kapı Dizileri (FPGA) Sayısal CMOS Tümdevre Tasarımı Y. Fırat Kula Programlanabilir Lojik Basit Programlanabilir Lojik Cihazlar (Simple Programmable Logic Device - SPLD) ** PAL (Programmable

Detaylı

Uzaktan Algılama Teknolojileri

Uzaktan Algılama Teknolojileri Uzaktan Algılama Teknolojileri Ders 8 Multispektral Görüntüleme ve Uygulamaları Alp Ertürk alp.erturk@kocaeli.edu.tr Multispektral Görüntüleme Her piksel için birkaç adet spektral kanalda ölçüm değeri

Detaylı

Bölüm 7 Renkli Görüntü İşleme

Bölüm 7 Renkli Görüntü İşleme BLM429 Görüntü İşlemeye Giriş Bölüm 7 Renkli Görüntü İşleme Dr. Öğr. Üyesi Caner ÖZCAN Genç sanatçının, rengin sadece tanımlayıcı değil aynı zamanda kişisel ifade anlamına geldiğini anlaması renge dokunmasından

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Grafik Programlama Bilgisayar kullanılırken monitörlerde iki tür ekran moduyla karşılaşılır. Bu ekran modları Text modu ve Grafik modu dur. Text modunda ekran 25 satır ve 80 sütundan

Detaylı

Bazı Gömülü Sistemlerde OpenCV ile Performans Analizi

Bazı Gömülü Sistemlerde OpenCV ile Performans Analizi OpenCV ile Performans Analizi S.Ü Bil.Müh. 2. Sınıf Öğrencisi Faruk GÜNER farukguner@outlook.com.tr S.Ü Bil.Müh. 2. Sınıf Öğrencisi Mesut PİŞKİN mesutpiskin@outlook.com S.Ü Öğr. Gör. Dr. Mustafa Nevzat

Detaylı

TMMOB Harita ve Kadastro Mühendisleri Odası Ulusal Coğrafi Bilgi Sistemleri Kongresi 30 Ekim 02 Kasım 2007, KTÜ, Trabzon

TMMOB Harita ve Kadastro Mühendisleri Odası Ulusal Coğrafi Bilgi Sistemleri Kongresi 30 Ekim 02 Kasım 2007, KTÜ, Trabzon TMMOB Harita ve Kadastro Mühendisleri Odası Ulusal Coğrafi Bilgi Sistemleri Kongresi 30 Ekim 02 Kasım 2007, KTÜ, Trabzon Lazer Tarama Verilerinden Bina Detaylarının Çıkarılması ve CBS İle Entegrasyonu

Detaylı

EEM 740 Sayısal Görüntü İşleme

EEM 740 Sayısal Görüntü İşleme Pamukkale Üniversitesi Elektrik-Elektronik Mühendisliği Bölümü Haberleşme Mühendisliği Anabilim Dalı EEM 740 Sayısal Görüntü İşleme Yrd. Doç. Dr. Aydın Kızılkaya 2007-2008 Bahar Yarı Yılı Müh. Fak. Binası

Detaylı

Digital Görüntü Temelleri Görüntü Oluşumu

Digital Görüntü Temelleri Görüntü Oluşumu Digital Görüntü Temelleri Görüntü Oluşumu Işık 3B yüzeye ulaşır. Yüzey yansıtır. Sensör elemanı ışık enerjisini alır. Yoğunluk (Intensity) önemlidir. Açılar önemlidir. Materyal (yüzey) önemlidir. 06 Kasım

Detaylı

BLG325.1 SINYAL ISLEME DERSİ BİLGİ PAKETİ. Haftalık Ders Planı

BLG325.1 SINYAL ISLEME DERSİ BİLGİ PAKETİ. Haftalık Ders Planı Düzey : Lisans Ders Kodu : BLG325.1 Ders Adı : SINYAL ISLEME BLG325.1 SINYAL ISLEME DERSİ BİLGİ PAKETİ lık Ders Planı 1 : İşaret ve sistem tanımı, ayrık zamanlı ve sürekli zamanlı sistemler, ayrık değerli

Detaylı

Yazılım Mühendisliği 1

Yazılım Mühendisliği 1 Yazılım Mühendisliği 1 HEDEFLER Yazılım, program ve algoritma kavramları anlar. Yazılım ve donanım maliyetlerinin zamansal değişimlerini ve nedenleri hakkında yorum yapar. Yazılım mühendisliği ile Bilgisayar

Detaylı

KADASTRO HARİTALARININ SAYISALLAŞTIRILMASINDA KALİTE KONTROL ANALİZİ

KADASTRO HARİTALARININ SAYISALLAŞTIRILMASINDA KALİTE KONTROL ANALİZİ KADASTRO HARİTALARININ SAYISALLAŞTIRILMASINDA KALİTE KONTROL ANALİZİ Yasemin ŞİŞMAN, Ülkü KIRICI Sunum Akış Şeması 1. GİRİŞ 2. MATERYAL VE METHOD 3. AFİN KOORDİNAT DÖNÜŞÜMÜ 4. KALİTE KONTROL 5. İRDELEME

Detaylı

İmage segmentasyon (Görüntü Bölütleme)

İmage segmentasyon (Görüntü Bölütleme) İmage segmentasyon (Görüntü Bölütleme) Segmantasyon (Bölütleme) Segmentasyon genellikle görüntü analizinin ilk aşamasıdır. Görüntü bölütleme, bir görüntüyü her biri içerisinde farklı özelliklerin tutulduğu

Detaylı

İSTATİSTİKSEL PROSES KONTROLÜ

İSTATİSTİKSEL PROSES KONTROLÜ İSTATİSTİKSEL PROSES KONTROLÜ ZTM 433 KALİTE KONTROL VE STANDARDİZASYON PROF: DR: AHMET ÇOLAK İstatistiksel işlem kontrolü (İPK), işlemle çeşitli istatistiksel metotların ve analiz sapmalarının kullanımını

Detaylı

Okut. Yüksel YURTAY. İletişim : (264) Sayısal Analiz. Giriş.

Okut. Yüksel YURTAY. İletişim :  (264) Sayısal Analiz. Giriş. Okut. Yüksel YURTAY İletişim : Sayısal Analiz yyurtay@sakarya.edu.tr www.cs.sakarya.edu.tr/yyurtay (264) 295 58 99 Giriş 1 Amaç : Mühendislik problemlerinin bilgisayar ortamında çözümünü mümkün kılacak

Detaylı

GÖRÜNTÜ İŞLEME HAFTA 4 DÖNÜŞÜMLER UZAYSAL FİLTRELEME

GÖRÜNTÜ İŞLEME HAFTA 4 DÖNÜŞÜMLER UZAYSAL FİLTRELEME GÖRÜNTÜ İŞLEME HAFTA 4 DÖNÜŞÜMLER UZAYSAL FİLTRELEME DERS İÇERİĞİ Histogram İşleme Filtreleme Temelleri HİSTOGRAM Histogram bir resimdeki renk değerlerinin sayısını gösteren grafiktir. Histogram dengeleme

Detaylı

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması Ağaç, verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyararşik yapıya sahip

Detaylı

DENEY 3: DTMF İŞARETLERİN ÜRETİLMESİ VE ALGILANMASI

DENEY 3: DTMF İŞARETLERİN ÜRETİLMESİ VE ALGILANMASI DENEY 3: DTMF İŞARETLERİN ÜRETİLMESİ VE ALGILANMASI AMAÇ: DTMF işaretlerin yapısının, üretim ve algılanmasının incelenmesi. MALZEMELER TP5088 ya da KS58015 M8870-01 ya da M8870-02 (diğer eşdeğer entegreler

Detaylı

Bilgisayar Mimarisi Nedir?

Bilgisayar Mimarisi Nedir? BİLGİSAYAR MİMARİSİ Bilgisayar Mimarisi Nedir? Bilgisayar mimarisi, diğer mimariler gibi, bir yapı kullanıcısının ihtiyaçlarını belirleme ve bu ihtiyaçları ekonomik ve teknolojik kısıtlamalar dahilinde

Detaylı

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay. PROGRAMLAMAYA GİRİŞ Öğr. Gör. Ayhan KOÇ Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay., 2007 Algoritma ve Programlamaya Giriş, Ebubekir YAŞAR, Murathan Yay., 2011

Detaylı

Dijital Panoramik Görüntülemede HD Teknolojisi. Süper Hızlı Dijital Panoramik X-ray Cihazı. Thinking ahead. Focused on life.

Dijital Panoramik Görüntülemede HD Teknolojisi. Süper Hızlı Dijital Panoramik X-ray Cihazı. Thinking ahead. Focused on life. Dijital Panoramik Görüntülemede HD Teknolojisi Süper Hızlı Dijital Panoramik X-ray Cihazı Konsept!! W E N Süper Yüksek Hız 5.5 sn & Süper Yüksek Çözünürlük 16 bit Yeni teknoloji HD tüp ve sensör Yeni nesil

Detaylı

GÖRÜNTÜ İŞLEME UYGULAMALARI. Arş. Gör. Dr. Nergis TURAL POLAT

GÖRÜNTÜ İŞLEME UYGULAMALARI. Arş. Gör. Dr. Nergis TURAL POLAT GÖRÜNTÜ İŞLEME UYGULAMALARI Arş. Gör. Dr. Nergis TURAL POLAT İçerik Görüntü işleme nedir, amacı nedir, kullanım alanları nelerdir? Temel kavramlar Uzaysal frekanslar Örnekleme (Sampling) Aynalama (Aliasing)

Detaylı

Bilgisayar ne elde eder (görüntüden)? Dijital Görüntü İşleme Fevzi Karslı, KTÜ. 08 Ekim 2013 Salı 51

Bilgisayar ne elde eder (görüntüden)? Dijital Görüntü İşleme Fevzi Karslı, KTÜ. 08 Ekim 2013 Salı 51 Bilgisayar ne elde eder (görüntüden)? 08 Ekim 2013 Salı 51 Zorluk 1: bakış açısı 2012, Selim Aksoy 08 Ekim 2013 Salı 52 Zorluk 2: aydınlatma 08 Ekim 2013 Salı 53 Zorluk 3: oklüzyon (ölü bölge oluşumu)

Detaylı

Dijital Görüntü İşleme Teknikleri

Dijital Görüntü İşleme Teknikleri Teknikleri Ders Notları, 2013 Doç. Dr. Fevzi Karslı Harita Mühendisliği Bölümü Mühendislik Fakültesi KTÜ 08 Ekim 2013 Salı 1 Ders Planı ve İçeriği 1. Hafta Giriş, dersin kapsamı, temel kavramlar, kaynaklar.

Detaylı

MONTE CARLO BENZETİMİ

MONTE CARLO BENZETİMİ MONTE CARLO BENZETİMİ U(0,1) rassal değişkenler kullanılarak (zamanın önemli bir rolü olmadığı) stokastik ya da deterministik problemlerin çözümünde kullanılan bir tekniktir. Monte Carlo simülasyonu, genellikle

Detaylı

Bölüm 3 Görüntü İşleme ile İlgili Temel Kavramlar

Bölüm 3 Görüntü İşleme ile İlgili Temel Kavramlar BLM429 Görüntü İşlemeye Giriş Bölüm 3 Görüntü İşleme ile İlgili Temel Kavramlar Dr. Öğr. Üyesi Caner ÖZCAN Those who wish to succeed must ask the right preliminary questions. (Başarmak isteyenler doğru

Detaylı

Görüntü İşleme Dersi Ders-8 Notları

Görüntü İşleme Dersi Ders-8 Notları Görüntü İşleme Dersi Ders-8 Notları GRİ SEVİYE DÖNÜŞÜMLERİ Herhangi bir görüntü işleme operasyonu, görüntüdeki pikselin gri seviye değerlerini dönüştürme işlemidir. Ancak, görüntü işleme operasyonları;

Detaylı

UYDU GÖRÜNTÜLERİ VE SAYISAL UZAKTAN ALGILAMA

UYDU GÖRÜNTÜLERİ VE SAYISAL UZAKTAN ALGILAMA UYDU GÖRÜNTÜLERİ VE SAYISAL UZAKTAN ALGILAMA Son yıllarda teknolojinin gelişmesi ile birlikte; geniş alanlarda, kısa zaman aralıklarında ucuz ve hızlı sonuç alınabilen uzaktan algılama tekniğinin, yenilenebilir

Detaylı

Copyright 2004 Pearson Education, Inc. Slide 1

Copyright 2004 Pearson Education, Inc. Slide 1 Slide 1 Bölüm 2 Verileri Betimleme, Keşfetme, ve Karşılaştırma 2-1 Genel Bakış 2-2 Sıklık Dağılımları 2-3 Verilerin Görselleştirilmesi 2-4 Merkezi Eğilim Ölçüleri 2-5 Değişimin Ölçülmesi 2-6 Nispi Sabitlerin

Detaylı

BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama

BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama BİL 542 Paralel Hesaplama Dersi Projesi MPJ Express Java Paralel Programlama Recep Ali YILMAZ 131419106 Fen Bilimleri Enstitüsü Bilgisayar Mühendisliği Bölümü Bilgisayar Mühendisliği Yüksek Lisans Programı

Detaylı

POSITION DETERMINATION BY USING IMAGE PROCESSING METHOD IN INVERTED PENDULUM

POSITION DETERMINATION BY USING IMAGE PROCESSING METHOD IN INVERTED PENDULUM POSITION DETERMINATION BY USING IMAGE PROCESSING METHOD IN INVERTED PENDULUM Melih KUNCAN Siirt Üniversitesi, Mühendislik-Mimarlık Fakültesi, Mekatronik Mühendisliği Bölümü, Siirt, TÜRKIYE melihkuncan@siirt.edu.tr

Detaylı

Bilgisayarla Fotogrametrik Görme

Bilgisayarla Fotogrametrik Görme Bilgisayarla Fotogrametrik Görme Dijital Görüntü ve Özellikleri Yrd. Doç. Dr. Mustafa DİHKAN 1 Dijital görüntü ve özellikleri Siyah-beyaz resimler için değer elemanları 0-255 arasındadır. 256 farklı durum

Detaylı

Uzaktan Algılama Uygulamaları

Uzaktan Algılama Uygulamaları Aksaray Üniversitesi Uzaktan Algılama Uygulamaları Doç.Dr. Semih EKERCİN Harita Mühendisliği Bölümü sekercin@aksaray.edu.tr 2010-2011 Bahar Yarıyılı Uzaktan Algılama Uygulamaları GÖRÜNTÜ İŞLEME TEKNİKLERİ

Detaylı

İstatistik ve Olasılık

İstatistik ve Olasılık İstatistik ve Olasılık Rastgele Değişkenlerin Dağılımları I Prof. Dr. İrfan KAYMAZ Ders konusu Bu derste; Rastgele değişkenlerin tanımı ve sınıflandırılması Olasılık kütle fonksiyonu Olasılık yoğunluk

Detaylı

Uzaktan Algılama (3) Yrd. Doç. Dr. Özgür ZEYDAN Renk Teorileri

Uzaktan Algılama (3) Yrd. Doç. Dr. Özgür ZEYDAN   Renk Teorileri Uzaktan Algılama (3) Yrd. Doç. Dr. Özgür ZEYDAN http://cevre.beun.edu.tr/zeydan/ Renk Teorileri Eklemeli renk teorisi Çıkarmalı renk teorisi 1 RGB (Red Green - Blue) Kavramı Red Green - Blue RGB-Mixer

Detaylı

Ayrık-Zaman Sistemler

Ayrık-Zaman Sistemler Ayrık-Zaman Sistemler Bir ayrık-zaman sistemi, bir giriş dizisi x[n] yi işleyerek daha iyi özelliklere sahip bir çıkış dizisi y[n] oluşturur. Çoğu uygulamalarda ayrık-zaman sistemi bir giriş ve bir çıkıştan

Detaylı

Şekil 1.1 Genliği kuvantalanmamış sürekli zamanlı işaret. İşaretin genliği sürekli değerler alır. Buna analog işaret de denir.

Şekil 1.1 Genliği kuvantalanmamış sürekli zamanlı işaret. İşaretin genliği sürekli değerler alır. Buna analog işaret de denir. İŞARETLER Sayısal işaret işleme, işaretlerin sayısal bilgisayar ya da özel amaçlı donanımda bir sayılar dizisi olarak gösterilmesi ve bu işaret dizisi üzerinde çeşitli işlemler yaparak, istenen bir bilgi

Detaylı

İşletim Sistemleri (Operating Systems)

İşletim Sistemleri (Operating Systems) İşletim Sistemleri (Operating Systems) 1 İşletim Sistemleri (Operating Systems) Genel bilgiler Ders kitabı: Tanenbaum & Bo, Modern Operating Systems:4th ed., Prentice-Hall, Inc. 2013 Operating System Concepts,

Detaylı

Bölüm 2. Bir boyutta hareket

Bölüm 2. Bir boyutta hareket Bölüm 2 Bir boyutta hareket Kinematik Dış etkenlere maruz kalması durumunda bir cismin hareketindeki değişimleri tanımlar Bir boyutta hareketten kasıt, cismin bir doğru boyunca hareket ettiği durumların

Detaylı

SAYISAL TASARIM. Ege Üniversitesi Ege MYO Mekatronik Programı

SAYISAL TASARIM. Ege Üniversitesi Ege MYO Mekatronik Programı SAYISAL TASARIM Ege Üniversitesi Ege MYO Mekatronik Programı BÖLÜM 6 DAC, Sayısal Analog Dönüştürücüler DAC Sayısal Analog Dönüştürücüler Analog sayısal dönüşümün tersini gerçekleyen elemanlara sayısal

Detaylı

ANKARA ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ DÖNEM PROJESİ İMAR ÖZELLİKLERİNİN TAŞINMAZ DEĞERLERİNE ETKİLERİ. Yeliz GÜNAYDIN

ANKARA ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ DÖNEM PROJESİ İMAR ÖZELLİKLERİNİN TAŞINMAZ DEĞERLERİNE ETKİLERİ. Yeliz GÜNAYDIN ANKARA ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ DÖNEM PROJESİ İMAR ÖZELLİKLERİNİN TAŞINMAZ DEĞERLERİNE ETKİLERİ Yeliz GÜNAYDIN TAŞINMAZ GELİŞTİRME ANABİLİM DALI ANKARA 2012 Her hakkı saklıdır ÖZET Dönem Projesi

Detaylı

SAYI VE KODLAMA SİSTEMLERİ. Teknoloji Fakültesi/Bilgisayar Mühendisliği

SAYI VE KODLAMA SİSTEMLERİ. Teknoloji Fakültesi/Bilgisayar Mühendisliği SAYI VE KODLAMA SİSTEMLERİ Teknoloji Fakültesi/Bilgisayar Mühendisliği Neler Var? Sayısal Kodlar BCD Kodu (Binary Coded Decimal Code) - 8421 Kodu Gray Kodu Artı 3 (Excess 3) Kodu 5 de 2 Kodu Eşitlik (Parity)

Detaylı

Uzaysal Görüntü İyileştirme/Filtreleme. Doç. Dr. Fevzi Karslı fkarsli@ktu.edu.tr

Uzaysal Görüntü İyileştirme/Filtreleme. Doç. Dr. Fevzi Karslı fkarsli@ktu.edu.tr Uasal Görüntü İileştirme/Filtreleme Doç. Dr. Fevi Karslı karsli@ktu.edu.tr İileştirme Herhangi bir ugulama için, görüntüü orijinalden daha ugun hale getirmek Ugunluğu her bir ugulama için sağlamak. Bir

Detaylı

İşaret ve Sistemler. Ders 1: Giriş

İşaret ve Sistemler. Ders 1: Giriş İşaret ve Sistemler Ders 1: Giriş Ders 1 Genel Bakış Haberleşme sistemlerinde temel kavramlar İşaretin tanımı ve çeşitleri Spektral Analiz Fazörlerin frekans düzleminde gösterilmesi. Periyodik işaretlerin

Detaylı

a) Çıkarma işleminin; eksilen ile çıkanın ters işaretlisinin toplamı anlamına geldiğini kavrar.

a) Çıkarma işleminin; eksilen ile çıkanın ters işaretlisinin toplamı anlamına geldiğini kavrar. 7. SINIF KAZANIM VE AÇIKLAMALARI M.7.1. SAYILAR VE İŞLEMLER M.7.1.1. Tam Sayılarla Toplama, Çıkarma, Çarpma ve Bölme İşlemleri M.7.1.1.1. Tam sayılarla toplama ve çıkarma işlemlerini yapar; ilgili problemleri

Detaylı

Yrd. Doç. Dr. Saygın ABDİKAN 2014-2015 Öğretim Yılı Bahar Dönemi

Yrd. Doç. Dr. Saygın ABDİKAN 2014-2015 Öğretim Yılı Bahar Dönemi Dijital Görüntü İşleme (JDF338) Yrd. Doç. Dr. Saygın ABDİKAN 2014-2015 Öğretim Yılı Bahar Dönemi 1 Dijital görüntü işlemede temel kavramlar Sayısal Görüntü İşleme; bilgisayar yardımı ile raster verilerin

Detaylı

Dijital Sinyal İşleme (COMPE 463) Ders Detayları

Dijital Sinyal İşleme (COMPE 463) Ders Detayları Dijital Sinyal İşleme (COMPE 463) Ders Detayları Ders Adı Ders Kodu Dönemi Ders Saati Uygulama Saati Laboratuar Saati Kredi AKTS Dijital Sinyal İşleme COMPE 463 Bahar 3 0 0 3 5 Ön Koşul Ders(ler)i Dersin

Detaylı

İŞLETİM SİSTEMLERİ. (Operating Systems)

İŞLETİM SİSTEMLERİ. (Operating Systems) İŞLETİM SİSTEMLERİ (Operating Systems) İşletim Sistemi Tanımı, Görevleri, Bilinen İşletim Sistemleri Çok Kullanıcılı Sistemler, Bellek Yönetim Birimi Linux ve Windows Ailesi, Bilinen İşletim Sistemleri

Detaylı

Giyilebilir Teknolojiler ve Solar Enerjili Şapka Uygulaması

Giyilebilir Teknolojiler ve Solar Enerjili Şapka Uygulaması Giyilebilir Teknolojiler ve Solar Enerjili Şapka Uygulaması 1 Necip Fazıl Bilgin, 2 Bülent Çobanoğlu and 3 Fatih Çelik 2 Faculty of Technology, Department of Mechatronic Engineering, Sakarya University,

Detaylı

C PROGRAMLAMA YRD.DOÇ.DR. BUKET DOĞAN PROGRAM - ALGORİTMA AKIŞ ŞEMASI

C PROGRAMLAMA YRD.DOÇ.DR. BUKET DOĞAN PROGRAM - ALGORİTMA AKIŞ ŞEMASI C PROGRAMLAMA DİLİ YRD.DOÇ.DR. BUKET DOĞAN 1 PROGRAM - ALGORİTMA AKIŞ ŞEMASI Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi. Algoritma bir sorunun

Detaylı

Uzaktan Algılama (3) Öğr. Gör. Dr. Özgür ZEYDAN http://cevre.beun.edu.tr/zeydan/ Renk Teorileri

Uzaktan Algılama (3) Öğr. Gör. Dr. Özgür ZEYDAN http://cevre.beun.edu.tr/zeydan/ Renk Teorileri Uzaktan Algılama (3) Öğr. Gör. Dr. Özgür ZEYDAN http://cevre.beun.edu.tr/zeydan/ Renk Teorileri Eklemeli renk teorisi Çıkarmalı renk teorisi 1 RGB (Red Green - Blue) Kavramı Red Green - Blue RGB-Mixer

Detaylı

İvme VGA, İvme s_2.1 fiziksel işlemci çekirdeğinin, çalışan iç yapısının herhangi bir simülasyon olmaksızın fiziksel olarak dış dünyaya aktarımıdır.

İvme VGA, İvme s_2.1 fiziksel işlemci çekirdeğinin, çalışan iç yapısının herhangi bir simülasyon olmaksızın fiziksel olarak dış dünyaya aktarımıdır. 1 İVME VGA İvme VGA, İvme s_2.1 fiziksel işlemci çekirdeğinin, çalışan iç yapısının herhangi bir simülasyon olmaksızın fiziksel olarak dış dünyaya aktarımıdır. Genel olarak yazmaçlar, hafıza elemanlarından

Detaylı

KOCAELİ ÜNİVERSİTESİ ELEKTRONİK VE HABERLEŞME MÜHENDİSLİĞİ BÖLÜMÜ 2018/2019 GYY BİTİRME ÇALIŞMASI ÖNERİ FORMU. (Doç.Dr. M.

KOCAELİ ÜNİVERSİTESİ ELEKTRONİK VE HABERLEŞME MÜHENDİSLİĞİ BÖLÜMÜ 2018/2019 GYY BİTİRME ÇALIŞMASI ÖNERİ FORMU. (Doç.Dr. M. KOCAELİ ÜNİVERSİTESİ ELEKTRONİK VE HABERLEŞME MÜHENDİSLİĞİ BÖLÜMÜ 2018/2019 GYY BİTİRME ÇALIŞMASI ÖNERİ FORMU (Doç.Dr. M. Kemal GÜLLÜ) Derinlik kamerası ile alınan modellerin birleştirilmesi Derinlik kamerası,

Detaylı

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI İÇİNDEKİLER IX İÇİNDEKİLER 1 GİRİŞ 1 Kitabın Amacı 1 Algoritmanın Önemi 2 Bilgisayarın Doğuşu ve Kullanım Amaçları 3 Programlama Dili Nedir? 3 Entegre Geliştirme Ortamı (IDE) Nedir? 4 2 ALGORİTMA VE AKIŞ

Detaylı

Sürekli-zaman İşaretlerin Ayrık İşlenmesi

Sürekli-zaman İşaretlerin Ayrık İşlenmesi Sürekli-zaman İşaretlerin Ayrık İşlenmesi Bir sürekli-zaman işaretin sayısal işlenmesi üç adımdan oluşmaktadır: 1. Sürekli-zaman işaretinin bir ayrık-zaman işaretine dönüştürülmesi 2. Ayrık-zaman işaretin

Detaylı

Fonksiyon Optimizasyonunda Genetik Algoritmalar

Fonksiyon Optimizasyonunda Genetik Algoritmalar 01-12-06 Ümit Akıncı Fonksiyon Optimizasyonunda Genetik Algoritmalar 1 Fonksiyon Optimizasyonu Fonksiyon optimizasyonu fizikte karşımıza sık çıkan bir problemdir. Örneğin incelenen sistemin kararlı durumu

Detaylı

GÖRÜNTÜ İŞLEME HAFTA 2 SAYISAL GÖRÜNTÜ TEMELLERİ

GÖRÜNTÜ İŞLEME HAFTA 2 SAYISAL GÖRÜNTÜ TEMELLERİ GÖRÜNTÜ İŞLEME HAFTA 2 SAYISAL GÖRÜNTÜ TEMELLERİ GÖRÜNTÜ ALGILAMA Üç temel zar ile kaplıdır. 1- Dış Zar(kornea ve Sklera) 2- Koroid 3- Retina GÖRÜNTÜ ALGILAMA ---Dış Zar İki kısımdan oluşur. Kornea ve

Detaylı

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS. Bilgisayar Organizasyonu BIL

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS. Bilgisayar Organizasyonu BIL DERS BİLGİLERİ Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS Bilgisayar Organizasyonu BIL321 5 3+2 4 5 Ön Koşul Dersleri Dersin Dili Dersin Seviyesi Dersin Türü Türkçe Lisans Zorunlu / Yüz Yüze

Detaylı

2011 Third International Conference on Intelligent Human-Machine Systems and Cybernetics

2011 Third International Conference on Intelligent Human-Machine Systems and Cybernetics 2011 Third International Conference on Intelligent Human-Machine Systems and Cybernetics Özet: Bulanık bir denetleyici tasarlanırken karşılaşılan en önemli sıkıntı, bulanık giriş çıkış üyelik fonksiyonlarının

Detaylı

Sayı sistemleri-hesaplamalar. Sakarya Üniversitesi

Sayı sistemleri-hesaplamalar. Sakarya Üniversitesi Sayı sistemleri-hesaplamalar Sakarya Üniversitesi Sayı Sistemleri - Hesaplamalar Tüm sayı sistemlerinde sayılarda işaret kullanılabilir. Yani pozitif ve negatif sayılarla hesaplama yapılabilir. Bu gerçek

Detaylı

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları BİLGİSAYAR PROGRAMLAMA Algoritma ve Akış Şemaları Algoritma tanımı Algoritma özellikleri Algoritma tasarımı Akış şemaları Dallanma simgeleri Döngü simgeleri Akış şeması tasarımı Akış şeması örnekleri Konu

Detaylı

METASEZGİSEL YÖNTEMLER

METASEZGİSEL YÖNTEMLER METASEZGİSEL YÖNTEMLER Ara sınav - 30% Ödev (Haftalık) - 20% Final (Proje Sunumu) - 50% - Dönem sonuna kadar bir optimizasyon tekniğiyle uygulama geliştirilecek (Örn: Zaman çizelgeleme, en kısa yol bulunması,

Detaylı

TÜRKİYE CUMHURİYETİ DEVLETİNİN temellerinin atıldığı Çanakkale zaferinin 100. yılı kutlu olsun.

TÜRKİYE CUMHURİYETİ DEVLETİNİN temellerinin atıldığı Çanakkale zaferinin 100. yılı kutlu olsun. Doç.Dr.Mehmet MISIR-2013 TÜRKİYE CUMHURİYETİ DEVLETİNİN temellerinin atıldığı Çanakkale zaferinin 100. yılı kutlu olsun. Son yıllarda teknolojinin gelişmesi ile birlikte; geniş alanlarda, kısa zaman aralıklarında

Detaylı

Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların

Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların bilgilerini saklamalarına, program yüklemelerine izin

Detaylı

Tek Değişkenli Optimizasyon OPTİMİZASYON. Gradient Tabanlı Yöntemler. Bisection (İkiye Bölme) Yöntemi

Tek Değişkenli Optimizasyon OPTİMİZASYON. Gradient Tabanlı Yöntemler. Bisection (İkiye Bölme) Yöntemi OPTİMİZASYON Gerçek hayatta, çok değişkenli optimizasyon problemleri karmaşıktır ve nadir olarak problem tek değişkenli olur. Bununla birlikte, tek değişkenli optimizasyon algoritmaları çok değişkenli

Detaylı

İşaret İşleme ve Haberleşmenin Temelleri. Yrd. Doç. Dr. Ender M. Ekşioğlu eksioglue@itu.edu.tr http://www2.itu.edu.tr/~eksioglue

İşaret İşleme ve Haberleşmenin Temelleri. Yrd. Doç. Dr. Ender M. Ekşioğlu eksioglue@itu.edu.tr http://www2.itu.edu.tr/~eksioglue İşaret İşleme ve Haberleşmenin Temelleri Yrd. Doç. Dr. Ender M. Ekşioğlu eksioglue@itu.edu.tr http://www2.itu.edu.tr/~eksioglue İşaretler: Bilgi taşıyan işlevler Sistemler: İşaretleri işleyerek yeni işaretler

Detaylı

Robot Görme (MECE 445) Ders Detayları

Robot Görme (MECE 445) Ders Detayları Robot Görme (MECE 445) Ders Detayları Ders Adı Ders Kodu Dönemi Ders Saati Uygulama Saati Laboratuar Saati Kredi AKTS Robot Görme MECE 445 Bahar 2 0 2 3 4 Ön Koşul Ders(ler)i Yok Dersin Dili Dersin Türü

Detaylı

3.2. Raster Veriler. Satırlar. Sütunlar. Piksel/hücre büyüklüğü

3.2. Raster Veriler. Satırlar. Sütunlar. Piksel/hücre büyüklüğü 3.2. Raster Veriler Satırlar Piksel/hücre büyüklüğü Sütunlar 1 Görüntü formatlı veriler Her piksel için gri değerleri kaydedilmiştir iki veya üç bant (RGB) çok sayıda bant Fotoğraf, uydu görüntüsü, ortofoto,

Detaylı

Hafta 1 Sayısal Görüntü İşlemeye Giriş ve Temel Adımlar

Hafta 1 Sayısal Görüntü İşlemeye Giriş ve Temel Adımlar BLM429 Görüntü İşlemeye Giriş Hafta 1 Sayısal Görüntü İşlemeye Giriş ve Temel Adımlar Yrd. Doç. Dr. Caner ÖZCAN Fall in love with the process, and the results will come. ~ Eric Thomas Derse Giriş Ders

Detaylı

SÜREKLĠ OLASILIK DAĞILIMLARI

SÜREKLĠ OLASILIK DAĞILIMLARI SÜREKLĠ OLASILIK DAĞILIMLARI Sayı ekseni üzerindeki tüm noktalarda değer alabilen değişkenler, sürekli değişkenler olarak tanımlanmaktadır. Bu bölümde, sürekli değişkenlere uygun olasılık dağılımları üzerinde

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları DİZİLER Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar

Detaylı

Bilgisayarla Görüye Giriş

Bilgisayarla Görüye Giriş Bilgisayarla Görüye Giriş Ders 7 SIFT ve Öznitelik Eşleme Alp Ertürk alp.erturk@kocaeli.edu.tr Panorama Oluşturma Görüntü mozaikleme, panorama oluşturma gibi tüm uygulamalar için öncelikle ilgili görüntülerin

Detaylı

ERCİYES ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTUSÜ BİLGİSAYAR MÜHENDİSLİĞİ ANABİLİMDALI. I. GENEL BİLGİLER Ders Adı

ERCİYES ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTUSÜ BİLGİSAYAR MÜHENDİSLİĞİ ANABİLİMDALI. I. GENEL BİLGİLER Ders Adı BİM618 Evrimsel Algoritmalar Öğretim Üyesi Prof. Dr. Derviş Karaboğa Görüşme Saatleri 8.00-17.00 E posta: karaboga@erciyes.edu.tr http://abis.erciyes.edu.tr/sorgu.aspx?sorgu=236 Erciyes Üniversitesi, Mühendislik

Detaylı