hqx - hqx


Olarak görüntü işleme , HQX ( "yüksek kalite ölçek") biri olan piksel sanat ölçekleme algoritmaları tarafından geliştirilen Maxim Stepin kullanılan taklitleri gibi Nestopia , FCEUX , higan , Snes9x , zsnes ve daha bir çok. Tanımlanmış üç hqx filtresi vardır: sırasıyla 2, 3 ve 4 faktörüyle büyüten hq2x , hq3x ve hq4x . Diğer büyütme faktörleri için bu filtre, en yakın komşu ölçekleme ile kullanılır .

algoritma

İlk olarak, kaynak pikselin etrafındaki 8 pikselin her birinin rengi, kaynak pikselin rengiyle karşılaştırılır. Şekiller, bir eşiğe göre benzer renkteki pikseller kontrol edilerek algılanır . Bu  , benzer veya farklı komşuların toplam 2 8 = 256 kombinasyonunu verir . Tek pikseli 2×2, 3×3 veya 4×4 piksel bloğuna genişletmek için, komşuların düzeni, gerekli enterpolasyon modellerini içeren önceden tanımlanmış bir tabloda aranır.

Hqx, renk farklılıklarını hesaplamak için YUV renk uzayını kullanır , böylece parlaklıktaki farklılıklar insan algısını taklit etmek için daha yüksek ağırlıklı olur. Kaynak görüntü piksel başına 16 bit ise, renk alanı dönüşümü için bir arama tablosu kullanmak mümkündür.

Arama tablolarındaki enterpolasyon verileri, düzgünlük için optimize edilirken hat bölümlerinin sürekliliğinin korunması gerekliliği ile sınırlandırılmıştır. Bu 256 filtreli arama tablolarını oluşturmak nispeten yavaştır ve algoritmadaki ana karmaşıklık kaynağıdır: oluşturma aşaması çok basit ve hızlıdır ve MMX özellikli bir CPU'da gerçek zamanlı olarak gerçekleştirilebilecek şekilde tasarlanmıştır .

Kaynak kodunda, enterpolasyon verileri, switch case ifadelerine eklenecek önişlemci makroları olarak temsil edilir ve bir arama tablosunun oluşturulmasına yol açan hiçbir kaynak kodu yoktur . Yazar, bir arama tablosu oluşturma sürecini şu şekilde açıklar:

... her kombinasyon için alanın en olası vektör temsili, korunacak görüntünün farklı renkli alanları arasındaki kenarlar fikriyle, kenar yönü mümkün olduğunca doğru olana yakın olacak şekilde belirlenmelidir. . Bu vektör gösterimi daha sonra kenar yumuşatma kullanılarak daha yüksek (3x) çözünürlükle rasterleştirilir ve sonuç, arama tablosunda saklanır.

Uygulamalar

  • Orijinal algoritma DevIL'e taşındı (ancak C dilinde tutuldu).
  • Java ve C# dillerine bağlantı noktaları mevcuttur. Bu uygulamalar makroları genişletir.
  • Bir C ++ byuu port, yazarı bsnes yer tasarruflu bir şekilde LUT kodlar. Byuu, böyle bir kodlama yapmak için kalıpların simetrisinden yararlandı ve orijinal arama tablolarının yorumlanması üzerine bazı notlar yazdı.
  • libretro uygular Argo / içinde shader iki aile HLSL , GLSL ve Cg :
    • HQX aile, gerçek HQX olduğunu. Modern GPU'larda çalıştığı için arama tablolarının yerini dokular alır. Dokular, anahtarı/durumu için değiştirilmiş bir hqx sürümü sorgulanarak üretildi.
    • Scalehq sıkça HQX ile karıştırılmaktadır ailesi. hqx ile ilgili değildir, daha ziyade genel bir yükseltme-düzeltme algoritmasıdır.
  • hqx, görüntüleri ve videoları 2x, 3x veya 4x yükseltmek için ffmpeg'de de uygulanmıştır. ffmpeg için çeviri üretiminin bir hesabı burada: http://blog.pkh.me/p/19-butchering-hqx-scaling-filters.html ve kullanım şöyle olabilir: ffmpeg -i %1 -filter_complex hqx=2 hqx2-%1 2x görüntü veya video üretmek için.

Ayrıca bakınız

Referanslar

Dış bağlantılar