Yönlü Kübik Evrişim Enterpolasyonu - Directional Cubic Convolution Interpolation - Wikipedia

Yönlü Kübik Evrişim Enterpolasyonu (DCCI), kenarlara yönelik bir görüntü ölçekleme Dengwen Zhou ve Xiaoliu Shen tarafından oluşturulan algoritma.[1]

Kenarları hesaba katarak görüntü, bu ölçeklendirme algoritma diğer görüntü ölçekleme algoritmalarında ortak olan yapaylıkları azaltır. Örneğin, çapraz çizgiler ve eğriler üzerindeki merdiven artefaktları ortadan kaldırılır.

Algoritma, bir görüntüyü orijinal boyutlarının 2 katı eksi 1 olacak şekilde yeniden boyutlandırır.[2]

Algoritma

Algoritma üç ana adımda çalışır:

  1. Orijinali kopyalayın piksel pikseller arasındaki boşluklarla çıktı görüntüsüne.
  2. Çapraz boşluklar için pikselleri hesaplayın.
  3. Kalan yatay ve dikey boşluklar için pikselleri hesaplayın.

DCCI enterpolasyon piksel ızgarası düzeni

Çapraz boşluklarda piksel hesaplama

Köşegen piksellerin değerlendirilmesi, orijinal görüntü verileri üzerinde 4 × 4 bir bölgede, yeni piksel merkezde, orijinal pikseller arasındaki boşlukta hesaplanarak yapılır. Bu, hesaplanacak yeni piksel üzerinde ortalanmış büyütülmüş görüntüdeki 7 × 7 bölgesi olarak da düşünülebilir ve orijinal pikseller zaten kopyalanmıştır.

Algoritma üç durumdan birine karar verir:

  • Sağ yukarı yönde kenar - interpolates aşağı-doğru yönde.
  • Sağ aşağı yönde kenar - yukarı-sağ yönde enterpolasyon yapar.
  • Düzgün alan - her iki yönde enterpolasyon yapar, ardından değerleri ağırlıklarla çarpar.

Çapraz kenar mukavemetinin hesaplanması

D1, yukarı-sağ yöndeki kenarların toplamı ve d2, aşağı-sağ yöndeki kenarların toplamı olsun.

D1'i hesaplamak için, X = 1 ila 3 ve Y = 0 ila 2 bölgesindeki abs (P (X, Y) - P (X - 1, Y + 1)) toplamını alın.

D2'yi hesaplamak için, X = 0 ila 2 ve Y = 0 ila 2 bölgesindeki abs (P (X, Y) - P (X + 1, Y + 1)) toplamını alın.

DCCI enterpolasyon diyagonal pikselleri

Enterpolasyon pikselleri

(1 + d1) / (1 + d2)> 1.15 ise, sağ yukarı yönde bir kenarınız olur. (1 + d2) / (1 + d1)> 1.15 ise, sağ aşağı yönde bir kenarınız olur.

Aksi takdirde, pürüzsüz alandasınız. Bölünmeyi önlemek ve kayan nokta işlemler, bu aynı zamanda 100 * (1 + d1)> 115 * (1 + d2) ve 100 * (1 + d2)> 115 * (1 + d1) olarak da ifade edilebilir.

Sağ üst kenar

Sağ yukarı yöndeki bir kenar için, aşağı-sağ yönde enterpolasyon yapmak istiyoruz.

Çıktı pikseli = (-1 * P (0, 0) + 9 * P (1, 1) + 9 * P (2, 2) - 1 * P (3, 3)) / 16

Piksel değerinin, geçerli piksel değerleri aralığına (genellikle 0 ila 255) zorlanması gerekecektir.

Sağ aşağı kenar

Sağ aşağı yöndeki bir kenar için, yukarı-doğru yönde enterpolasyon yapmak istiyoruz.

Çıktı pikseli = (-1 * P (3, 0) + 9 * P (2, 1) + 9 * P (1, 2) - 1 * P (0, 3)) / 16

