TEL 519E · Görüntü İşleme
Hafta 3

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.

Kitap: G&W 3.1–3.3 Slaytlar: ender_3-1, ender_3-2 Demo: 6 etkileşimli

3.1Görüntü iyileştirme nedir?

Tanım

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:

$$g(x,y) = T\big[f(x,y)\big]$$

$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.

3×3 komşuluk (x,y) f(x,y)
Şekil 3.1 $T$ bir komşuluk üzerinde tanımlıdır. Komşuluk yalnızca pikselin kendisi (1×1) olduğunda $T$ nokta işlemi olur. Daha büyük komşuluklar uzamsal filtrelemeye götürür (Hafta 4).
Nokta işlemi

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.

Uygulamada: arama tablosu (LUT)

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).

Şekil 3.2 G&W Şekil 3.3'ün benzeri, $L = 256$. Kesikli çizgi: özdeşlik $s = r$. Köşegenin üstündeki eğriler görüntüyü açar, altındakiler koyulaştırır.

Negatif

$$s = L - 1 - r \qquad \big(\text{normalize: } s = 1.0 - r;\ \text{slaytta } s = \text{intensity}_{\max} - r\big)$$

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

$$s = \begin{cases} 1.0 & r \gt \text{eşik} \\ 0.0 & r \le \text{eşik} \end{cases}$$

İ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

$$s = c \cdot \log(1 + r)$$
Çözümlü örnek: c'nin seçimi

Çı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ü

$$s = c \cdot r^{\gamma}$$
Açma, γ < 1

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.

Koyulaştırma, γ > 1

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.

Çözümlü örnek

$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:

$$s = r^{1/\gamma} \qquad (\gamma = 2.5 \text{ ise } s = r^{0.4}) \qquad\Rightarrow\qquad \text{ekran: } \left(r^{1/\gamma}\right)^{\gamma} = r$$
Slayttaki ifade

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:

$$s = \begin{cases} \dfrac{s_1}{r_1}\, r & 0 \le r \lt r_1 \\[8pt] s_1 + \dfrac{s_2 - s_1}{r_2 - r_1}\,(r - r_1) & r_1 \le r \le r_2 \\[8pt] s_2 + \dfrac{(L-1) - s_2}{(L-1) - r_2}\,(r - r_2) & r_2 \lt r \le L-1 \end{cases}$$
$$s = (L-1)\,\frac{r - r_{\min}}{r_{\max} - r_{\min}}$$
Çözümlü örnek

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):

$$I_{out}(x,y) = a \cdot I_{in}(x,y) + b$$
ParametreEtki
$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:

$$f\big(I(x,y)\big) = I(x,y) + C \cdot I(x,y)\,\big(I_m - I(x,y)\big)$$

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.

İşaret kuralına dikkat

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.

Etkileşimli

Nokta işlemi laboratuvarı: tüm dönüşümler

Görüntü
Dönüşüm
Giriş $r$
Çıkış $s = T(r)$
Dönüşüm eğrisi
Histogram: gri = giriş, renkli = çıkış

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.

$$b_k(x,y) = \left\lfloor \frac{f(x,y)}{2^k} \right\rfloor \bmod 2, \qquad f(x,y) = \sum_{k=0}^{7} 2^k\, b_k(x,y)$$
Çözümlü örnek

$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.

Numaralandırma farkı

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.

Etkileşimli

Bit düzlemleri ve yeniden kurma

Yeniden kurmada kullanılan düzlemler
Hazır

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.

Tanım

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.

Görsel

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.

Önemli
  • 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ı:

Koşullar
  1. $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.
  2. $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:

$$p_s(s) = p_r(r) \left| \frac{dr}{ds} \right|$$

Dönüşüm olarak $r$'nin birikimli dağılım fonksiyonu (CDF) seçilir ($w$ integral için yapay değişken):

$$s = T(r) = \int_0^r p_r(w)\, dw$$

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) = p_r(r) \cdot \frac{1}{p_r(r)} = 1, \qquad 0 \le s \le 1$$
Sonuç

$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:

$$p_r(r_k) = \frac{n_k}{n}, \qquad s_k = T(r_k) = \sum_{j=0}^{k} p_r(r_j) = \sum_{j=0}^{k} \frac{n_j}{n}, \qquad k = 0, 1, \ldots, L-1$$

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:

$$s_k = \operatorname{round}\!\left[ (L-1) \sum_{j=0}^{k} \frac{n_j}{n} \right]$$

Çıkış görüntüsü, giriş görüntüsündeki $r_k$ seviyeli her pikselin $s_k$ seviyesine eşlenmesiyle elde edilir.

Çözümlü örnek (slayt)

3 bitlik görüntü ($L = 8$), 100 piksel:

$r_k$$n_k$$\sum p_r$$7 \cdot \sum p_r$$s_k$
0200.201.401
150.251.752
2250.503.504
3100.604.204
4150.755.255
550.805.606
6100.906.306
7101.007.007

Çı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.

Etkileşimli

Eşitleme hesaplayıcı: kendi sorunuzu çözün

Hazır veri
rknk (düzenlenebilir)pr(rk)Σ pr(L−1)·Σsk
Giriş histogramı $n_k$ (çizgi: CDF)
Eşitlenmiş histogram

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.

Etkileşimli

Eşitleme, eşleme ve yerel eşitleme laboratuvarı

Görüntü
Yöntem
Histogram
Dönüşüm fonksiyonu

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))$.

Adımlar (ayrık)
  1. Girişi eşitle: $s_k = T(r_k) = (L-1)\sum_{j=0}^{k} p_r(r_j)$, yuvarla.
  2. Hedefin eşitleme fonksiyonunu hesapla: $v_q = G(z_q) = (L-1)\sum_{i=0}^{q} p_z(z_i)$, yuvarla.
  3. 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.
  4. Birleştir: her $r_k$ pikselini $z_q$'ya eşle: $r_k \to s_k \to z_q$.
Çözümlü örnek (slayt)

Aynı 8 seviyeli, 100 piksellik giriş; hedef histogram tepesi ortada olan bir şekil.

1. Giriş eşitleme
$r$$n_j$$\sum P_r$$s$
0200.201
150.252
2250.504
3100.604
4150.755
550.806
6100.906
7101.007
2. Hedefin eşitlenmesi
$z$$n_j$$\sum P_z$$v$
050.050
1100.151
2150.302
3200.504
4200.705
5150.856
6100.957
751.007
3–4. Eşleme ve sonuç
$r$$s$$z = G^{-1}(s)$$z$piksel
01100
122120
24325
343335
454415
565515
665610
77670

Ö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.

Etkileşimli

Eşleme hesaplayıcı

Hazır
kgiriş nksk = T(rk)hedef nqvq = G(zq)rk → zçıkış n
Hedef histogram
Elde edilen histogram

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.

Yerel histogram işleme
  1. Bir komşuluk (ör. 7×7) tanımla ve merkezini pikselden piksele gezdir.
  2. Her konumda komşuluktaki piksellerin histogramını hesapla ve eşitleme (veya eşleme) fonksiyonunu bul.
  3. 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.

Kitaptan ek

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 ve el hesabı

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.

Sonraki hafta

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.