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

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

GÖRÜNTÜ İŞLEME - (5.Hafta)

GÖRÜNTÜ İŞLEME - (2.Hafta)

GÖRÜNTÜ İŞLEME - (8.Hafta) RESMİ ALT BÖLGELERE AYIRMA

GÖRÜNTÜ İŞLEME - (4.Hafta)

İl İlçe uygulaması. : Seçilen ile ait ilçeleri listeleyen program. //İl değişkeni için kodu aşağıdaki sayfadan kopyalayınız.

GÖRÜNTÜ İŞLEME - (3.Hafta)

Bilgisayarla Görüye Giriş

Hafta 5 Uzamsal Filtreleme

MEKANİZMA TEKNİĞİ (7. Hafta)

GENETİK ALGORİTMA GEZGİN SATICI ÖDEVİ

MOD419 Görüntü İşleme

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

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

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

KRİPTOANALİZ DERSİ FİNAL ÖDEVİ. PSO ile TRANSPOSITION CIPHER ÇÖZÜMÜ

Görsel Programlama (Visual Programming)

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

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

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

Görüntü Restorasyonu. BMÜ-357 Sayısal Görüntü İşeme Yrd. Doç. Dr. İlhan AYDIN

BULANIK MANTIK ile KONTROL

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

CBÜ Teknoloji Fakültesi, Yazılım Mühendisliği. Nesneye Yönelik Programlama

Bilgisayarla Görüye Giriş

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#3: ALGORİTMA ANALİZİ#2

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

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

Uzaysal Görüntü İyileştirme/Filtreleme. Doç. Dr. Fevzi Karslı

Dijital (Sayısal) Fotogrametri

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

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. K.Sinan YILDIRIM Cenk İNCE Tahir Emre KALAYCI. Ege Üniversitesi Bilgisayar Mühendisliği Bölümü 2003

TARİHÇE. Versiyon Tarih Düzenleyen Açıklama Engin DURMAZ İlk versiyon

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

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#2: ALGORİTMA ANALİZİ

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

AKÜ TEKNOLOJİ FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ

İNTERNET TABANLI PROGRAMLAMA

Dijital (Sayısal) Fotogrametri

GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 9. UYGULAMA

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

ATATÜRK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BIM 205 GÖRSEL PROGRAMLAMA GÜZ DÖNEMİ ÖDEV-1

Dijital (Sayısal) Fotogrametri

NEIGHBOURHOOD PROCESSING (KOMŞULUK İLİŞKİLİ İŞLEMLERİ- BÖLGESEL İŞLEMLER-UZAYSAL FİLTRELEME) BMÜ-357 Sayısal Görüntü İşleme Yrd. Doç. Dr.

Bilgisayarla Fotogrametrik Görme

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

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

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

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR

Matris İşlemleri Uygulaması

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

VERİ TABANI İŞLEMLERİ (NESNE TABANLI PROGRAMLAMA TEKNİĞİ İLE)

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

Ders 8: Metotlar. barisgokce.com

C# ÖRNEK UYGULAMALAR

ULUSAL COĞRAFİ BILGİ SISTEMLERİ KONGRESİ 30 Ekim 02 Kasım 2007, KTÜ, Trabzon

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

İNTERNET TABANLI PROGRAMLAMA- 11.ders FORM UYGULAMASI (DROPDOWN BİLGİ YÜKLEME, VALIDATION KONTROLLERI, PAREMETRELİ KAYIT YAPMA)

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı

D İ Z İ L E R A R R A Y S

Dr. Fatih AY Tel: fatihay@fatihay.net

BULANIK UYARLAMALI ORTALAMA F

BLM 111 ALGORİTMA VE PROGRAMLAMA I

YMT219 VERİ YAPILARI ÖDEV-1

BAĞLANTILI SĐSTEMLER ĐLE MODEL BĐR YERLEŞKE A MODEL CAMPUS WITH CONNECTED SYSTEMS

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Resimlerin üstüne yazı yazacağız. resimyukle.aspx sayfası oluşturuyoruz.