Piksel değerinin, geçerli piksel değerleri aralığına (genellikle 0 ila 255) zorlanması gerekecektir.

Pürüzsüz alan

Düzgün alanda, yukarıdan sağdan gelen kenar kuvveti, sağ aşağıdan örneklenen piksele katkıda bulunacak ve sağdan aşağıdan kenar kuvveti, yukarıdan örneklenen piksele katkıda bulunacaktır.

w1 = 1 / (1 + d1 ^ 5)

w2 = 1 / (1 + d2 ^ 5)

ağırlık1 = w1 / (w1 + w2)

ağırlık2 = w2 / (w1 + w2)

Aşağı Sağ Piksel = (-1 * P (0, 0) + 9 * P (1, 1) + 9 * P (2, 2) - 1 * P (3, 3)) / 16

UpRightPixel = (-1 * P (3, 0) + 9 * P (2, 1) + 9 * P (1, 2) - 1 * P (0, 3)) / 16

Çıktı Piksel = DownRightPixel * weight1 + UpRightPixel * weight2

Piksel değerinin, geçerli piksel değerleri aralığına (genellikle 0 ila 255) zorlanması gerekecektir.

Kalan piksellerin hesaplanması

Kalan piksellerin değerlendirilmesi, merkezde hesaplanan yeni piksel ile 7 × 7'lik bir bölgede ölçeklenen görüntü verileri üzerinde yapılır. Bu hesaplama, görüntünün orijinal piksellerine veya önceki adımda hesaplanan çapraz piksele bağlıdır.

Algoritma üç durumdan birine karar verir:

  • Yatay yönde kenar - dikey yönde enterpolasyon yapar.
  • Dikey yönde kenar - yatay yönde enterpolasyon yapar.
  • Düzgün alan - her iki yönde enterpolasyon yapar, ardından değerleri ağırlıklarla çarpar.

Yatay / dikey kenar mukavemetinin hesaplanması

D1, yatay yöndeki kenarların toplamı ve d2, dikey yöndeki kenarların toplamı olsun.

Yalnızca orijinalden piksel değerlerini ve çapraz yönden eklenen piksel değerlerini kullanarak hesaplamak için piksel üzerinde ortalanmış 7 × 7 elmas şekilli bir bölge düşünün.

D1'i hesaplamak için, şu piksel değerlerini örnekleyerek yatay kenarların mutlak farklarının toplamını alın:

| P (X + 1, Y-2) - P (X-1, Y-2) | + | P (X + 2, Y-1) - P (X, Y-1) | + | P (X, Y-1) - P (X-2, Y-1) | + | P (X + 3, Y) - P (X + 1, Y) | + | P (X + 1, Y) - P (X-1, Y) | + | P (X-1, Y) - P (X-3, Y) | + | P (X + 2, Y + 1) - P (X, Y + 1) | + | P (X, Y + 1) - P (X-2, Y + 1) | + | P (X + 1, Y + 2) - P (X-1, Y + 2) |

D2'yi hesaplamak için, şu piksel değerlerini örnekleyerek dikey kenarların mutlak farklarının toplamını alın:

| P (X-2, Y + 1) - P (X-2, Y-1) | + | P (X-1, Y + 2) - P (X-1, Y) | + | P (X-1, Y) - P (X-1, Y-2) | + | P (X, Y + 3) - P (X, Y + 1) | + | P (X, Y + 1) - P (X, Y-1) | + | P (X, Y-1) - P (X, Y-3) | + | P (X + 1, Y + 2) - P (X + 1, Y) | + | P (X + 1, Y) - P (X + 1, Y-2) | + | P (X + 2, Y + 1) - P (X + 2, Y-1) |

DCCI enterpolasyonu yatay / dikey pikseller

Enterpolasyon pikselleri

