İMGE İYİLEŞTİRME (IMAGE ENHANCEMENT)
Murat Özalp Bilecik, 2009
İÇİNDEKİLER 7. IMAGE ENHANCEMENT (İMGE İYİLEŞTİRME)..........................................................4 7.1. Introduction (Giriş).......................................................................................4 7.2. Point Operations (Nokta İşlemleri)...................................................................7 7.2.1. Contrast Stretching (Karşıtlık Esnetme, Germe)...........................................8 7.2.2. Clipping and Thresholding (Kırpma ve Eşikleme)........................................10 7.2.3. Digital Negative (Sayısal Negatif).............................................................11 7.2.4. Intensity Level Slicing (Gri Seviyesi Dilimleme).........................................13 7.2.5. Bit Extraction (Bit Çıkarma)....................................................................14 7.2.6. Range Compression (Alan Sıkıştırma).......................................................14 7.2.7. Image Subtraction and Change Detection (İmge Çıkarma ve Değişiklik Tespit Etme)............................................................................................................15 7.3. Histogram Modeling (Histogram Modelleme)...................................................15 7.3.1. Histogram Equalization (Histogram Eşitleme)............................................17 7.3.2. Histogram Modification / Specification (Histogram Değiştirme / Histogram Belirtme).......................................................................................................18 7.4. Spatial Operations (Uzaysal İşlemler)............................................................19 7.4.1. Spatial Averaging and Spatial Low-pass Filtering (Uzaysal Ortalama ve Uzaysal Alçak Geçiren Filtre)........................................................................................19 7.4.2. Directional Smoothing (Yönlü Yumuşatma)...............................................21 7.4.3. Median Filtering (Ortanca Filtresi)............................................................21 7.4.4. Unsharp Masking and Crispening (Keskinlik Maskelemesi ve kenar Koyulaştırma).................................................................................................23 7.4.5. Spatial Low-pass, High-pass and Band-pass Filtering (Uzaysal Alçak-Geçiren, Yüksek Geçiren ve Bant Geçiren Filtreleme)........................................................24 7.4.6. Inverse Contrast Ratio Mapping and Statistical Scaling (Ters Karşıtlık Oranı Eşleştirme ve İstatistiksel Boyutlandırma)..........................................................24 7.4.7. Magnification and Interpolation [Zooming] (İmge Büyütme)........................25 7.4.8. Replication (Replikasyon)........................................................................25 7.4.9. Linear Interpolation (Doğrusal Çoğullama)................................................26 7.5. Transform Operations (Dönüşüm İşlemleri)....................................................27 7.5.1. Generalized Linear Filtering (Genelleştirilmiş Doğrusal Filtreleme)................27 7.5.2. Root Filtering (Kök Filtreleme).................................................................28 7.5.3. Generalized Cepstrum and Homomorphic Filtering (Genelleştirilmiş Cepstrum ve Homomorfik Filtreleme)...............................................................................29 7.6. Multispectral Image Enhancement (Çoğul Tayflı İmge İyileştirme).....................29 7.6.1. Intensity Ratios (Yoğunluk Oranları).........................................................30 7.6.2. Log-Ratios (Logaritmik Oranlama)...........................................................31 7.6.3. Principal Components (Asıl Bileşenler)......................................................31 7.7. Falsecolor and Pseudocolor (Sahte Renklendirme)...........................................32 7.8. Color Image Enhancement (Renkli İmge İyileştirme).......................................33 7.9. Summary (Özet).........................................................................................34
2
ŞEKİLLER DİZİNİ Şekil 1. Ayın ilk fotoğrafı (31 Temmuz 1964).............................................................4 Şekil 2. Örnekleme ve niceleme...............................................................................5 Şekil 3. Sayısal imge gösterimi.................................................................................6 Şekil 4. Frekans alanında imge iyileştirme.................................................................6 Şekil 5. Parlaklık değiştirme örneği ve histogramları...................................................8 Şekil 6. Karşıtlık değiştirme örneği ve histogramları....................................................9 Şekil 7. Karşıtlık esnetme dönüşüm fonksiyonu..........................................................9 Şekil 8. Karşıtlık esnetme örneği.............................................................................10 Şekil 9. Kırpma (solda) ve eşikleme (sağda) durumu.................................................10 Şekil 10. Orijinal imge (solda) ve kırpılmış hali (sağda).............................................11 Şekil 11. Orijinal imge (solda) ve eşikleme yapılmış hali (sağda)................................11 Şekil 12. Negatif alma işlemi..................................................................................11 Şekil 13. Orijinal resim (solda) ve tersi [negatif] (sağda)...........................................12 Şekil 14. İmge iyileştirmede kullanılan bazı basit dönüşüm fonksiyonları......................13 Şekil 15. Gri seviyesi dilimleme örneği....................................................................14 Şekil 16. İmge çıkarma işlemi................................................................................15 Şekil 17. İmge çıkarma işlemi................................................................................15 Şekil 18. 250x250 boyutunda 2 bit imgede histogram. .............................................16 Şekil 19. 250x250 boyutunda 2 bit imgede histogram...............................................16 Şekil 20. Parlak ve karanlık iki histogram örneği.......................................................16 Şekil 21. Düşük ve yüksek karşıtlık için iki histogram örneği......................................17 Şekil 22. Matlab’ta histogram görüntüleme..............................................................17 Şekil 23. Histogram eşitleme..................................................................................18 Şekil 24. Uzaysal ortalama filtreleme örneği.............................................................19 Şekil 25. Uzaysal ortalama filtre (maske) örnekleri...................................................20 Şekil 26. Gaussian filtre için örnek maskeler............................................................20 Şekil 27. Uzaysal ortalama filtreleme örneği.............................................................21 Şekil 28. Ortanca filtre uygulaması.........................................................................22 Şekil 29. Matlab’ta ortanca filtre uygulaması............................................................23 Şekil 30. Matlab’ta keskinlik maskelemesi uygulaması...............................................24 Şekil 31. Uzaysal filtreler.......................................................................................24 Şekil 32. İmge büyütme........................................................................................26 Şekil 33. 2x3 piksellik bir imgenin replikasyon ile 4x6 piksel yapılması........................26 Şekil 34. 2x2 piksellik bir imgenin doğrusal çoğullama ile 4x4 piksel yapılması.............27 Şekil 35. p.ninci çoğullama....................................................................................27 Şekil 36. Dönüşüm İşlemleri Filtrelemesi.................................................................27 Şekil 37. İmge büyütme........................................................................................28 Şekil 38. Frekans filtreleri......................................................................................28 Şekil 39. Homomorfik filtreleme.............................................................................29 Şekil 40. Genelleştirilmiş cepstrum ve homomorfik filtreleme.....................................29 Şekil 41. Bir imgenin farklı bantları.........................................................................30 Şekil 42. Bir imgenin farklı bantlarının oranları.........................................................31 Şekil 43. Bir imgenin farklı bantlarda ayrıştırılması....................................................32 Şekil 44. Pseudocolor sahte renklendirmesi..............................................................32 Şekil 45. Pseudocolor sahte renklendirme örneği......................................................33 Şekil 46. Renkli imge iyileştirmesi...........................................................................33 TABLOLAR DİZİNİ Tablo 1. İmge iyileştirme için hafızasız filtreler...........................................................7
3
7. IMAGE ENHANCEMENT (İMGE İYİLEŞTİRME) 7.1. Introduction (Giriş)
İmge iyileştirmenin temel hedefi; belirli bir uygulama için, resmi orijinal halinden daha iyi duruma getirmektir. İmge iyileştirme sürecinde her durumda aynı işlemler tekrarlanmaz. Örneğin; X-ışını görüntüleri ve uydu görüntülerinde aynı iyileştirme yöntemlerinin uygulanması doğru olmayabilir. Her görüntüye ve her amaca göre imge iyileştirme araçları o duruma uygun olarak kullanılmalıdır. Görüntü kalitesinin artırılması için bilgisayar tekniklerinin kullanılması 1964’te ay fotoğrafları ile başladı. 1960’ların sonları 1970’lerin başlarında tıp alanında imge işleme teknikleri kullanılmaya başlanmıştır. 1970’lerde CAT (Bilgisayarlı Tomografi) geliştirildi.1
Şekil 1. Ayın ilk fotoğrafı (31 Temmuz 1964). “Ranger 7” tarafından ay ile çarpışmadan 17 dakika önce çekilmiştir. İmge iyileştirme işlemlerinin, görüntü işleme açısından nerede durduğunu anlayabilmek için, aşağıda sayısal fotoğraflar üzerinde imge işlemeye örnek olarak verilen “yüz tanıma” sistemindeki işlem basamakları verilmiştir. Tabii ki farklı uygulamalarda bu basamaklar değişiklik gösterebilir. 1. İmgenin Elde Edilmesi (Image Acquisition) 2. İmge İyileştirme (Image Enhancement) 3. Filtreleme ve Düzeltme (Filtering and Restoration) 4. Yüz Belirleme (Detection) 5. Yüz Düzenleme (Alignment) 6. Normalizasyon (Normalization) 7. Gösterim (Representation) 8. Eşleştirme (Matching) İmge işlemenin sembolik ifadesi: g ( x, y ) =T [ f ( x, y )] Girdi imgesi Operatör (İşlem) İşlenmiş imge İmge iyileştirmenin (image enhancement), imge yenileme (image restoration) ile karıştırılmaması gerekir. İyileştirme özneldir yani kişiye (bakışa) göre değişir, yenileme ise nesneldir. İyileştirmede her durum için farklı işlemler farklı seviyelerde uygulanmaktadır, yenilemede ise yapılacak işlemler ve bunların seviyeleri önceden belirlidir. İmge İşlemenin Uygulama Alanları2 • Tıp ve biyoloji (x-ışınları, biyomedikal görüntüler…)
4
• • • • • • • • • •
Coğrafi bilimler (hava ve uydu görüntülerinden hava tahmini) Eski, hasar görmüş fotoğrafların onarılması, GPR-mayın tarama, arkeolojik kalıntıların tespiti Oyun Programlama ( bilgisayarda görü, 3-B modelleme) Fizik (spektrometreler, elektron mikroskobu görüntüleri) Uzay bilimleri (uydu, mikrodalga radar görüntüleri…) Savunma sanayi (gece görüş, akıllı roket sistemleri…) Endüstriyel uygulamalar (süreç, ürün denetimi…) Tüketici elektroniği (Video kayıt cihazları, cep telefonları…) Biyometrik tanıma ve güvenlik sistemleri (iris-parmak izi tanıma, güvenlik-kamera uygulamaları) Uzaktan algılama
Renk Skalası, Niceleme ve Örnekleme3 “Örnekleme” terimi koordinat değerlerini sayısallaştırma için kullanılır. Genlik değerlerini sayısallaştırma için ise “nicemleme” veya “niceleme” terimi kullanılır.
Şekil 2. Örnekleme ve niceleme Renk skalası; bir imgeyi oluşturan tüm renklerin bir yelpaze halinde yayılmış haline denir. İmge siyah-beyaz ise skala siyah’tan beyaza kadar giden gri yelpazedir. İmge renkli ise, skala morötesi ile kızılötesi arasında yer alan tüm renklerin bulunduğu bir yelpazedir. Renkli skala: Gri skala: Bir skalada en fazla değer L ile gösterilir. Bu durumda imgedeki her bir nokta 0 ile L-1 arasında genlik değeri ile ifade edilir. İki boyutlu bir imgede her bir noktayı betimleyen en az 3 adet değer (2 adet koordinat ve 1 adet genlik) bulunmalıdır. [0, L-1] aralığına da imgenin “dinamik aralığı (dynamic range)”denir.
5
Şekil 3. Sayısal imge gösterimi İmge İyileştirme Yöntemleri • Uzaysal Alan (Spatial Domain) : Resim düzleminin kendisidir. Pikseller üzerinde doğrudan işlem yapılır. • Frekans Alanı (Frequency Domain) : Resmin Fourier dönüşümü üzerinde değişiklik yapmaya dayanır. Filtre fonksiyonu H(u,v)
Fourier dönüşümü F(u,v)
Ters Fourier dönüşümü
H(u,v)F(u,v) Son işleme
Ön işleme
f(x,y) giriş sinyali Şekil 4. Frekans alanında imge iyileştirme
İşlem 1. Contrast Stretching (Karşıtlık Esnetme) 2. Noise clipping and treshoolding (gürültü kırpma ve eşikleme) 3. Gray scale reversal (Gri skala tersleme)
Formül
αu , 0≤u
g(x,y) iyileştirilmiş sinyal
Açıklama
α, β ve γ eğrileri artırımını belirler.
bağıl
karşıtlık
Gri seviye dağılımı düzensiz olan ikili ve diğer imgelerde kullanışlıdır. a ve b, histogramın tepeleri arasında bir vadi belirler. a=b=t değeri için bu duruma eşikleme adı verilir. İmgenin sayısal (negatif) verir.
olarak
6
tersini
4. Gray-level Windows slicing (Gri Seviyesi Dilimleme)
L, f (u ) = 0,
5. Bit extraction (Bit çıkarma)
u i n = Int B −n , n = 1,2,...., B 2
a ≤u ≤b aksi halde
f (u ) = (in − 2in −1 ) L
f (u ) = 2u mod ulo ( L +1),
6. Bit removal (Bit Silme)
7. Range compression Aralık Sıkıştırma
a ve b değerleri aralığında bulunan pikselleri tamamen aydınlatır. Arka zemini silmek için kullanılır.
0 ≤u ≤ L
B= “u sayısını tamsayı olarak tanımlamak için kullanılan bit sayısı”. Bu bize, n’inci en değerli biti verir. Yüksek değerli biti siler.
u f (u ) = 2 Int 2 v = c log10 (1 + u ), ∆
c=
u ≥0
L log 10 (1 + L)
Düşük değerli biti siler. Karşıtlık dönüşümünün yoğunluğu.
Tablo 1. İmge iyileştirme için hafızasız filtreler
7.2. Point Operations (Nokta İşlemleri) Nokta işlemleri hafızasız işlemler olarak bilinir. Bunun sebebi, yeni oluşturulan resimdeki bir nokta hesaplanırken, orijinal resimdeki aynı koordinattaki tek bir piksel işleme girer. Bir pikselin diğer bir piksel üzerine etkisi yoktur. Kabaca, aşağıdaki gibi gösterilir: v = f (u ) Burada, “v” ile “u” [0,L] aralığında tanımlanan gri renk skalasının elemanıdırlar. “u” elemanı, “f” ile belirtilen fonksiyona tabi tutulduğunda “v” isimli yeni eleman elde edilir. En basit nokta işlemi parlaklık değiştirmedir. Basitçe aşağıdaki gibi ifade edilir: g ( x, y ) = f ( x , y ) + b Bu ifadede x,y koordinatları ile belirtilen noktanın gri skala değerine doğrudan b kadar ekleme yapılıyor. b sayısı pozitif ise parlaklık artar, sayı negatif ise parlaklık azalır. Aşağıda parlaklık değiştirme ile ilgili örnek fotoğraflar gösterilmiştir.
(a)
(b)
7
(c)
Şekil 5. Parlaklık değiştirme örneği ve histogramları. (a) orijinal fotoğraf. (b) azaltılmış parlaklık. (c) arttırılmış parlaklık. 7.2.1. Contrast Stretching (Karşıtlık Esnetme, Germe) Karşıtlık (kontrast), imgedeki açık ve koyu renkler arasındaki farkların daha çok veya az olması şeklinde ifade edilebilir. Karşıtlık artırma basitçe aşağıdaki şekilde ifade edilir: g ( x, y ) = a. f ( x, y ) Bu ifadede; x,y koordinatları ile belirtilen her bir noktanın gri skala değeri “a” sayısı ile çarpılmaktadır. Genel imgenin karşıtlığı ise a değeri 1’den büyükse artarken, a’nın 1’den küçük olması durumunda karşıtlık azalır. Bazı durumlarda da karşıtlık ve parlaklık değiştirmesi aşağıdaki gibi beraber kullanılabilir: g ( x, y ) = a. f ( x, y ) +b Aşağıda aynı imgenin farklı karşıtlık değerleri görülmektedir. Karşıtlık ayarlamanın özel bir biçimi ileride göreceğimiz eşikleme (tresholding) olarak karşımıza çıkmaktadır.
(a)
(b)
8
(c)
Şekil 6. Karşıtlık değiştirme örneği ve histogramları. (a) orijinal fotoğraf. (b) azaltılmış karşıtlık. (c) arttırılmış karşıtlık. Karşıtlık esnetmenin grafiksel ifadesi aşağıdaki şekilde gösterilmiştir. V γ Vb β Va
u
α a
b
L
Şekil 7. Karşıtlık esnetme dönüşüm fonksiyonu. Koyu bölgelerde: α rel="nofollow"> 1, a ≅ L / 3
Orta koyulukta bölgelerde: β >1, b ≅ 2 3 L ve parlak bölgelerde: γ >1 Karşıtlık esnetmenin karşıtlık artırmadan farkı dinamik olmasıdır. Esnetme hesaplanırken; her noktanın değeri sabit bir sayı ile çarpmak yerine, her noktanın histogramdaki yerine göre farklı bir sayı ile çarpılarak hesaplanır. Bu işlem sonucunda, mevcut histogram fazla bozulmaz, sadece iki yana doğru esnetilmiş olur. Bu nedenle bu tekniğe karşıtlık esnetme adı verilir. Aşağıda karşıtlık esnetme örneği görülmektedir:
(a)
(b)
9
(c)
(d) Şekil 8. Karşıtlık esnetme örneği. (a) orijinal imge, (b) orijinal histogram (c) dönüşüm fonksiyonu, (d) esnetilmiş karşıtlık MATLAB’ta karşıtlık esnetme: r1= imread('edebali.jpg'); figure,imshow(r1); m=127; E=10; g=1./(1+(m./double(r1)+eps).^E); figure,imshow(g); 7.2.2. Clipping and Thresholding (Kırpma ve Eşikleme) Karşıtlık esnetmenin özel bir formu α = γ = 0 durumudur, bu işleme kırpma adı verilir. Giriş sinyalindeki renk değerleri sadece a a ve b arasında olduğu durumlarda, gürültü temizlemek için kullanılır. Veya başka bir deyişle, aralıktaki değerlerin dışındaki renk değerleri önemli değil ise, kırpma kullanılabilir. İşlem sırasında belirli bir fmin ve fmax aralığındaki renk değerleri tüm skalaya yayılır. Örneğin 8 bit gri skalalı bir resimde; fmin=80 ve fmax=140 ise, buna kırpma uygulandığında, 80 ve altındaki renk değerleri tam siyaha çekilir, 140 ve üzerindeki değerler de tam beyaza çekilir. Böylece 80 ve 140 arasında bulunan 60 değer, 256 seviyelik skalaya yayılır. Kırpma
işleminin
yapılabilmesi için
bir
değişik
durumu
da
eşikleme
olarak
adlandırılır.
Eşikleme
∆
a = b = t eşitliği sağlanmalıdır. Eşikleme yapıldığında imge iki bitlik gri
skalaya dönüşür yani sadece “siyah” ve “beyaz” kalır. Başka bir deyişle, belirlenen eşik değerinin üstündeki değerlikli tüm pikseller beyaz yapılır; eşiğin altında kalanlar da siyah yapılır. Üçüncü bir alternatif olamaz. Şu şekilde de ifade edilebilir: fmin=fmax=”eşik değeri”. Aşağıda kırpma ve eşikleme için dönüşüm fonksiyonları verilmiştir. v
v
a
b
u Şekil 9. Kırpma (solda) ve eşikleme (sağda) durumu
u
10
Aşağıdaki resimlerde de kırpma ve eşikleme örnekleri verilmiştir.
Şekil 10. Orijinal imge (solda) ve kırpılmış hali (sağda)
Şekil 11. Orijinal imge (solda) ve eşikleme yapılmış hali (sağda) 7.2.3. Digital Negative (Sayısal Negatif) Bir resmin negatifini bulmak için, her bir noktanın renginin tümleyeni alınır. Yani skala büyüklüğü L ise, rengin değeri L değerinden çıkarılarak her bir noktanın tersi bulunmuş olur. Aşağıda, sayısal negatif alma işleminin dönüşüm fonksiyon grafiği verilmiştir. v L
0
L
u Şekil 12. Negatif alma işlemi
11
Şekil 13. Orijinal resim (solda) ve tersi [negatif] (sağda) İmgenin renk skalasının boyutu L olsun. Her nokta için gri düzeyler (r), [0, (L-1)] aralığında olacaktır. Bu durumda, resmin negatifi şöyle bulunabilir: s = (L-1)-r s: noktanın negatif renk değeri r: noktanın renk değeri L: renk skalasının boyutu Örnek: 256 renkli gri skala biçiminde bir imgede renk değeri 10 olan bir noktanın negatif değeri şöyle bulunabilir: s=(L-1)-r s=(256-1)-10 s=245 MATLAB’ta resmin tersini elde etme: imge = imread('edebali.jpg'); ters = imcomplement(imge); imshow(imge); figure,imshow(ters); Aşağıdaki şekilde, 256 renk gri skaladaki renk değerini değiştirmek için kullanılan bazı diğer dönüşüm fonksiyonları görülmektedir.
12
Görüntünün parlaklığı (%)
Piksel renk değeri
Şekil 14. İmge iyileştirmede kullanılan bazı basit dönüşüm fonksiyonları 7.2.4. Intensity Level Slicing (Gri Seviyesi Dilimleme) Belirli bir gri seviyesi aralığının belirginleştirilmesi için kullanılır. Belirginleştirme için gri seviyesi 255 (8 bit için) yapılabilir veya olduğu gri seviyesinde bırakılabilir. Uygulamada; uydu görüntülerinde su bölgelerinin, kemiklerdeki çatlakların belirginleştirilmesi gibi kullanım alanları vardır.
(a)
(b)
(c)
(d)
13
Şekil 15. Gri seviyesi dilimleme örneği. (a) A ve B aralığındaki değerler öne çıkarılmış, diğer tüm gri seviyeleri sıfırlanmış. (b) A ve B aralığındaki değerler öne çıkarılmış, diğer tüm gri seviyeleri olduğu gibi bırakılmış. (c) İşlenecek imge (d) a şıkkındaki fonksiyonun imgeye uygulanmış hali. Gri seviyesi dilimleme fonksiyonu basitçe aşağıdaki gibi ifade edilmektedir: Arka planda imge yoksa: Arka planda imge varsa:
L, f (u ) = 0, L, f (u ) = u ,
a ≤u ≤b aksi halde a ≤u ≤b aksi halde
7.2.5. Bit Extraction (Bit Çıkarma) Her imge noktası, B sayıda bit ile nicelenmektedir (quantization). Bit çıkarma, bir noktanın ikili sayı sistemindeki ifadesinde, n. yüksek ağırlıklı biti (most significant bit, MSB) almak için kullanılır. Bir noktanın renk değerinin aşağıdaki şekilde ikilik olarak ifade edildiğini varsayalım:
u = k1 2 B −1 + k 2 2 B −2 + ........ + k n 2 B −n + k B Fonksiyonun çıkışı şu şekilde yazılabilir:
k n =1 ise L, f (u ) = aksi halde 0, Örneğin; 8 bit gri-skala bir imgede, 1. MSB (yüksek ağırlıklı bit) için bit çıkarma işlemi yaptığımızı varsayalım. İmgenin her bir noktası şu şekilde hesaplanır: Soldan itibaren ilk biti 1 olan her noktanın gri değeri 255 olurken, diğer noktaların gri değeri 0 olacaktır. Bit çıkarma işlemi, bir imgede hangi değerlikli bitlerin görüntüde etkili olduğunun bulunması için kullanılmaktadır. Tahmin edilebileceği gibi, sadece baştaki birkaç bit imgenin çoğunu oluşturmaktadır. Aşağıdaki örnekten bu anlaşılabilir: Örnek: (10111111)2 sayısı onluk sistemde 191 sayısına karşılık gelir. Onlu sayı sisteminde 192 sayısı ise, ikili sistemde (11000000) 2 sayısına karşılık gelir. 256 renk gri skalada 191 ve 192 renk değerleri arasında çok çok az fark vardır. Onlu sistemde birbirine çok yakın olan iki sayının ikili karşılığında yüksek ağırlıklı bitler aynı iken düşük ağırlıklı bitler çok fazla değişebilmektedir. Buradan yüksek ağırlıklı bitlerin renk değerinin belirlenmesinde daha etkin olduğu anlaşılmaktadır. 7.2.6. Range Compression (Alan Sıkıştırma) İnsan gözünün karşıtlık algılayabilme oranı 108:1 ‘e kadar çıkabilmektedir. Normal zamanlarda ise ortalama karşıtlık algılama oranımız, 3x104 civarındadır4. Yani %100 siyah ile %100 beyaz arasında bu kadar seviyede renk görebilmektedir. Gerçek dünyada her şey yüksek dinamik aralıklıdır. Oysa sayısal dünyada yüksek dinamik aralığı kullanmak kolay değildir. Aynı kadrajda hem aydınlık hem de karanlık bölgeler içeren bir fotoğraf çekildiğinde, bu durum görülmektedir. Bu tarz fotoğraflarda ya karanlık veya aydınlık bölgelerden birisindeki veriler kaybedilir veya fotoğrafın tamamı soluk çıkmaktadır. Bunun nedeni; görüntü kaydedip sayısallaştıran cihazların gerçek dünyadaki dinamik aralığı yakalayamamasındandır. Bu nedenle özelikle yüz tanıma sistemlerinde, yüzlerde koyu gölge olan kısımları görebilmek için “dinamik aralık sıkıştırma” ve “karşıtlık iyileştirme” çokça kullanılan yöntemlerdendir. Bazen imgenin dinamik aralığı çok fazla olabilir. Bu tarz durumlarda mesela sadece birkaç pikselin görülebildiği dahi olabilir. Logaritmik bir dönüşüm ile dinamik aralık sıkıştırılabilir. Aşağıda bu dönüşüm verilmiştir: v = c log 10 (1 + u )
14
Formüldeki c sayısı, istenen seviyede sıkıştırmayı sağlamak için kullanılan bir sabittir. Bu dönüşüm; yüksek genlikli noktalara nazaran, düşük genlikli noktaların iyileştirilmesini sağlamaktadır. 7.2.7. Image Subtraction and Change Detection (İmge Çıkarma ve Değişiklik Tespit Etme) Uygulamada sıklıkla iki farklı karmaşık imgenin karşılaştırılması gerekmektedir. Bunu sağlamak için basit ve güçlü bir yöntem iki imgeyi üst üste yerleştirmek ve birini diğerinden çıkarmaktır. Bunun sonrasında fark imgesi üzerinde iyileştirme yapılır. Örneğin, bir elektronik devre üzerinde eksik malzeme olup olmadığını anlamanın en kolay yolu, devrenin fotoğrafının orijinal sağlam devre fotoğrafından çıkarılmasıdır. Başka bir uygulama alanı da vücuttaki kan damarları ve arterlerdir. Kana kızılötesi cihazlarda farklı renk veren bir boya maddesi enjekte edildikten sonra damarların röntgen fotoğrafı alınır. Bu fotoğraf enjeksiyondan önce alınan fotoğraftan çıkarılır. Bu şekilde damarlarda izlenen yol görülmüş olur. Benzer şekilde güvenlik sistemlerinde, elektronik baskı devrelerin seri üretiminde ve benzeri alanlarda da endüstriyel kullanımı vardır. Aşağıdaki şekillerde imge çıkarma uygulamaları görülmektedir.5
Şekil 16. İmge çıkarma işlemi. (a) orijinal fotoğraf; (b) bir para yer değiştirdikten sonra; (c) nokta-nokta çıkarımdan sonraki fark.
Şekil 17. İmge çıkarma işlemi. Solda, orijinal fotoğraf. Sağda, çıkarım işlemi sonucunda eksik olduğu görülen eleman
7.3. Histogram Modeling (Histogram Modelleme)
Histogram, bir imge içerisindeki çeşitli renk değerlerinin tekrarlanma sıklığını (frekansını) gösteren grafiktir. Histogram modelleme teknikleri, bir imgenin histogramını istenen şekle getirmek için imge üzerinde yapılan düzenlemelerdir. Bu teknikler, histogram üzerinde dar bir alanda yığılmaların olduğu (düşük karşıtlıklı) imgelerde kullanışlıdır.
15
Histogram Nedir? Aşağıdaki şekillerde basit histogram örneği verilmiştir6. Şekilden de görüleceği üzere, histogramlarda konum bilgisi bulunmaz, sadece frekans bilgisi bulunur. Aşağıda iki farklı şeklin histogramlarının aynı olduğuna dikkat ediniz:
Şekil 18. 250x250 boyutunda 2 bit imgede histogram.
Şekil 19. 250x250 boyutunda 2 bit imgede histogram.
Karanlık imge
Aydınlık imge
Şekil 20. Parlak ve karanlık iki histogram örneği.
16
Düşük karşıtlık
Yüksek karşıtlık
Şekil 21. Düşük ve yüksek karşıtlık için iki histogram örneği.
Matlab’ta histogram görüntüleme imge=imread('tire.tif'); h=imhist(imge); figure, imshow(imge); figure, imhist(imge);
800 600
400 200
0 0
50
100
Şekil 22. Matlab’ta histogram görüntüleme.
150
200
250
7.3.1. Histogram Equalization (Histogram Eşitleme) Histogram dağılımı dengesiz olan, belirli bölgelerde yığılma olan imgelerde kullanışlıdır. Bu tarz imgelerin karşıtlığı azdır ve histogram eşitleme sonrası daha iyi işlenebilir hale gelebilir. Aşağıdaki şekillerden de görülebileceği gibi, histogram eşitlemede amaç, renklerin frekanslarının histogram üzerinde bir yerde yığılmadan, düzgün dağılmasını sağlamaktır.
17
(a)
(c)
(b)
(d) Şekil 23. Histogram eşitleme. (a)orijinal fotoğraf (b)orijinal histogram (c)Histogram eşitlenmiş fotoğraf (d)eşitlenmiş histogram
Histogram eşitleme işleminde, olasılık dağılımına bağlı olarak doğrusal olmayan dönüşüm gerçekleştirilir. Bu sayede bulunma olasılığı fazla olan piksellerin arası histogram üzerinde daha fazla açılır. Histogram eşitleme algoritması (8 bit gri-skala): 255 1. Yükseltme faktörünü d = şeklinde hesapla top. nokta sayisi 2. İmgenin histogramını hesapla 3. İlk gri seviye eşleştirmesi için c[0] = d x histogram[0] şeklinde hesapla 4. Diğer tüm gri seviyeleri için: c[i ] = c[i −1] + d x histogram[i ] şeklinde hesapla 5. İmgenin tüm pikselleri için: g ( x, y ) = c[ f ( x, y ) ] şeklinde hesapla.
MATLAB’ta histogram eşitleme: I = imread('tire.tif'); J = histeq(I); figure, imshow(I), figure, imshow(J) 7.3.2. Histogram Modification / Specification (Histogram Değiştirme / Histogram Belirtme) Önceki konuda anlatıldığı üzere, histogram eşitleme işlemi gerekli olan dönüşüm fonksiyonunu otomatik olarak belirliyordu. Otomatik iyileştirme işe yarayacağı durumlarda bunu tercih etmek mantıklıdır. Çünkü eşitlemenin sonuçları öngörülebilir ve uygulaması kolaydır. Bu konuda bahsedilen işlemler ise otomatik histogram dağılımının iyi sonuç veremeyeceği durumlar içindir. Bazen elde etmek istediğimiz imgenin sahip olması gereken histograma kendimiz karar vermek isteriz. Histogram belirtme yöntemleri bu durumlarda kullanılır.7
18
7.4. Spatial Operations (Uzaysal İşlemler) Birçok imge iyileştirme tekniği, uzaysal düzlemde giriş noktalarının komşuluğuna bağlı olarak kullanılır. Sıklıkla imge, “uzaysal maske” adı verilen bir sonlu darbe cevabı ile konvolve edilir. Uzaysal maske yerine “konvolüsyon çekirdeği (convolution kernel)”, “konvolüsyon maskesi (convolution mask)”, “konvolüsyon penceresi (convolution window)” gibi isimler de kullanılmaktadır. Bu işleme filtreleme de denir. İmgenin üzerinde sanki bir filtre varmış gibi düşünülüp her piksel yeniden hesaplanır.8 İlgili pikselin yeni değeri, komşu piksellerin değerleri de dikkate alınarak bulunur. Kullanılacak piksellerin ağırlıkları, yapılacak işleme bağlı olarak değişmektedir. Kenar bulma, gürültü giderme, imge keskinleştirme, yumuşatma gibi işlemlerde kullanılmaktadır. Hesapsal yükü, nokta işlemlerine göre oldukça fazla olabilmektedir.9 7.4.1. Spatial Averaging and Spatial Low-pass Filtering (Uzaysal Ortalama ve Uzaysal Alçak Geçiren Filtre) Ortalama veya ağırlıklı ortalamaya dayandığı için “Ortalama Filtreleri” olarak ta adlandırılır. Alçak geçiren filtre olarak adlandırılmasının sebebi de imgenin gri tonlarındaki keskin geçişleri azaltmasıdır. Resimdeki her piksel yerine komşuları ile beraber ortalaması alınarak hesaplanan değer konulduğundan, resimdeki gri düzeyleri arasındaki keskin geçişler azalır; daha yumuşak geçişler söz konusudur. Resim üzerindeki kenarlarda bulanıklaşmaya (blur) yol açarlar.10 Aşağıda ortalama filtresi uygulanmış örnek çalışma görülmektedir:
(a)
(b)
(c)
(ç)
(d) (e) Şekil 24. Uzaysal ortalama filtreleme örneği. (a)orijinal fotoğraf (b)3x3 maske (c)5x5 maske (ç)9x9 maske (d)15x15 maske (e)35x35 maske
19
Aşağıda örnek uzaysal ortalama filtreleri görülmektedir.
l
l
l
¼
¼
k 1/9 1/9 1/9
¼
¼
1/9 1/9 1/9 1/9 1/9 1/9
(a)
(b)
k
0
1/8
0
1/8 1/8 1/8 0
1/8
0
(c)
Şekil 25. Uzaysal ortalama filtre (maske) örnekleri. (a) 2x2 maske. (b) 3x3 maske. (c) 5 noktalı ağırlıklı ortalama maskesi Filtrenin genel ifadesi şu şekildedir:
v ( m, n) = ∑
∑a(k , l ) y (m −k , n, l )
( k ,l )∈W
Burada, her bir nokta ona komşu olan tüm noktaların ortalaması şeklinde hesaplanır. y(m,n) fonksiyonun girişi, v(m,n) çıkışıdır. W, seçilen maske penceresidir. a(k,l) de filtrenin ağırlığıdır (hücre değerleri). Uzaysal ortalama filtrelerinde sıkça kullanılan bir maske de tüm ağırlıkların eşit olduğu maskedir. Şöyle gösterilebilir:
1 y ( m − k , n, l ) ∑( k∑ NW ,l )∈W Burada, a(k,l)=1/Nw ve Nw da W penceresindeki piksel sayısıdır. Yine sıklıkla kullanılan bir v ( m, n) =
başka filtre de “en yakın dört pikselin” ağırlıklı ortalamasıdır. Bu filtre de aşağıdaki gibi ifade edilebilir:
v( m, n) =
1 y ( m −1, n) + y ( m +1, n) + y ( m, n −1) + y ( m, n −1) y ( m, n) + 2 4
Bu filtrenin Gaussian dağılımını kullanarak biraz daha değiştirilmiş hali Gaussian filtresi olarak bilinir. Bu filtrenin ifadesi aşağıda verilmiştir:
v(m, n, σ ) =
1 e 2π σ2
x2 + y2 − 2 wσ
Gaussian filtresi için örnek maske aşağıdaki şekilde verilmiştir.
Şekil 26. Gaussian filtre için örnek maskeler.
20
MATLAB’ta Ortalama ve Gaussian filtresi: asil=imread('edebali.jpg'); asil=im2double(asil); %imgenin genlik değerlerini noktalıya çevir. % h1=fspecial('gaussian',10,2); %maske:10x10 ve sigma=2 gaussian=imfilter(asil,h1,'replicate'); % h2=fspecial('average',10); %maske:10x10 ortalama=imfilter(asil,h2,'replicate'); % figure,imshow(asil); figure,imshow(gaussian,[]); figure,imshow(ortalama,[]); Matlab’ta filtrelerin dönüşüm fonksiyonu:
Şekil 27. Uzaysal ortalama filtreleme örneği. Solda, gaussian filtre fonksiyonu; sağda ise ortalama filtre görülmektedir. Uzaysal ortalama; gürültü yumuşatma, alçak-geçiren filtre amaçlı olarak kullanılmaktadır. 7.4.2. Directional Smoothing (Yönlü Yumuşatma) İmgeyi yumuşatırken kenarların aşırı bulanıklaşmaması için yönlü ortalama filtreleri kullanılabilir. Bu işlemde uzaysal ortalamalar her teta açısı için, birçok yönden hesaplanır.11 Matematiksel olarak şöyle ifade edilebilir:
1 y (m − k , n − l ) ∑( k ∑ Nθ ,l )∈Wθ Burada; W0 seçilen θ açısı için belirlenen komşuluktur. Bu işlevi en verimli şekilde kullanabilmek için; |y(m,n)-v(m,n: θ*)| değerini minimum yapan özel bir θ* açısı v(m, n : θ) =
kullanılmalıdır. Bu durumda, v ( m, n) = v ( m, n : θ* ) değeri bize istenilen çıktıyı sağlayacaktır.
7.4.3. Median Filtering (Ortanca Filtresi) Bu filtreleme yönteminde, orijinal sıralanmış piksel komşularının arasındaki ortanca değer ile değiştirilir. Bunun ağırlıklı ortalama filtrelerinden farkı şudur: Ağırlıklı ortalama filtrelerinde, komşuların ağırlıklı ortalaması alınır, hesaplanan bu değer orijinal piksel ile yeniden ortalanarak sonuç bulunur. Ortanca filtresinde ise, komşuluk değerleri önce sıraya konulur, sonra ortadaki değer alınır. Bu değer doğrudan sonuç kabul edilir. Ortanca değeri net elde edebilmek için genellikle tek sayıda komşu seçilir. Eğer hesaplamada çift sayıda komşu kullanılırsa, bu durumda ortada kalan iki pikselin aritmetik ortalaması kullanılır. Matematiksel ifadesi şu şekildedir:
v ( m, n) = median{ y ( m − k , n − l ),
( k , l ) ∈W }
21
(a)orijinal fotoğraf
Şekil 28. Ortanca filtre uygulaması. (b)tuz & biber gürültüsü (c)ortanca filtre sonucu
Basit bir ortanca filtresinin nasıl çalıştığını inceleyelim. Örneğin aşağıdaki sayılar için kenar tekrarlı ortanca filtresi uygulayalım (pencere genişliği (window size, katar) 3 için: g = [2,32,2,1,2,8,9] ç [0] = [2,2,32] = [2,2,32] => 2 // burada ilk sayıyı tekrar ettik çünkü katar 3 olmalı ve şayet ilk sayıyı 2 kere almazsak ilk sayı için 3 adet sayımız olmayacaktır. ç [1] = [2,32,2] = [2,2,32] => 2 // ilk dizi giriş dizisinin ilk 3 sayısıdır (katar 3 olduğu için) ikinci dizi ise sıralanmış halidir. ve sonuç olarak ortanca değer 2 bulunur. ç [2] = [32,2,1] = [1,2,32] => 2 ç [3] = [2,1,2] = [1,2,2] => 2 ç [4] = [1,2,8] = [1,2,8] => 2 ç [5] = [2,8,9] = [2,8,9] => 8 ç [6] = [8,9,9] = [8,8,9] => 9 ç = [2,2,2,2,2,8,9] olarak bulunur. Yukarıdaki örnekte g giriş dizisi, ç ise çıkış dizisi olarak kabul edilmiştir. Görüldüğü üzere yukarıdaki örnekte ortanca filtresi uygulandıktan sonra çok büyük bir sayı olan ve yakınlarında başka benzer sayı bulunmayan 32 sayısı elenmiştir. Benzer şekilde yakınlarında benzeri bulunmayan 1 sayısı da çok fazla 2 sayısı arasında kalıp bu sayılar tarafından boğulmuştur. 2 boyutlu imgelerde bu filtre kullanılırken 2 boyutlu pencere uygulanır. Örneğin 3×3 gibi. Bu durumda 9 hücreli katar’ın içinde kalan sayılar sıralanarak ortalama değeri yeni değer olarak yazılır. Ortanca filtrenin bazı özellikleri aşağıda verilmiştir: • Lineer değildir. Şöyle:
median{x(m)+y(m)} ≠ median{x(m)}+ median{y(m)}
• •
Uzaysal çözünürlüğü bozmadan, kopuk (bağımsız) nokta veya çizgi gürültülerini temizlemek için kullanışlıdır. Bu nedenle ikili (binary) gürültülerde başarılı olmasına rağmen Gaussian gürültüsünde kullanışlı değildir. Gürültü piksellerinin sayısı komşu piksellerin yarısına eşit veya daha fazla ise bu filtre pek başarılı çalışmaz.12
Matlab’ta ortanca filtresi I = imread('eight.tif'); J = imnoise(I,'salt & pepper',0.02); % tuz & biber gürültüsü ekle K = medfilt2(J); imshow(J) figure, imshow(K)
22
Şekil 29. Matlab’ta ortanca filtre uygulaması. Solda, gürültülü fotoğraf. Sağda, ortanca filtresi sonrası. 7.4.4. Unsharp Masking and Crispening (Keskinlik Maskelemesi ve kenar Koyulaştırma) Keskinleştirici filtreler: Resimdeki ayrıntıları, keskin geçişleri belirginleştirmek, bulanıklaştırılmış görüntülerdeki ayrıntıları yeniden ortaya çıkarmak için kullanılır. Endüstriyel ve askeri alanda, tıbbi çalışmalarda ve diğer birçok alanda yararlıdır. Keskinleştirme, sayısal farkların alınması ile gerçekleştirilir (diferansiyel, türev). Fark alma, resimdeki kenarları, süreksizlikleri (gürültü gibi) belirginleştirir (keskinleştirir) ve küçük gri düzeyi değişimleri olan resim bölgelerini solgunlaştırır. Keskinlik Maskelemesi: Genelde endüstride baskı alırken kenarları keskin göstermek için kullanılır. Resimden bulanıklaştırılmış hali çıkarılınca keskinleştirme sağlanır. Aynı şekilde, dereceli veya yüksek geçiren bir işaret eklenerek te elde edilebilir. Matematiksel ifadesi şöyledir: v ( m, n) = u ( m, n) +λg ( m, n) Burada; λ>0 dır, g(m,n) ise (m,n) üzerinde düzgün derecelendirilmiş skaladır. Çokça kullanılan bir derecelendirme skalası fonksiyonu ayrık Laplas’tır. Matlab’ta, Keskinlik Maskelemesi Örneği: kaynak = imread('moon.tif'); h = fspecial('unsharp'); I2 = imfilter(kaynak,h); imshow(kaynak), title('Orijinal imge') figure, imshow(I2), title('Filtrelenmiş imge')
23
Şekil 30. Matlab’ta keskinlik maskelemesi uygulaması. Solda, orijinal fotoğraf. Sağda, keskinlik maskelemesi sonrası. Matlab’ta bulanıklık, hareket bulanıklığı ve keskinleştirme I = imread('moon.tif'); subplot(2,2,1);imshow(I);title('Orijinal İmge'); H = fspecial('motion',50,45); MotionBlur = imfilter(I,H); subplot(2,2,2);imshow(MotionBlur);title('Hareket Bulanığı Yapılmış'); H = fspecial('disk',10); blurred = imfilter(I,H); subplot(2,2,3);imshow(blurred);title('Bulanıklaştırılmış'); H = fspecial('unsharp'); sharpened = imfilter(I,H); subplot(2,2,4);imshow(sharpened);title('Keskinleştirilmiş'); 7.4.5. Spatial Low-pass, High-pass and Band-pass Filtering (Uzaysal AlçakGeçiren, Yüksek Geçiren ve Bant Geçiren Filtreleme) Alçak geçiren filtreler genellikle gürültü temizlemek ve enterpolasyon için kullanılırlar. Yüksek geçiren filtreler ise imgeyi keskinleştirmek ve kenarları bulmak için kullanılır. Bant geçiren filtreler de kenarların iyileştirilmesinde, imgedeki gürültülerde farklı ayarlarda yüksek geçiren gibi kullanılabilir. vLP(m,n)
Uzaysal ortalama
u(m,n)
u(m,n)
(a) uzaysal alçak geçiren
u(m,n)
Alçak geçiren vLP(m,n) + + (LPF) -
VHP(m,n)
(b) uzaysal yüksek geçiren
LPF hL1(m,n)
vLP(m,n) +
+
VBP(m,n)
LPF hL2(m,n) (c) uzaysal bant geçiren
Şekil 31. Uzaysal filtreler Daha önce de belirtildiği gibi, alçak geçiren filtreler imgeyi bulanıklaştırırken yüksek geçiren filtreler keskinleştirir. Bunun sebebi imgedeki ani renk geçişlerinin (özellikle kenar ve köşe hatlarında) yüksek frekans bileşeni olarak görülmesidir. Bu nedenle; yüksek geçiren filtre kullanıldığında keskin olan bileşenler geçirilirken, alçak geçiren filtre ile de yumuşak bileşenler geçirilir. 7.4.6. Inverse Contrast Ratio Mapping and Statistical Scaling (Ters Karşıtlık Oranı Eşleştirme ve İstatistiksel Boyutlandırma) Görme sistemlerimizin başarısı, yeknesak bir arka zemin önünde duran nesnelerin boyutuna (çözünürlüğüne) ve karşıtlık oranına (γ) bağlıdır. Karşıtlık oranı aşağıda gösterilmiştir:
γ=
σ µ
24
Burada, μ nesnenin ortalama aydınlığıdır. σ ise nesnenin etrafındaki diğer nesnelerin aydınlığının standart sapmasıdır. Buradan ters karşıtlık oranının dönüşümünü yazarsak:
v( m, n) =
µ(m, n) σ(m, n)
olacaktır. Burada; μ(m,n) ve σ(m,n) yerel ortalamalardır. u(m,n) nin standart sapması W penceresinin dışında ölçülmüş, aşağıdaki eşitlikler de verilmiş olsun.
µ(mn) =
1 Nw
∑ ∑u (m − k , n −l )
1 σ8m, n) = N w
( k ,l )∈w
1
∑ ∑[u (m −k , n −l ) −µ(m, n)] ( k ,l )∈w
2
2
Bu durumda; bu dönüşümler, imge üzerinde zayıf olan (karşıtlığı az) bölgelerde iyileştirme sağlar.
v( m, n) =
µ(m, n) dönüşümü de her pikseli, tüm pikseller arasında bütünlük σ(m, n)
sağlayacak şekilde, kendi standart sapmasına göre yeniden boyutlandırır. Buna da istatistiksel boyutlandırma denir. 7.4.7. Magnification and Interpolation [Zooming] (İmge Büyütme) Görüntü işlemede sıklıkla bir imgenin bir bölümünün daha yakından görülmesi gerekmektedir. Bu işleme imge büyütme adı verilir. Aşağıda farklı imge büyütme teknikleri görülmektedir. 7.4.8. Replication (Replikasyon) Replikasyon, bir imgede satırlarda her pikselin tekrarlanması ve sonra satırın da tekrarlanması şeklinde yapılır. Başka bir deyişle bu; MxN boyutunda bir imgede önce satır ve sütunların arasını açarak 2Mx2N boyutunda bir matris elde etmek ve sonra bu sonucu aşağıda verilen H dizisi ile konvolve etmek anlamına gelmektedir.
1 1 H = 1 1 Buradan hareketle şu yazılabilir: ∆ m n v(m,n)=u(k,l), k = Int , l = Int , 2 2
m,n=0,1,2,...
Replikasyon yapıldığında pikseller birebir tekrarlanır. Bu şekilde sanki pikseller büyümüş gibi görünür. Aşağıdaki şekilde bu durum görülmektedir.13
25
Şekil 32. İmge büyütme Üst imge 70x70 piksel. Solda, 210x210 piksel replikasyon yapılmış. Sağda, 210x210 piksel bilineer büyütme kullanılmış.
Şekil 33. 2x3 piksellik bir imgenin replikasyon ile 4x6 piksel yapılması 7.4.9. Linear Interpolation (Doğrusal Çoğullama) Doğrusal çoğullamada, ilave pikseller bir satır boyunca piksellerin arasına yerleştirilir. Sonra her sütun boyunca pikseller çoğullanır. Örneğin bir 2x2 büyütme işleminde satır boyunca doğrusal çoğullama aşağıda gösterilmiştir:
v1(m,2n)=u(m,n), v1(m,2n+1)=½[u(m,n)+u(m,n+1)],
0≤m≤M-1, 0≤n≤N-1 0≤m≤M-1, 0≤n≤N-1
Bir başka deyişle, doğrusal çoğullama yönteminde önce her satır ve sütun için iki piksel arasına bir 0 eklenerek önce imgenin piksel sayısı artırılır. Sonra her 0 olan piksel için önce satırda, sonra da sütunlarda iki yan komşusunun ortalaması alınarak bu 0 yerine yazılır. Aşağıda örnek bir doğrusal çoğullama işlemi görülmektedir:
26
Şekil 34. 2x2 piksellik bir imgenin doğrusal çoğullama ile 4x4 piksel yapılması Araya 0 ekleme suretiyle piksel sayısı artırılmış olan imgede aşağıda verilen H dizisi ile konvolve edilerek sonuca ulaşılır: 1 / 4 1 / 2 1 / 4 H = 1 1 / 2 1 / 2 1 / 4 1 / 2 1 / 4 Farklı uygulamalarda farklı çoğullama teknikleri kullanılabilir. Örneğin ihtiyaç halinde, 3 kere arka arkaya konvolve edilerek kübik kama (cubic spline) adı verilen çoğullama metodu gerçekleştirilebilir. Aşağıda şematik gösterimi verilmiştir: p satır ve sıfırlar sütunu ile çoğullama
Şekil 35. p.ninci çoğullama
7.5. Transform Operations (Dönüşüm İşlemleri)
Dönüşüm işlemleri iyileştirme tekniklerinde, dönüştürülmüş imge üzerinde hafızasız işlemler uygulanır sonra ters dönüşüm yapılır. Bu işlemler aşağıda belirtilmiştir. V={v(k,l)} dönüştürülmüş imgesi ile başlayabiliriz:
V = A ∪ AT Burada, U={u(m,n)} giriş imgesidir. Ters dönüşüm de şu şekildedir: v • ( k , l ) = f (v ( k , l )) Bu bize iyileştirilmiş imajı şu şekilde verecektir: U • = A −1V •[ AT ] −1
Şekil 36. Dönüşüm İşlemleri Filtrelemesi 7.5.1. Generalized Linear Filtering (Genelleştirilmiş Doğrusal Filtreleme) Genelleştirilmiş doğrusal filtrelemede, hafızasız dönüşüm alan işlemi piksel piksel çarpılır: v • ( k , l ) = g ( k , l )v ( k , l ) Burada, g(k,l) bir “bölgesel maske” olarak adlandırılır. Aşağıdaki şekilde DFT ve diğer ortogonal dönüşümler için; alçak geçiren, yüksek geçiren ve bant geçiren filtre için bölgesel maskeler gösterilmiştir.
27
Şekil 37. İmge büyütme Solda, DFT bölgesel maskesi. Sağda, (gerçek) ortogonal dönüşümün bölgesel maskesi Şekilde alçak geçiren (LPF), yüksek geçiren (HPF) ve bant geçiren (BPF) için, DFT (sanal) ve ortogonal dönüşüm (gerçel) domenlerinde g(k,l) bölgesel maskeleri için örnekler görülmektedir. g(k,l) fonksiyonu, kısmi filtreler için belirtilen bölgelerin dışında sıfırdır. Önemli bir filtre de NxN imge için bölgesel maskesi aşağıda belirtilmiş olan ters Gaussian filtresidir.
(k 2 + l 2 ) N exp , 0 ≤ k, l ≤ 2 g (k , l ) = 2σ 2 g(N-k,N-l), aksi halde
Yine benzer şekilde önemli bir yüksek frekans filtresi de aşağıda verilmiştir. Bu filtre, atmosfer türbülansı veya benzeri nedenlerle bulanıklaşmış imgeleri netleştirmekte kullanılır.
Şekil 38. Frekans filtreleri (a) Orijinal fotoğraf. (b) Yüksek geçiren (HPF) çıkışı (c) Alçak geçiren (LPF) çıkışı 7.5.2. Root Filtering (Kök Filtreleme) Dönüşüm katsayısı v(k,l) şu şekilde yazılabilir: v ( k , l ) = v( k , l ) e jθ( k ,l ) Kök filtrelemede, v(k,l) nin genlik bileşeni olan α-kök alınır, faz bileşeni tutularak şu sağlanır: • v •( k , l ) = v ( k , l ) e jθ( k ,l ) , 0≤α≤1
28
Çoğu imgede, yüksek uzaysal frekanslara kıyasla v(k,l)nin genliği daha ufaktır. α-kök etkisi düşük uzaysal frekanslara (yüksek genlik) kıyasla yüksek uzaysal frekansları (düşük genlik) iyileştirmeyi sağlar. 7.5.3. Generalized Cepstrum and Homomorphic Filtering (Genelleştirilmiş Cepstrum ve Homomorfik Filtreleme) Cepstrum sözcüğü Spectrum (tayf) sözcüğünün ilk hecesinin ters çevrilmesi ile elde edilmiştir. Bir spektrumun ters Fourier dönüşümüne karmaşık cepstrum denir.14 Yüksek dinamik aralık bulunan bir imgede, mesela güneşte çekilen ve sert ışık ve sert gölge bulunan fotoğraflarda, homomorfik filtreler kullanışlıdır.15 Başka bir deyişle ışık dağılımın dengeli olmadığı imgelerde kullanışlıdır. Aşağıdaki şekilde bunun örneği gösterilmiştir.16
Şekil 39. Homomorfik filtreleme (a) Homomorfik filtre cevabı. (b) Kaynak imge (c) Filtre sonucu Aşağıda Homomorfik dönüşüm için blok diyagramlar gösterilmiştir:
(a) Genelleştirilmiş Cepstrum ve genelleştirilmiş
(b)
Homomorfik dönüşümü.
için ters Homomorfik dönüşüm
(c) genelleştirilmiş Homomorfik doğrusal filtreleme Şekil 40. Genelleştirilmiş cepstrum ve homomorfik filtreleme
7.6. Multispectral Image Enhancement (Çoğul Tayflı İmge İyileştirme)
Çoğul tayflı imge (multispectral), birden fazla farklı renk tayfına sahip imgenin bir araya gelmiş halidir. Ana imgeyi oluşturan her alt imgenin frekans aralığı (bant) farklıdır. Tüm bu alt imgeler bir araya geldiğinde tek bir imge oluşturur. Genellikle 2–12 arasında alt
29
imge kullanılır. Aşağıdaki şekilde bir imgenin farklı bantlardaki (frekanslar) elemanları görülmektedir.17
Şekil 41. Bir imgenin farklı bantları Çoğul tayflı imge üzerinde iyileştirme yapmanın farklı avantajları vardır. Örneğin bir imgenin sadece belirli bir tayfı üzerinde çalışma yapma imkânı bu şekilde olabilir. İmgenin farklı tayflarının birbirine oranlanması da sıkça kullanılan bir uygulamadır. Aşağıda tayf oranlama konusunda bir örnek uygulama görülmektedir. Bu tarz imgelerde iyileştirme yapmak için çokça kullanılan üç yöntem vardır. Bu yöntemler aşağıda açıklanmıştır. 7.6.1. Intensity Ratios (Yoğunluk Oranları) Farklı bantlar arasında yoğunlukların oranlanması şeklinde uygulanır. Aşağıda örnek yoğunluk oranı uygulaması gösterilmiştir.
30
Şekil 42. Bir imgenin farklı bantlarının oranları Yoğunluk oranlamasını ifade edebilmek için i ve j indisli bantların oranlanacağını varsayalım. Aşağıda bu oranın matematiksel ifadesi verilmiştir: ∆
Ri , j ( m, n) =
u i ( m, n) , u j ( m, n)
i≠ j
7.6.2. Log-Ratios (Logaritmik Oranlama) Farklı bantlardaki imgelerin logaritmik oranlanması şeklinde kullanılır. Yoğunluk oranı için verilmiş olan eşitliğin iki tarafının logaritması alınarak elde edilir. Aşağıda görülmektedir: ∆
Li , j = log Ri , j = log u i (m, n) − log u j (m, n) Bu işlemin sonucunda Ri,j nin dinamik aralığı yüksekse Li,j en iyi sonucu verir. 7.6.3. Principal Components (Asıl Bileşenler) Ana imgeyi oluşturan farklı bantlarda I adet alt imgede bulunan her (m,n) noktasının Ix1 şeklinde vektör olduğunu varsayalım:
u1 ( m, n) u ( m, n) u ( m, n) = 2 u I ( m, n) Bu noktaların genlik değerlerine göre sıralanması şeklinde dizi oluşturularak farklı bantlarda imgelere ayrıştırılabilir. Bu bantlardan ilk sırada gelenler ana imgeyi
31
oluşturmada daha etkili iken sonrakilere doğru etki gittikçe azalır. Aşağıda örnek ayrıştırma sonucu görülmektedir.
Şekil 43. Bir imgenin farklı bantlarda ayrıştırılması
7.7. Falsecolor and Pseudocolor (Sahte Renklendirme) Falsecolor, bir imgeyi oluşturan renk paletindeki her bir renk değerin farklı bir değere eşlenmesidir. Uygulamada insanlara daha ilgi çekici (hatta çoğunlukla doğal görünmeyen) görünüm sunmak için kullanılır. Örneğin bu yöntemle mavi gökyüzü kırmızı yapılabilir veya çimenler mavi yapılabilir. Benzeri bir uygulama alanı da bir fotoğraf içerisindeki özel bir nesnenin daha dikkat çekici hale getirilmesi için kullanılmasıdır.18 Pseudocolor, genellikle siyah-beyaz bir imgede dikkat çekilmek istenen kısmın görünürlüğünü artırmak amacıyla kullanılır. Veya siyah beyaz bir imgeyi genel olarak renklendirmek için de kullanılır. Bunu sağlamak için imge öncelikle farklı bantlarda bileşenlere ayrılır. Daha sonra her bir bileşen bir renk uzayından bir renge eşleştirilir. Örneğin imgeden elde edilen üç farklı bantta bileşen, RGB renk uzayından kırmızı, yeşil ve mavi renge eşleştirilebilir. Aşağıda bu pseudocolor işleminin blok diyagramı gösterilmiştir. v1(m,n) Giriş İmgeleri Bileşenlere ayırma ui(m,n)
v2(m,n) v3(m,n)
R Renk koordinat dönüşümü
G Görüntü
B Şekil 44. Pseudocolor sahte renklendirmesi
32
Şekil 45. Pseudocolor sahte renklendirme örneği Yukarıdaki şekilde Seismic isimli bir grafiğe pseudocolor yöntemi ile sahte renklendirme uygulanmıştır. Grafiğin orijinal renk paleti (a) şıkkında verilmiştir. Renklendirme yapmak için bu renk paleti (b) şıkkındaki palet ile değiştirilmiştir. (a) şıkkında verilen paletteki her bir rengin karşılığı (b) şıkkındaki paletteki bir renge sabit olarak eşleştirilmiştir. Örnekte detay yakalamak için, tam beyaz olan renkler griye çekilmiştir.
7.8. Color Image Enhancement (Renkli İmge İyileştirme)
Renkli imge iyileştirmede siyah beyaz olanlara ek olarak renk dengesi (color balance) iyileştirmesi ve renk karşıtlığı (color contrast) gibi uygulamalar da yapılmaktadır. Renkli imge iyileştirmenin zor olmasının tek nedeni eklenen verilerin boyutu değil, aynı zamanda renk algısındaki karmaşıklıktır. Uygulamada tipik bir renkli imge iyileştirmesi için blok diyagram aşağıda gösterilmiştir: Siyah beyaz imge iyileştirme
R
R Giriş G imgesi B
Koordinat dönüşümü
Siyah beyaz imge iyileştirme
Siyah beyaz imge iyileştirme
Ters koordinat dönüşümü
G Görüntü B
Şekil 46. Renkli imge iyileştirmesi
33
Şekilde görüldü gibi; RGB paletindeki giriş imgesi önce koordinat dönüşümüne tabi tutuluyor. Daha sonra imge 3 bileşenine ayrılıyor. Her bileşen kendi içerisinde siyahbeyaz imge gibi işleme tabi tutuluyor ve iyileştirme yapılıyor. Daha sonra, yeniden koordinat dönüşümü yapılarak ayrıştırılmış imge yeniden RGP paletinde bir araya getiriliyor.
7.9. Summary (Özet) İmge iyileştirmede en önemli nokta, kullanılacak tekniklerin objektif olmamasıdır. İmge iyileştirme kullanılacak olan her uygulamada, o uygulamaya özel teknikler planlanmalıdır. Bu nedenle, modern imge iyileştirme sistemlerinde işlem sırasında parametrelerin değiştirilmesine olanak sağlayan etkileşimli uygulamalar geliştirilmektedir. İmge iyileştirmede her zaman için değişmeyen kural şudur: “en iyi sonuç deneme yanılma yöntemiyle bulunur”. KAYNAKLAR 1. Anil K. Jain, “Fundamentals of Digital Image Processing” 2. Li Tao, Ming-Jung Seow and Vijayan K. Asari. “Nonlinear Image Enhancement to Improve Face Detection in Complex Lighting Environment” 3. Sarp Ertürk, “Digital Image Processing” 4. Rafael C. Gonzalez, “Digital Image Processing” 5. T. Acharya, A.Ray – “Image Processing - Principles and Applications” 6. John C. Russ – “The Image Processing Handbook” 7. Jae S. Lim, “Two Dimensional Signal And Image Processing” 8. William K. Pratt – “Digital Image Processing” 9. Bernd Jähne – “Digital Image Processing” 10. Mathworks – “Image Processing Toolbox User's Guide” 11. Gérard Blanchet, Maurice Charbit – “Digital Signal and Image Processing Using MATLAB” 12. Gonzalez & Woods & Eddins – “Digital Image Processing Using MATLAB” 13. Hany Farid – “Fundamentals of Image Processing” 14. Thomas Klinger - “Image Processing with LabVIEW and IMAQ Vision” 15. S.G.Hoggar – “Mathematics Of Digital Images” 16. http://yzgrafik.ege.edu.tr/~aybars/ip/ 17. http://www.ehm.yildiz.edu.tr/dersweb/vedat/vedatnot.htm 18. http://www.yildiz.edu.tr/~bayram/sgi/saygi.htm 19. http://www.emrahustun.com 20. http://www.bilgisayarkavramlari.com 21. http://www.icaen.uiowa.edu/~dip/LECTURE/ 22. http://eeweb.poly.edu/~onur/lectures/lectures.html 23. Ergin Altıntaş - Örüntü Tanıma Dersleri 24. Oya Örnek (Selçuk Üniversitesi) - Ders Notları REFERANSLAR
34
Oya Örnek (Selçuk Üniversitesi) - Ders Notları Yrd. Doç. Dr. M. Kemal GÜLLÜ, Kocaeli Üniversitesi İmge İşleme Ders Notları 3 Yrd. Doç. Dr. M. Kemal GÜLLÜ, Kocaeli Üniversitesi İmge İşleme Ders Notları 4 Li Tao, Ming-Jung Seow and Vijayan K. Asari. “Nonlinear Image Enhancement to Improve Face Detection in Complex Lighting Environment” 5 John C. Russ - The Image Processing Handbook 6 Yrd. Doç. Dr. M. Kemal GÜLLÜ, Kocaeli Üniversitesi İmge İşleme Ders Notları, (http://mf.kou.edu.tr/elohab/kemalg/imge_web/odev.htm) 7 Rafael C. Gonzalez, “Digital Image Processing” 8 K.Sinan YILDIRIM, Cenk İNCE, Tahir Emre KALAYCI, “Görüntü İşleme” (Ege Üniversitesi Bilgisayar Mühendisliği). 9 Yrd. Doç. Dr. M. Kemal GÜLLÜ, Kocaeli Üniversitesi İmge İşleme Ders Notları (Eski Notları 4. saydam) 10 Aybars, Ege Üniversitesi (MATLAB ile Görüntü İşleme Part – IV ve Part – V) 11 T. Acharya, A.Ray - Image Processing - Principles and Applications (S:109) 12 T. Acharya, A.Ray - Image Processing - Principles and Applications (S:115) 13 Sarp Erturk - Digital Image Processing (S:1-5) 14 Jae S. Lim, Two Dimensional Signal And Image Processing (S:292) 15 Jae S. Lim, Two Dimensional Signal And Image Processing (S:463) 16 T. Acharya, A.Ray - Image Processing - Principles and Applications (S:118) 17 William K. Pratt - Digital Image Processing 3rd.Ed 18 William K. Pratt - Digital Image Processing (S:288) 1 2