MAT213 Bilgisayar Programlama I

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

AMAÇ Araçlardaki Kamera Sistemleri

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

KROMOSFERĠK YARI AKTĠF BĠR BÖLGEDE GÖZLENEN ĠNCE YAPILARDAKĠ PLAZMA HAREKETLERĠ

Uygulama 1) Tur sayısını 1 den klavyeden girilen n e kadar ekrana yazarak birikimli (kümülatif) toplam alan kaynak kodları yazınız.

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

Karşılaştırma İşlemleri ve Koşullu İfadeler

FINDIK Herkese Açık Filtre

Yıldız Teknik Üniversitesi Fen Bilimleri Enstitüsü Bilgisayar Mühendisliği Bölümü. Bilgisayarla Görme. Vize. İris Segmentation. Selçuk BAŞAK

Görsel Programlama (Visual Programming) 2.Hafta

BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI

BİYOMETRİK İRİS SINIFLANDIRMA SİSTEMLERİ

Hafta 7 Görüntü Onarma ve Geriçatma (Kısım 1)

Görüntü Segmentasyonu (Bölütleme) Dijital Görüntü İşleme Fevzi Karslı, KTÜ Segmentasyon, görüntüyü aynı cinsten obje ve bölgelere ayırmaktır.

ÖDEVLERİ SİSTEME YÜKLEME USULLERİ

Frekans domain inde İşlemler. BMÜ-357 Sayısal Görüntü İşleme Yrd. Doç. Dr. İlhan AYDIN

Uzaktan Algılama Uygulamaları

Bilgisayarla Görüye Giriş

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

Görüntü Segmentasyonu (Bölütleme)

DOKUZ EYLÜL ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ DEKANLIĞI DERS/MODÜL/BLOK TANITIM FORMU. Dersin Kodu: CME 1202

BİLG Dr. Mustafa T. Babagil 1

Burak Kıymaz JAVA FX

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

BİLGİSAYAR PROGRAMLAMA DERSİ

Bilgisayar Grafikleri

Transkript:

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 görüntüsünü ortaya çıkarır. Daha sonra orjinal görüntü ile belirginleşmiş kenarların görüntüsünü birleştirerek, kenarları keskinleşimiş görüntüyü (netleşmiş görüntü) elde eder. Görüntünün netleştirilmesi fotogrametri ve baskı endüstrisinde yaygın olarak kullanılır. g(x,y) çıkış görüntüsü, f(x,y) giriş görüntüsü ve f smooth (x,y) de bu görünün yumuşatılmış hali olmak üzere bu işlem aşağıdaki şekilde gösterilebilir. Burada k bir ölçekleme sabitidir. k için makul değerler 0,2-0,7 arasında değişir. k büyüdükçe keskinleştirme miktarı artar. Filtrenin frekans cevabını inceleyerek işlemi daha iyi anlayabiliriz. Eğer bizim elimizde aşağdaki gibi bir sinyal varsa (a) bu sinyalden lowpass filtreleme yaparak (kenarlar yumuşatılmış olur) (b) ortaya highpass görüntü (keskin kenarlar) çıkar (c). Bu keskin kenarlar, orjinal görüntü ile birleştirilirse netleştirilmiş (kenarları keskinlşetirilmiş) görüntü oluşur (d). 1

