Nokta işlemleri ve histogram işleme
Her pikselin yeni değeri yalnızca kendi eski değerine bağlıysa, iyileştirme tek bir eğriyle ifade edilebilir: $s = T(r)$. Bu hafta bu eğrilerin en önemlilerini ve histogramdan otomatik olarak eğri tasarlamayı (eşitleme ve eşleme) öğreniyoruz.
3.1Görüntü iyileştirme nedir?
Görüntü iyileştirme (image enhancement), görüntüleri daha kullanışlı hale getirme sürecidir. Nedenleri:
- görüntüdeki ilginç ayrıntıları vurgulamak,
- görüntüden gürültüyü kaldırmak,
- görüntüleri görsel olarak daha çekici yapmak.
İyileştirme özneldir: belirli bir uygulama için “daha iyi” olanı izleyici belirler. Bu yüzden genel bir iyileştirme kuramı yoktur.
Uzamsal alan yöntemleri
Görüntü piksellerinin doğrudan işlenmesi. Uzamsal alan, görüntü düzleminin kendisidir: ayrık satır ve sütunlardan oluşan bir kartezyen koordinat sistemi; her kesişimde değeri yoğunluk olan bir piksel bulunur. Bu hafta ve gelecek hafta.
Frekans alanı yöntemleri
Görüntünün Fourier (veya wavelet gibi başka bir) dönüşümünün işlenmesi. Hafta 5'te.
3.2Uzamsal alan ve nokta işlemleri
Uzamsal alandaki iyileştirme işlemlerinin çoğu şu biçime indirgenebilir:
$f$ giriş görüntüsü, $g$ işlenmiş görüntü, $T$ ise $(x,y)$ noktasının bir komşuluğu üzerinde tanımlı bir operatördür. Komşuluk, merkezi $(x,y)$ olan küçük bir dikdörtgendir (ör. 3×3) ve merkez görüntü üzerinde pikselden piksele gezdirilir.
En basit uzamsal alan işlemi, komşuluğun yalnızca pikselin kendisi olduğu durumdur. Bu durumda $T$'ye gri seviye (yoğunluk) dönüşüm fonksiyonu veya nokta işleme operatörü denir:
$$s = T(r)$$$r$ orijinal pikselin, $s$ işlenmiş pikselin değeridir. Çıkış yalnızca o pikselin değerine bağlıdır, konumuna ve komşularına bağlı değildir.
8 bitlik bir görüntüde $r$ yalnızca 256 değer alabilir. $T(r)$ bir kez hesaplanıp 256 elemanlı bir tabloya yazılır, her piksel için tablodan okunur: g = lut(f + 1). Bu yüzden nokta işlemleri çok hızlıdır. Aşağıdaki laboratuvar da böyle çalışıyor.
3.3Temel gri seviye dönüşümleri
En yaygın üç dönüşüm ailesi şunlardır: doğrusal (özdeşlik, negatif), logaritmik (log, ters log) ve üs (power-law) (n. kuvvet, n. kök).
Negatif
Yoğunluk seviyelerini tersine çevirir. Özellikle karanlık bölgelere gömülü beyaz veya gri ayrıntıları iyileştirmek için kullanışlıdır; koyu alanlar baskın olduğunda daha da işe yarar. Slayttaki mamogram örneğinde doku negatif görüntüde çok daha net görünür.
Eşikleme
İlgilenilen nesneyi arka plandan ayırmak istediğimiz bölütleme için kullanışlıdır. Çıkış ikili bir görüntüdür. Eşikleme, kontrast germenin uç (limit) durumudur (Şekil 3.2'deki sağdaki basamak fonksiyonu).
Logaritmik dönüşüm
- Dar bir düşük gri seviye aralığını geniş bir çıkış aralığına yayar, yüksek değerleri ise sıkıştırır. Ters log dönüşümü bunun tersini yapar.
- Giriş gri seviyeleri çok geniş bir aralıkta değer aldığında özellikle kullanışlıdır. Klasik örnek, bir görüntünün Fourier spektrumunun gösterilmesidir: log uygulanmadan yalnızca merkezdeki parlak nokta görülür, log sonrası pek çok ayrıntı ortaya çıkar.
- Logaritmadaki “1 +”, $r = 0$ için $\log 0$ tanımsız olduğundan eklenir.
- Slayt: “genellikle $c = 1$ alınır, gri seviyeler $[0.0, 1.0]$ aralığında olmalıdır”.
Çıkışın tam aralığı kullanması için $c = \dfrac{L-1}{\log(1 + r_{\max})}$ seçilir.
- 8 bitlik görüntü ($r_{\max} = 255$), doğal log: $c = 255 / \ln 256 \approx 45.99$. Örneğin $r = 10$ için $s = 45.99 \cdot \ln 11 \approx 110$. Koyu bir piksel orta griye taşınır.
- Fourier spektrumu, değerler $0 \ldots 1.5\times10^6$: $\log_{10}(1 + 1.5\times10^6) \approx 6.18$. Yani log, bu dev aralığı 0–6.2 aralığına sıkıştırır. 8 bitte göstermek için $c = 255 / 6.18 \approx 41.3$.
Üs (gamma) dönüşümü
- $\gamma \lt 1$: dar bir koyu giriş aralığını geniş bir çıkış aralığına yayar, görüntüyü açar. Log'a benzer ama $\gamma$ ile ayarlanabilir.
- $\gamma \gt 1$: tersini yapar, açık tonları yayar ve görüntüyü koyulaştırır.
- $\gamma = 1$ ($c = 1$): özdeşlik. $\gamma$ değiştirildikçe bütün bir eğri ailesi elde edilir.
- Genellikle $c = 1$ alınır, gri seviyeler $[0.0, 1.0]$ aralığındadır. Bu yüzden $r=0$ ve $r=1$ uç noktaları her $\gamma$ için sabit kalır.
Kırık omurga MR görüntüsü
Görüntü çok karanlık. $\gamma = 0.6,\ 0.4,\ 0.3$ denenir; farklı eğriler farklı ayrıntıları ortaya çıkarır. G&W'ye göre en iyisi $0.4$; $0.3$'te kontrast azalır ve görüntü “yıkanmış” görünmeye başlar.
Pist hava fotoğrafı
Görüntü soluk ve aşırı açık. $\gamma = 3,\ 4,\ 5$ ile koyulaştırılır. $4$ iyi bir sonuç verir; $5$'te bazı bölgeler fazla kararır ve ayrıntı kaybolur.
$r = 0.25$, $\gamma = 0.5$: $s = 0.25^{0.5} = 0.5$, piksel açıldı. Aynı piksel $\gamma = 2$ ile: $s = 0.0625$, koyulaştı. 8 bitte: $r = 64 \Rightarrow s = 255\,(64/255)^{0.5} \approx 128$.
Gamma düzeltmesi
Ekranlar ve diğer pek çok görüntüleme cihazı yoğunluklara doğrusal tepki vermez: ekrana gelen sinyal $r$ ise ekrandaki parlaklık yaklaşık $r^{\gamma}$ olur (CRT'lerde $\gamma \approx 1.8$–$2.5$). Bu yüzden görüntü olması gerekenden daha koyu görünür. Düzeltme için görüntü ekrana gönderilmeden önce ters üsle işlenir:
Slaytta (3-1, s.31) “can be corrected using a log transform” yazıyor. Gamma düzeltmesi aslında bir üs (power-law) dönüşümüdür: $s = r^{1/\gamma}$. Log eğrisi şekil olarak benzer (koyu tonları açar) ama gamma düzeltmesinin formülü üs dönüşümüdür (G&W Şekil 3.7).
3.4Parçalı doğrusal dönüşümler ve kontrast
İyi tanımlanmış bir matematiksel fonksiyon yerine kullanıcının tanımladığı keyfi dönüşümler de kullanılabilir. Avantajı: istenen kadar karmaşık olabilir. Dezavantajı: daha fazla kullanıcı girdisi gerektirir.
Kontrast germe
Düşük kontrastlı görüntüler kötü aydınlatma, sensörün dinamik aralığının yetersizliği veya yanlış diyafram ayarından kaynaklanabilir. Kontrast germe (contrast stretching), gri seviye aralığını cihazın tam aralığına yayar. $(r_1, s_1)$ ve $(r_2, s_2)$ noktalarından geçen üç parçalı dönüşüm:
- $r_1 \le r_2$ ve $s_1 \le s_2$ koşulu, fonksiyonun tek değerli ve monoton artan olmasını sağlar. Böylece gri seviyelerin sırası korunur, yapay artefaktlar oluşmaz.
- $r_1 = s_1$ ve $r_2 = s_2$ ise dönüşüm özdeşliktir, görüntü değişmez.
- $r_1 = r_2$, $s_1 = 0$, $s_2 = L-1$ ise dönüşüm eşiklemeye dönüşür.
- $(r_1, s_1) = (r_{\min}, 0)$ ve $(r_2, s_2) = (r_{\max}, L-1)$: tam aralığa germe (min–max normalizasyonu).
Bir görüntüde $r_{\min} = 50$, $r_{\max} = 150$. Tam aralığa germe: $s = 255\,(r - 50)/100$. $r = 100 \Rightarrow s = 127.5 \approx 128$; $r = 75 \Rightarrow s = 63.75 \approx 64$; $r = 150 \Rightarrow s = 255$. Görüntünün kontrastı (en yüksek − en düşük) 100'den 255'e çıkar.
Parlaklık ve kontrast ayarı
Genelleştirilmiş doğrusal nokta işlemi (slayt 2-7):
| Parametre | Etki |
|---|---|
| $a = 1,\ b = 0$ | Özdeşlik |
| $a \lt 0$ | Koyu → açık, açık → koyu (negatif; $a=-1,\ b = L-1$) |
| $|a| \gt 1$ | Kontrast artar |
| $|a| \lt 1$ | Kontrast azalır |
| $b \gt 0$ | Daha açık (parlaklık artar) |
| $b \lt 0$ | Daha koyu |
Sonuç $[0, L-1]$ dışına çıkarsa kırpılır (doyma). Kırpılan bölgelerdeki ayrıntı geri gelmez.
Genelleştirilmiş doğrusal olmayan nokta işlemi (slayt 2-7), $I_m$ en yüksek yoğunluk olmak üzere:
Uç noktalar sabittir ($f(0) = 0$, $f(I_m) = I_m$), yalnızca orta tonlar değişir. Etki $I = I_m/2$'de en büyüktür.
Slaytta “$C \lt 0$: orta tonlar açılır, $C \gt 0$: orta tonlar koyulaşır” yazıyor. Ancak $0 \le I \le I_m$ için $I(I_m - I) \ge 0$ olduğundan, formül olduğu gibi uygulanırsa $C \gt 0$ orta tonları artırır (açar), $C \lt 0$ azaltır. Laboratuvarda “doğrusal olmayan (C)” modunu seçerek kendiniz görebilirsiniz. Sınavda çıkarsa hocanın kullandığı kuralı teyit edin. Ayrıca dönüşümün monoton kalması için $|C| \cdot I_m \le 1$ olmalıdır.
3.5Gri seviye dilimleme
Görüntüde belirli bir gri seviye aralığını $[A, B]$ vurgular. Eşiklemeye benzer. Aralık dışındaki seviyeler bastırılabilir veya korunabilir. Uydu görüntüsünde su kütleleri, X-ışını görüntüsünde kusurlar gibi özellikleri öne çıkarmak için kullanılır.
(a) Diğerlerini bastır
$$s = \begin{cases} L-1 & A \le r \le B \\ s_{\text{düşük}} & \text{aksi halde} \end{cases}$$Sonuç ikili bir görüntüdür.
(b) Diğerlerini koru
$$s = \begin{cases} L-1 & A \le r \le B \\ r & \text{aksi halde} \end{cases}$$Aralık parlatılır, görüntünün geri kalanı aynı kalır.
Nokta işlemi laboratuvarı: tüm dönüşümler
3.6Bit düzlemi dilimleme
8 bitlik bir görüntüde her piksel 8 bitle temsil edilir. Görüntü, bit düzlemi 0'dan (en anlamsız bit, LSB) bit düzlemi 7'ye (en anlamlı bit, MSB) kadar sekiz adet 1 bitlik düzlemden oluşur. Bit düzlemi dilimleme, belirli bitlerin görüntünün toplam görünümüne katkısını ortaya çıkarır.
- Yüksek dereceli bitler görsel olarak önemli bilginin çoğunu taşır. Düşük dereceli bitler ince ayrıntıları taşır ve gürültüye benzer görünür.
- Düzlem 7, 128'de eşiklemeyle aynıdır: $r \ge 128$ ise 1, değilse 0.
- Bir düzlem, pikseli bir bit maskesiyle AND'leyerek çıkarılır. Slayttaki
[00100000]maskesi düzlem 5'i,[00000001]düzlem 0'ı seçer. - Yalnızca üst $n$ düzlemle yeniden kurma: $\hat f = \sum_{k=8-n}^{7} 2^k b_k$. Kaç bitin gerçekten gerekli olduğunu göstererek sıkıştırmaya fikir verir.
$r = 194 = 11000010_2$: düzlem 7, 6 ve 1'deki bitler 1'dir. Yalnızca düzlem 7 ve 6 ile yeniden kurulursa $128 + 64 = 192$ elde edilir, hata yalnızca 2'dir. Yalnızca düzlem 7 ile 128 elde edilir.
Tanım slaytında düzlemler 0–7 diye numaralanıyor. Slayt 48'deki “bit planes 8 and 7” ise 1–8 numaralandırmasını kullanıyor; yani 0 tabanlı düzlem 7 ve 6'dır. MATLAB'deki bitget(I, k) de 1 tabanlıdır: bitget(I, 8) MSB'dir.
Bit düzlemleri ve yeniden kurma
Düzlem 7, 6, 5 neredeyse tüm görüntüyü taşır. Düzlem 0–2 gürültü gibi görünür. Yalnızca alt 4 düzlemle kurulan görüntü (değerler 0–15 arasında olduğundan görünür olsun diye ölçeklenir) ince dokuyu taşır ama genel yapıyı göstermez.
3.7Histogram
Bir histogram kutulardan (bins) oluşur. Her kutu belirli bir değer aralığını temsil eder; kutunun yüksekliği o kutuya düşen nesne sayısını veya olasılığını gösterir.
Gri seviyeleri $[0, L-1]$ aralığında olan $M\times N$'lik bir görüntünün histogramı, her yoğunluk değerindeki piksel sayısıdır:
$$h(r_k) = n_k, \qquad k = 0, 1, \ldots, L-1$$Normalize histogram, gri seviyelerin olasılık dağılımının bir kestirimidir:
$$p(r_k) = \frac{n_k}{MN}, \qquad \sum_{k=0}^{L-1} p(r_k) = 1$$Histogram, görüntüdeki tüm pikseller dolaşılıp her biri yoğunluğuna göre bir kutuya atılarak ve her kutudaki piksel sayılarak oluşturulur. Görüntüdeki gri seviye dağılımını gösterir ve görüntü işlemede, özellikle bölütlemede çok kullanışlıdır. Slayttaki fok görüntüsünde $T_1 = 80$ ve $T_2 = 142$ eşikleri histogramı üç bölgeye ayırır: 80'in altı, 142'nin üstü ve ikisinin arası. Bu üç aralık görüntüdeki üç farklı bölgeye karşılık gelir.
Dört temel histogram tipi
Aynı gül görüntüsünün dört farklı nokta dönüşümüyle elde edilmiş sürümleri. Karanlık görüntüde histogram sola, açıkta sağa yığılır; düşük kontrastlıda dar ve ortadadır; yüksek kontrastlıda tüm aralığa yayılmıştır.
- Yüksek kontrastlı görüntünün histogramı tüm aralığa en düzgün yayılmış olandır. Histogram eşitlemenin hedefi de budur.
- Histogram uzamsal bilgi taşımaz: piksellerin nerede olduğunu değil, kaç tane olduğunu söyler. Bu yüzden çok farklı görüntülerin histogramı aynı olabilir. Örneğin pikselleri karıştırılmış bir görüntünün histogramı orijinaliyle aynıdır.
Düşük kontrastlı bir görüntü basit bir kontrast germeyle düzeltilebilir. Asıl soru şudur: dönüşüm fonksiyonuna nasıl karar verilir? Histogram eşitleme bu fonksiyonu histogramdan otomatik olarak üretir.
3.8Histogram eşitleme
Amaç: görüntünün kontrastını iyileştirmek; görüntüyü, çıkıştaki piksel değerleri neredeyse düzgün (uniform) dağılacak şekilde dönüştürmek.
$r$ değerleri $[0,1]$ aralığına normalize edilmiş olsun ($r = 0$ siyah, $r = 1$ beyaz). $s = T(r)$ dönüşümünün koşulları:
- $T(r)$, $0 \le r \le 1$ aralığında tek değerli ve monoton artandır. Böylece siyahtan beyaza sıralama korunur ve ters dönüşüm vardır.
- $0 \le T(r) \le 1$, $0 \le r \le 1$ için. Böylece çıkış aralığı giriş aralığıyla aynı kalır.
Sürekli durumda türetme
Histogram eşitleme, bir rastgele değişkenin olasılık yoğunluk fonksiyonunun (PDF) dönüşümüne dayanır. $p_r(r)$ ve $p_s(s)$, $r$ ve $s$'nin PDF'leri olsun. $p_r(r)$ ve $T(r)$ biliniyorsa:
Dönüşüm olarak $r$'nin birikimli dağılım fonksiyonu (CDF) seçilir ($w$ integral için yapay değişken):
Leibniz kuralıyla $\dfrac{ds}{dr} = \dfrac{d}{dr}\displaystyle\int_0^r p_r(w)\,dw = p_r(r)$. Yerine konunca:
$p_s(s)$ düzgün bir yoğunluktur. $T(r)$ $p_r(r)$'ye bağlıdır, ama $p_r(r)$ ne olursa olsun sonuçtaki $p_s(s)$ her zaman düzgündür. CDF monoton artan olduğundan koşul (a), 0'dan 1'e çıktığından koşul (b) sağlanır.
Ayrık durum
$n$ toplam piksel sayısı, $n_k$ gri seviyesi $r_k$ olan piksel sayısı, $L$ olası gri seviye sayısı olmak üzere:
Bu $s_k$ değerleri $[0,1]$ aralığındadır. Tamsayı gri seviyeye dönmek için $(L-1)$ ile çarpılıp en yakın tamsayıya yuvarlanır:
Çıkış görüntüsü, giriş görüntüsündeki $r_k$ seviyeli her pikselin $s_k$ seviyesine eşlenmesiyle elde edilir.
3 bitlik görüntü ($L = 8$), 100 piksel:
| $r_k$ | $n_k$ | $\sum p_r$ | $7 \cdot \sum p_r$ | $s_k$ |
|---|---|---|---|---|
| 0 | 20 | 0.20 | 1.40 | 1 |
| 1 | 5 | 0.25 | 1.75 | 2 |
| 2 | 25 | 0.50 | 3.50 | 4 |
| 3 | 10 | 0.60 | 4.20 | 4 |
| 4 | 15 | 0.75 | 5.25 | 5 |
| 5 | 5 | 0.80 | 5.60 | 6 |
| 6 | 10 | 0.90 | 6.30 | 6 |
| 7 | 10 | 1.00 | 7.00 | 7 |
Çıkış histogramı: $s=1$: 20, $s=2$: 5, $s=4$: 25+10 = 35, $s=5$: 15, $s=6$: 5+10 = 15, $s=7$: 10; $s=0$ ve $s=3$ boş.
Dikkat: ayrık eşitleme histogramı tam düz yapmaz. Bazı seviyeler birleşir (2 ve 3 → 4), bazıları boş kalır. Yapılan şey histogramı aralığa yaymaktır. Bunun nedeni, aynı seviyedeki piksellerin farklı seviyelere bölünememesidir.
Eşitleme hesaplayıcı: kendi sorunuzu çözün
| rk | nk (düzenlenebilir) | pr(rk) | Σ pr | (L−1)·Σ | sk |
|---|
Görüntü üzerinde etkisi
Slayttaki karanlık Mars uydusu Phobos görüntüsünde histogram eşitleme uygulandığında net etki, çok dar bir koyu piksel aralığının gri ölçeğin üst ucuna taşınmasıdır. Görüntünün büyük kısmı neredeyse siyah olduğundan CDF çok hızlı yükselir. Sonuç “yıkanmış”, soluk görünür. Eşitleme tek bir sonuç verir ve bu sonuç her zaman istenen sonuç değildir. Bu, histogram eşleme için bir motivasyondur.
Eşitleme, eşleme ve yerel eşitleme laboratuvarı
3.9Histogram eşleme (belirtme)
Histogram eşleme (matching, specification) eşitlemeye benzer. Fark şudur: çıkış histogramının düz olması yerine, belirtilen bir şekle $p_z(z)$ sahip olması istenir.
Fikir: hem giriş hem hedef histogram aynı düzgün dağılıma eşitlenebilir. Girişi eşitleyen $T$ ile hedefi eşitleyen $G$'nin tersi art arda uygulanırsa giriş hedefe götürülür: $z = G^{-1}(T(r))$.
- Girişi eşitle: $s_k = T(r_k) = (L-1)\sum_{j=0}^{k} p_r(r_j)$, yuvarla.
- Hedefin eşitleme fonksiyonunu hesapla: $v_q = G(z_q) = (L-1)\sum_{i=0}^{q} p_z(z_i)$, yuvarla.
- Ters eşleme: her $s_k$ için $G(z_q)$ değeri $s_k$'ye en yakın olan $z_q$'yu bul: $z_q = G^{-1}(s_k)$. Birden fazla $z_q$ eşit yakınlıktaysa en küçüğü seçilir.
- Birleştir: her $r_k$ pikselini $z_q$'ya eşle: $r_k \to s_k \to z_q$.
Aynı 8 seviyeli, 100 piksellik giriş; hedef histogram tepesi ortada olan bir şekil.
| 1. Giriş eşitleme | |||
|---|---|---|---|
| $r$ | $n_j$ | $\sum P_r$ | $s$ |
| 0 | 20 | 0.20 | 1 |
| 1 | 5 | 0.25 | 2 |
| 2 | 25 | 0.50 | 4 |
| 3 | 10 | 0.60 | 4 |
| 4 | 15 | 0.75 | 5 |
| 5 | 5 | 0.80 | 6 |
| 6 | 10 | 0.90 | 6 |
| 7 | 10 | 1.00 | 7 |
| 2. Hedefin eşitlenmesi | |||
|---|---|---|---|
| $z$ | $n_j$ | $\sum P_z$ | $v$ |
| 0 | 5 | 0.05 | 0 |
| 1 | 10 | 0.15 | 1 |
| 2 | 15 | 0.30 | 2 |
| 3 | 20 | 0.50 | 4 |
| 4 | 20 | 0.70 | 5 |
| 5 | 15 | 0.85 | 6 |
| 6 | 10 | 0.95 | 7 |
| 7 | 5 | 1.00 | 7 |
| 3–4. Eşleme ve sonuç | ||||
|---|---|---|---|---|
| $r$ | $s$ | $z = G^{-1}(s)$ | $z$ | piksel |
| 0 | 1 | 1 | 0 | 0 |
| 1 | 2 | 2 | 1 | 20 |
| 2 | 4 | 3 | 2 | 5 |
| 3 | 4 | 3 | 3 | 35 |
| 4 | 5 | 4 | 4 | 15 |
| 5 | 6 | 5 | 5 | 15 |
| 6 | 6 | 5 | 6 | 10 |
| 7 | 7 | 6 | 7 | 0 |
Örneğin $r=2$ için $s = 4$; $G(z) = 4$ olan $z = 3$, yani $r = 2 \to z = 3$. $s = 7$ için $G(6) = G(7) = 7$, en küçüğü olan $z = 6$ seçilir. Sonuç histogramı (0, 20, 5, 35, 15, 15, 10, 0) hedefe (5, 10, 15, 20, 20, 15, 10, 5) yaklaşır ama ayrık durumda tam eşleşme mümkün değildir.
Eşleme hesaplayıcı
| k | giriş nk | sk = T(rk) | hedef nq | vq = G(zq) | rk → z | çıkış n |
|---|
Phobos örneğinde (G&W Şekil 3.25), koyu tonlara ağırlık veren bir hedef histogram seçildiğinde eşitlemenin “yıkanmış” görüntüsü yerine çok daha doğal bir sonuç elde edilir. Yukarıdaki laboratuvarda “Eşleme” yöntemini seçip hedef Gauss dağılımının ortalamasını ve genişliğini değiştirerek deneyebilirsiniz.
3.10Yerel iyileştirme
Buraya kadarki histogram yöntemleri küreseldir: pikseller, tüm görüntünün gri seviye içeriğine dayanan tek bir dönüşüm fonksiyonuyla değiştirilir. Ama bazen görüntünün küçük alanlarındaki ayrıntıları iyileştirmek gerekir. Bu küçük alanlardaki piksellerin küresel dönüşümün hesaplanmasına etkisi ihmal edilebilir düzeydedir.
- Bir komşuluk (ör. 7×7) tanımla ve merkezini pikselden piksele gezdir.
- Her konumda komşuluktaki piksellerin histogramını hesapla ve eşitleme (veya eşleme) fonksiyonunu bul.
- Bu fonksiyonu yalnızca merkez piksele uygula.
Verimlilik: merkez bir piksel kaydığında komşulukta yalnızca bir sütun değişir. Histogram sıfırdan hesaplanmaz; giden sütun çıkarılıp gelen sütun eklenir.
G&W Şekil 3.23 (slayt 39): küresel eşitleme gürültüyü artırır ama koyu karelerin içindeki küçük nesneleri göstermez. 7×7 yerel eşitleme ise karelerin içindeki gizli şekilleri ortaya çıkarır. Yukarıdaki laboratuvarda “Gizli kareler (sentetik)” görüntüsünü ve “Yerel eşitleme” yöntemini seçerek benzerini görebilirsiniz.
Pratikte yerel eşitleme gürültüyü de çok güçlendirir. MATLAB'deki adapthisteq bunu sınırlayan CLAHE (kontrastı sınırlı uyarlamalı histogram eşitleme) yöntemini kullanır. G&W ayrıca yerel ortalama ve varyansa dayanan istatistiksel yerel iyileştirmeyi de anlatır (Bölüm 3.3.4).
3.11MATLAB karşılıkları
I = imread('goruntu.png'); % uint8
N = imcomplement(I); % negatif: 255 - I
B = I > 128; % eşikleme (mantıksal görüntü); veya imbinarize(I)
D = im2double(I);
Lg = log(1 + D) / log(2); % log dönüşümü, [0,1]'e ölçeklenmiş
G = D .^ 0.4; % üs dönüşümü, gamma = 0.4
G = imadjust(I, [], [], 0.4); % aynısı
S = imadjust(I, [50 150]/255, [0 1]); % kontrast germe: 50→0, 150→255
S = imadjust(I, stretchlim(I), []); % otomatik germe (%1 kırpma)
b7 = bitget(I, 8); % MSB bit düzlemi (1 tabanlı!)
R = bitand(I, uint8(192)); % yalnızca düzlem 7 ve 6 ile yeniden kurma
imhist(I) % histogramı çiz; [n, x] = imhist(I);
E = histeq(I); % histogram eşitleme
M = histeq(I, hgram); % histogram eşleme (hgram: hedef histogram)
A = adapthisteq(I); % yerel (CLAHE)
% Nokta işlemini arama tablosuyla uygulamak
lut = uint8(255 * ((0:255)/255) .^ 0.5); % T(r), 256 eleman
J = lut(double(I) + 1); % her piksel için tablodan oku
J = intlut(I, lut); % aynısı, hazır fonksiyon
histeq varsayılan olarak 64 çıkış seviyesi hedefler ve el hesabındaki “yuvarla” kuralından biraz farklı bir algoritma kullanır. Sınav tipi hesapları elle veya yukarıdaki hesaplayıcıyla kontrol edin.
3.12Haftanın özeti ve kendini test et
Nokta işlemi
$s = T(r)$; 1×1 komşuluk; LUT ile uygulanır.
Negatif / eşik
$s = L-1-r$. $s = 1$ eğer $r \gt T$.
Log / gamma
$s = c\log(1+r)$; $s = cr^\gamma$. $\gamma \lt 1$ açar, $\gamma \gt 1$ koyulaştırır. Gamma düzeltmesi: $r^{1/\gamma}$.
Germe
$s = (L-1)\dfrac{r - r_{\min}}{r_{\max} - r_{\min}}$. $r_1 \le r_2$, $s_1 \le s_2$ olmalı.
Bit düzlemi
$b_k = \lfloor r/2^k \rfloor \bmod 2$. Düzlem 7 = 128'de eşikleme.
Histogram
$h(r_k) = n_k$, $p(r_k) = n_k/MN$. Uzamsal bilgi taşımaz.
Eşitleme
$s_k = \operatorname{round}[(L-1)\sum_{j\le k} n_j/n]$ (CDF). Sürekli durumda $p_s = 1$.
Eşleme
$z = G^{-1}(T(r))$; $G(z)$'si $s$'ye en yakın $z$ seçilir.
8 bitlik bir görüntüde 200 değerli pikselin negatifi nedir?
$s = 255 - 200 = 55$.
Karanlık bir MR görüntüsünde ayrıntıyı ortaya çıkarmak için γ < 1 mi, γ > 1 mi seçilir? Neden?
$\gamma \lt 1$. Eğri köşegenin üstündedir ve dar koyu aralığı geniş bir çıkış aralığına yayar, böylece koyu tonlardaki farklar büyür.
Ekran γ = 2.2 ise gamma düzeltmesi hangi dönüşümle yapılır? r = 0.5 için çıkış?
$s = r^{1/2.2} = r^{0.4545}$. $0.5^{0.4545} \approx 0.73$. Ekran bunu $0.73^{2.2} \approx 0.5$ olarak gösterir.
Log dönüşümünü 8 bitlik görüntünün tam aralığını kullanacak şekilde yazın.
$s = \dfrac{255}{\log(256)}\log(1 + r)$. Doğal log ile $c \approx 45.99$.
Hangi bit düzlemi 128'de eşiklemeyle aynı sonucu verir? 173 değerli pikselin düzlem 7, 6, 5 değerleri nedir?
Düzlem 7 (MSB). $173 = 10101101_2$, yani düzlem 7 = 1, düzlem 6 = 0, düzlem 5 = 1.
G&W Tablo 3.1: 64×64, 3 bitlik görüntüde $n_k$ = 790, 1023, 850, 656, 329, 245, 122, 81. Eşitlenmiş seviyeleri ve histogramı bulun.
$7\cdot$CDF: 1.33, 3.08, 4.55, 5.67, 6.23, 6.65, 6.86, 7.00. Yuvarlanınca $s_k$ = 1, 3, 5, 6, 6, 7, 7, 7.
Çıkış histogramı: $s=1$: 790, $s=3$: 1023, $s=5$: 850, $s=6$: 656+329 = 985, $s=7$: 245+122+81 = 448. Hesaplayıcıda “G&W Tablo 3.1” düğmesiyle kontrol edin.
Histogram eşitlemede T(r) neden monoton artan olmalı?
Gri seviyelerin sırasını (siyahtan beyaza) korumak ve artefaktları önlemek için. Ayrıca ters dönüşümün var olması için; eşleme bu terse ihtiyaç duyar.
Phobos görüntüsünde eşitleme neden kötü sonuç verir? Çözüm ne?
Görüntünün büyük kısmı 0'a yakın. CDF bu dar aralıkta çok hızlı yükselir ve koyu pikseller gri ölçeğin üst ucuna taşınır, görüntü yıkanmış görünür. Çözüm, koyu tonları koruyan bir hedef histogramla histogram eşleme yapmaktır.
İki farklı görüntünün histogramı aynı olabilir mi?
Evet. Histogram yalnızca değerlerin sayısını tutar, konumlarını tutmaz. Örneğin bir görüntünün pikselleri karıştırılırsa histogram değişmez.
Kontrast germede $r_1 = r_2 = 100$, $s_1 = 0$, $s_2 = 255$ seçilirse ne olur?
Dönüşüm, 100 eşikli bir eşiklemeye dönüşür: 100'ün altı 0, üstü 255 olur.
Komşuluk işlemleri: uzamsal filtreleme ve evrişim, yumuşatma ve keskinleştirme filtreleri (G&W 3.4–3.7). Proje önerisi teslimi de Hafta 4'te.