(1 + d1) / (1 + d2)> 1.15 ise, yatay yönde bir kenarınız vardır.

(1 + d2) / (1 + d1)> 1.15 ise, dikey yönde bir kenarınız vardır.

Aksi takdirde, pürüzsüz alandasınız.

Bölme kayan nokta işlemlerinden kaçınmak için, bu aynı zamanda 100 * (1 + d1)> 115 * (1 + d2) ve 100 * (1 + d2)> 115 * (1 + d1) olarak da ifade edilebilir.

Yatay kenar

Yatay bir kenar için, yalnızca pikselde ortalanmış sütunu kullanarak dikey yönde enterpolasyon yapmak istiyoruz.

Çıktı pikseli = (-1 * P (X, Y - 3) + 9 * P (X, Y - 1) + 9 * P (X, Y + 1) - 1 * P (X, Y + 3)) / 16

Piksel değerinin, geçerli piksel değerleri aralığına (genellikle 0 ila 255) zorlanması gerekecektir.

Dikey kenar

Dikey bir kenar için, yalnızca pikselde ortalanmış satırı kullanarak yatay yönde enterpolasyon yapmak istiyoruz.

Çıktı pikseli = (-1 * P (X - 3, Y) + 9 * P (X - 1, Y) + 9 * P (X + 1, Y) - 1 * P (X + 3, Y)) / 16

Piksel değerinin, geçerli piksel değerleri aralığına (genellikle 0 ila 255) zorlanması gerekecektir.

Pürüzsüz alan

Düzgün alanda, yatay kenar kuvveti, dikey olarak örneklenen pikselin ağırlığına katkıda bulunacak ve dikey kenar kuvveti, yatay olarak örneklenen pikselin ağırlığına katkıda bulunacaktır.

w1 = 1 / (1 + d1 ^ 5)

w2 = 1 / (1 + d2 ^ 5)

ağırlık1 = w1 / (w1 + w2)

ağırlık2 = w2 / (w1 + w2)

Yatay Piksel = (-1 * P (X - 3, Y) + 9 * P (X - 1, Y) + 9 * P (X + 1, Y) - 1 * P (X + 3, Y)) / 16

Dikey Piksel = (-1 * P (X, Y - 3) + 9 * P (X, Y - 1) + 9 * P (X, Y + 1) - 1 * P (X, Y + 3)) / 16

Çıktı Piksel = Dikey Piksel * ağırlık1 + Yatay Piksel * ağırlık2

Piksel değerinin, geçerli piksel değerleri aralığına (genellikle 0 ila 255) zorlanması gerekecektir.

Belirtilmemiş

Sınır pikseller

Algoritma, görüntünün dışındaki sınır alanlarını örneklerken ne yapılacağını tanımlamaz. Yapılacak olası şeyler arasında sınır pikselini çoğaltma, görüntünün diğer tarafından pikselleri kaydırma, görüntünün aynı tarafını tersine sarma veya belirli bir kenarlık rengi değeri kullanma yer alır.

Renkli görüntüler

Renkli görüntüler algoritma tarafından belirtilmemiştir, ancak hepsini toplayabilirsiniz. RGB kenar gücünü hesaplarken bileşen farklılıkları ve pikselleri enterpolasyon yaparken tüm RGB bileşenlerini kullanın. Ya da ayrılabilirsin YCbCr, yalnızca luma bileşenini işleyin ve farklı bir algoritma kullanarak kromayı esnetin.

Ayrıca bakınız

Referanslar

  1. ^ Dengwen Zhou; Xiaoliu Shen. "Yönlü Kübik Evrişim Enterpolasyonu Kullanarak Görüntü Yakınlaştırma". Alındı 13 Eylül 2015.
  2. ^ Sabir, Essaïd; Medromi, Hicham; Sadık, Mohamed (2016/02/02). Ubiquitous Networking'deki Gelişmeler: UNet'15 Proceedings. Springer. ISBN  978-981-287-990-5.