Şekil. Keskinleştirme filtresi için frekans cevabı ile kenar görüntüsü hesaplama Keskinleştirme filtresi konvolüsyon işlemi ile yapılır. Yani çekirdek bir matris kullanılarak, resim alanı üzerinde gezdirilir ve gerekli çarpma işlemleri ile yeni resim elde edilir. Görüntünün yumuşatılmış versiyonunu oluşturmak için 3x3 lük Ortalama filtresi (mean filter) kullanılabilir. Ardından yumuşatılmış görüntü, orjinal görüntüden piksel değerleri üzerinden çıkarılır. Bu esnada ortaya çıkan değerler negatif yada 255 i geçebilir. Bu durumda değerleri normalize etmek gerekir. Değerleri normalize etme: Matematiksel işlemler sonunda görüntüdeki R,G,B değeğerleri 0-255 değerlerinin dışına çıkarsa tüm resmi aynı orantıya tabi tutarak değerleri yeniden normalize etmek gerekir. Resim içerisindeki limit değerleri a,b ile, bu değerlerin olması gereken aralık olan 0,255 sayılarını da c,d ile, normalize edilecek değeri Pin, normalize olmuş halinide Pout ile gösterirsek, bu işlemi aşağıdaki şekilde formülüze edebiliriz. Dikkat edilirse bu formül verilen aralıklarda değerleri orantı kurarak bir gerdirme işlemidir. Örneklersek; Not: Buradaki Üst ve alt sınırlar 0 ve 255 değerlerini aşmaz ise d ve c sayıları 0 ve 255 alınamaz. Daha içte kalan mevcut değerler (b yada a) alınmalıdır. Diğer türlü resim hiç beyaz yada siyah bölge yokken bu bölgeler ortaya çıkmaya başlar. 2

Programlama (Görüntü Netleştirme) Orjinal Resim Mean 9x9 matris ile Bulanıklaştırma Kenar Görüntüsü Mean 9x9 matris ile netleşmiş Görüntü 3

Orjinal Resim Gauss (5x5) matrisi ile netleştirilmiş görüntü Burada orjinal resim daha başlangıçta bulanık ise, kullanılan matrisin boyutu artırılmalıdır. Gauss işlemi daha hassas bulanıklaştırma yaptığından etkisi, ince resimlerde daha iyi gözükecektir. Not: Aşağıdaki kodlarda normalleştirme limit değerleri kullanarak yapılmadı. Basit düzeyde sınırı geçen değerler sınıra çekildi (0-255). //NETLEŞTİRME------------------------------- private void netlestirmetoolstripmenuitem_click_1(object sender, EventArgs e) Bitmap OrjinalResim = new Bitmap(pictureBox1.Image); Bitmap BulanikResim = MeanFiltresi(); //Bitmap BulanikResim = GaussFiltresi(); Bitmap KenarGoruntusu = OrjianalResimdenBulanikResmiCikarma(OrjinalResim, BulanikResim); Bitmap NetlesmisResim = KenarGoruntusuIleOrjinalResmiBirlestir(OrjinalResim, KenarGoruntusu); picturebox2.image = NetlesmisResim; public Bitmap OrjianalResimdenBulanikResmiCikarma(Bitmap OrjinalResim, Bitmap BulanikResim) Color OkunanRenk1, OkunanRenk2, DonusenRenk; Bitmap CikisResmi; int ResimGenisligi = OrjinalResim.Width; int ResimYuksekligi = OrjinalResim.Height; CikisResmi = new Bitmap(ResimGenisligi, ResimYuksekligi); int R, G, B; 4

double Olcekleme = 1.7; //0.2-0.7 arası uygundur. for (int x = 0; x < ResimGenisligi; x++) for (int y = 0; y < ResimYuksekligi; y++) OkunanRenk1 = OrjinalResim.GetPixel(x, y); OkunanRenk2 = BulanikResim.GetPixel(x, y); R =Convert.ToInt16(Olcekleme * (OkunanRenk1.R - OkunanRenk2.R)); G = Convert.ToInt16(Olcekleme * (OkunanRenk1.G - OkunanRenk2.G)); B = Convert.ToInt16(Olcekleme * (OkunanRenk1.B - OkunanRenk2.B)); //=============================================================== //Renkler sınırların dışına çıktıysa, sınır değer alınacak. if (R > 255) R = 255; if (G > 255) G = 255; if (B > 255) B = 255; if (R < 0) R = 0; if (G < 0) G = 0; if (B < 0) B = 0; //================================================================ DonusenRenk = Color.FromArgb(R, G, B); CikisResmi.SetPixel(x, y, DonusenRenk); return CikisResmi; public Bitmap KenarGoruntusuIleOrjinalResmiBirlestir(Bitmap OrjinalResim, Bitmap KenarGoruntusu) Color OkunanRenk1, OkunanRenk2, DonusenRenk; Bitmap CikisResmi; int ResimGenisligi = OrjinalResim.Width; int ResimYuksekligi = OrjinalResim.Height; CikisResmi = new Bitmap(ResimGenisligi, ResimYuksekligi); int R, G, B; for (int x = 0; x < ResimGenisligi; x++) for (int y = 0; y < ResimYuksekligi; y++) OkunanRenk1 = OrjinalResim.GetPixel(x, y); OkunanRenk2 = KenarGoruntusu.GetPixel(x, y); R = OkunanRenk1.R + OkunanRenk2.R; G = OkunanRenk1.G + OkunanRenk2.G; B = OkunanRenk1.B + OkunanRenk2.B; 5

//=============================================================== //Renkler sınırların dışına çıktıysa, sınır değer alınacak. if (R > 255) R = 255; if (G > 255) G = 255; if (B > 255) B = 255; if (R < 0) R = 0; if (G < 0) G = 0; if (B < 0) B = 0; //================================================================ DonusenRenk = Color.FromArgb(R, G, B); CikisResmi.SetPixel(x, y, DonusenRenk); return CikisResmi; İKİNCİ YÖNTEM (Konvolüsyon yöntemi-çekirdek matris ile netleştirme) Aşağıdaki çekirdek matris kullanarakda Netleştirme yapılabilir. private void netlestirme2toolstripmenuitem_click(object sender, EventArgs e) Color OkunanRenk; 6

Bitmap GirisResmi, CikisResmi; GirisResmi = new Bitmap(pictureBox1.Image); int ResimGenisligi = GirisResmi.Width; int ResimYuksekligi = GirisResmi.Height; CikisResmi = new Bitmap(ResimGenisligi, ResimYuksekligi); int SablonBoyutu = 3; int ElemanSayisi = SablonBoyutu * SablonBoyutu; int x, y, i, j, toplamr, toplamg, toplamb, ortalamar, ortalamag, ortalamab; int R, G, B; int[] Matris = 0, -2, 0, -2, 11, -2, 0,-2,0; int MatrisToplami = 0 + -2 + 0 + -2 + 11 + -2 + 0 + -2 +0; for (x = (SablonBoyutu - 1) / 2; x < ResimGenisligi - (SablonBoyutu - 1) / 2; x++) //Resmi taramaya şablonun yarısı kadar dış kenarlardan içeride başlayacak ve bitirecek. for (y = (SablonBoyutu - 1) / 2; y < ResimYuksekligi - (SablonBoyutu - 1) / 2; y++) toplamr = 0; toplamg = 0; toplamb = 0; //Şablon bölgesi (çekirdek matris) içindeki pikselleri tarıyor. int k = 0; //matris içindeki elemanları sırayla okurken kullanılacak. for (i = -((SablonBoyutu - 1) / 2); i <= (SablonBoyutu - 1) / 2; i++) for (j = -((SablonBoyutu - 1) / 2); j <= (SablonBoyutu - 1) / 2; j++) OkunanRenk = GirisResmi.GetPixel(x + i, y + j); toplamr = toplamr + OkunanRenk.R * Matris[k]; toplamg = toplamg + OkunanRenk.G * Matris[k]; toplamb = toplamb + OkunanRenk.B * Matris[k]; R = toplamr / MatrisToplami; G = toplamg / MatrisToplami; B = toplamb / MatrisToplami; //=========================================================== //Renkler sınırların dışına çıktıysa, sınır değer alınacak. if (R > 255) R = 255; if (G > 255) G = 255; if (B > 255) B = 255; if (R < 0) R = 0; if (G < 0) G = 0; if (B < 0) B = 0; //=========================================================== CikisResmi.SetPixel(x, y, Color.FromArgb(R, G, B)); k++; 7

picturebox2.image = CikisResmi; Aşağıdaki matrisleride deneyiniz. 8