Uzamsal kenar yumuşatma - Spatial anti-aliasing

Olarak dijital sinyal işleme , mekansal anti-aliasing olarak bilinen bozulma eserler en aza indirmek için bir tekniktir yumuşatma daha düşük bir çözünürlükte bir yüksek çözünürlüklü bir görüntü temsil ederken. Kenar yumuşatma , dijital fotoğrafçılık , bilgisayar grafikleri , dijital ses ve diğer birçok uygulamada kullanılır.

Örtüşme önleme , kayıt (veya örnekleme) cihazı tarafından düzgün bir şekilde çözülebilecek olandan daha yüksek bir frekansa sahip sinyal bileşenlerinin kaldırılması anlamına gelir . Bu kaldırma işlemi, daha düşük bir çözünürlükte (yeniden) örneklemeden önce yapılır. Sinyalin bu kısmı kaldırılmadan örnekleme yapıldığında, siyah-beyaz gürültü gibi istenmeyen yapaylıklara neden olur.

Sinyal ediniminde ve seste, bir analogdan dijitale dönüştürücü ile örneklemeden önce giriş sinyalinin bant dışı bileşenini çıkarmak için genellikle bir analog kenar yumuşatma filtresi kullanılarak örtüşme önleme yapılır . Dijital fotoğrafçılıkta, çift ​​kırılımlı malzemelerden yapılmış optik örtüşme önleme filtreleri , uzamsal optik alandaki sinyali yumuşatır . Örtüşme önleme filtresi, çözünürlüğü dijital sensör tarafından elde edilebilene veya altına düşürmek için esasen görüntüyü biraz bulanıklaştırır ( piksel aralığı ne kadar büyükse , sensör seviyesinde elde edilebilir çözünürlük o kadar düşük olur).

Örnekler

Kenar yumuşatma kullanılmadığında görsel bozulma
Kenarları yumuşatılmış
Sinc filtre algoritmasıyla kenarları yumuşatıldı
Görüntünün, kenar yumuşatmadan (solda) ve kenar yumuşatmadan (sağda) büyütülmüş kısmı

Bilgisayar grafiklerinde, kenar yumuşatma, "tırtıklı" çokgen kenarların veya " çentiklerin " görünümünü iyileştirir , böylece ekranda düzleştirilirler. Ancak, grafik kartı için bir performans maliyeti oluşturur ve daha fazla video belleği kullanır . Kenar yumuşatma düzeyi, poligon kenarlarının ne kadar düzgün olduğunu (ve ne kadar video belleği tükettiğini) belirler.

Çekilmiş dama tahtası desenine sahip bir görüntünün üst kısmına yakın bir yerde, görüntünün tanınması hem zordur hem de estetik açıdan çekici değildir. Buna karşılık, kenarları yumuşatıldığında üst tarafa yakın dama tahtası griye dönüşür, bu genellikle çözünürlük ayrıntıyı göstermek için yetersiz olduğunda istenen etkidir . Görüntünün altına yakın olsa bile, kenarları yumuşatılmış görüntüde çok daha düzgün görünür. Daha iyi bir kenar yumuşatma algoritması olarak kabul edilen sinc filtresi dahil olmak üzere birden fazla yöntem mevcuttur . Büyütüldüğünde, boşluk hem siyah hem de beyaz döşemeler tarafından işgal edildiğinden, kenar yumuşatmanın sınırlardaki piksellerin parlaklığını nasıl enterpolasyon yaparak gri pikseller oluşturduğu görülebilir . Bunlar, samimi filtre kenar yumuşatılmış görüntünün orijinalinden çok daha pürüzsüz görünmesine yardımcı olur.

Sol: basit bir şeklin takma adı verilen versiyonu. Sağda: aynı şeklin kenarları yumuşatılmış versiyonu.

Basit bir baklava görüntüsünde kenar yumuşatma, sınır piksellerini karıştırır; bu, aliased grafikte görünen keskin, basamak benzeri sınırların estetik açıdan sarsıcı etkisini azaltır.

Kenar yumuşatma, geleneksel mürekkep ve kağıt baskı ile üretilen metnin görünümünü daha iyi taklit eden yumuşak konturlar önermek için genellikle bir bilgisayar ekranında metin oluştururken uygulanır. Özellikle tipik LCD ekranlarda görüntülenen yazı tiplerinde , ClearType gibi alt piksel oluşturma tekniklerinin kullanılması yaygındır . Alt piksel oluşturma, ciddi renk bozulmalarını zorlukla fark edilebilen renk saçaklarına dönüştürmek için özel renk dengeli kenar yumuşatma filtreleri gerektirir. Eşdeğer sonuçlar, tek tek alt pikselleri tam pikselmiş gibi adreslenebilir hale getirerek ve OLPC XO-1 dizüstü bilgisayarın ekran denetleyicisinde yapıldığı gibi donanım tabanlı bir örtüşme önleme filtresi sağlayarak elde edilebilir. Piksel geometrisi , kenar yumuşatma ve alt piksel adresleme ister yazılımda ister donanımda yapılmış olsun, tüm bunları etkiler.

Kenar yumuşatmaya en basit yaklaşım

Bir pikselin kenar yumuşatmasına yönelik en temel yaklaşım, vektör grafiğindeki belirli bir bölgede pikselin yüzde kaçının işgal edildiğini belirlemektir - bu durumda piksel büyüklüğünde bir kare, muhtemelen birkaç piksel üzerinde transpoze edilmiştir - ve bu yüzdeyi renk olarak kullanmaktır. .

Tek bir siyah üzerine beyaz kenar yumuşatılmış noktanın bu yöntemi kullanarak çok basit bir çizimi şu şekilde yapılabilir:

def plot_antialiased_point(x: float, y: float):
    """Plot of a single, white-on-black anti-aliased point."""
    for rounded_x in floor(x) to ceil(x):
        for rounded_y in floor(y) to ceil(y):
            percent_x = 1 - abs(x - rounded_x)
            percent_y = 1 - abs(y - rounded_y)
            percent = percent_x * percent_y
            draw_pixel(coordinates=(rounded_x, rounded_y), color=percent (range 0-1))

Bu yöntem genellikle, temel çizgiler veya eğriler gibi basit grafikler ve aksi takdirde mutlak koordinatları, 3B grafikler gibi piksel sınırlı koordinatlara dönüştürmek zorunda kalacak uygulamalar için en uygun yöntemdir. Oldukça hızlı bir işlevdir, ancak nispeten düşük kalitededir ve şeklin karmaşıklığı arttıkça yavaşlar. Çok yüksek kaliteli grafikler veya çok karmaşık vektör şekilleri gerektiren amaçlar için, bu muhtemelen en iyi yaklaşım olmayacaktır.

Not: Yukarıdaki DrawPixel rutin, renk değerini körü körüne hesaplanan yüzdeye ayarlayamaz. Bu gerekir eklemek Aksi takdirde, her pikselin parlaklığı çok kötü sonuçlar ürettiği konum için zamanında hesaplanan en karanlık değerine eşit olacaktır 1. maksimum o yere kadar mevcut olan değere yeni bir değer. Örneğin, bir nokta belirli bir piksel için 0.90'lık bir parlaklık seviyesini ayarlıyorsa ve daha sonra hesaplanan başka bir nokta bu piksele neredeyse hiç dokunmuyorsa ve 0.05 parlaklığa sahipse, bu piksel için ayarlanan son değer 0.05 değil 0.95 olmalıdır.

Daha karmaşık şekiller için, algoritma, şekli hedef görüntü yüzeyinden daha yüksek çözünürlüğe sahip bir piksel ızgarasına (genellikle distorsiyonu azaltmak için 2'nin gücü olan bir kat) oluşturarak ve ardından ortalama yoğunluğu belirlemek için iki kübik enterpolasyon kullanarak genelleştirilebilir. ekran yüzeyindeki her gerçek piksel.

Kenar yumuşatmaya sinyal işleme yaklaşımı

Bu yaklaşımda ideal görüntü bir sinyal olarak kabul edilir . Ekranda görüntülenen görüntü , sinyalin filtrelenmiş bir versiyonunun her bir ( x, y ) piksel konumunda örnek olarak alınır . İdeal olarak, insan beyninin orijinal sinyali nasıl işleyeceği anlaşılır ve beyin tarafından en benzer tepkiyi verecek bir ekran görüntüsü sağlanır.

Bu tür problemler için en yaygın kabul gören analitik araç Fourier dönüşümüdür ; bu, bir sinyali , frekans bileşenleri olarak bilinen farklı frekansların temel işlevlerine ayrıştırır ve bize sinyaldeki her bir frekans bileşeninin genliğini verir . Dalgalar şu şekildedir:

nerede j ve k keyfi olmayan negatif tamsayı . Bir veya her iki boyutta sinüs fonksiyonlarını içeren frekans bileşenleri de vardır , ancak bu tartışmanın amacı için kosinüs yeterli olacaktır.

J ve k sayıları birlikte bileşenin frekansıdır : j , x yönündeki frekanstır ve k , y yönündeki frekanstır .

Örtüşme önleme filtresinin amacı, Nyquist frekansı olarak bilinen belirli bir sınırın üzerindeki frekansları büyük ölçüde azaltmaktır , böylece sinyal, örnekleme teoremine göre, numuneleri tarafından doğru bir şekilde veya neredeyse bu şekilde temsil edilecektir ; Farklı filtre aktarım işlevlerine sahip birçok farklı ayrıntılı algoritma seçeneği vardır . İnsan görsel algısına ilişkin mevcut bilgi, genel olarak, hangi yaklaşımın en iyi görüneceğini söylemek için yeterli değildir.

İki boyutlu düşünceler

Sinc işlevi, ayrı X ve Y ile

Önceki tartışma, dikdörtgen örgü örneklemesinin sorunun baskın kısmı olduğunu varsaymaktadır. Bu ilk şekilde gösterildiği gibi, genellikle optimal olduğu düşünülen filtre rotasyonel olarak simetrik değildir; bunun nedeni verilerin sürekli bir görüntü kullanılmadan kare bir kafes üzerinde örneklenmesidir . Bu örnekleme örüntüsü, geleneksel olarak tek boyutlu veriler üzerinde yapıldığı gibi, her eksen boyunca sinyal işleme yapmanın gerekçesidir. Lanczos yeniden örnekleme , sinc işlevinin ayrık bir temsiliyle verilerin evrişimine dayanır.

Çözünürlük, kaynak veya hedef görüntünün dikdörtgen örnekleme oranıyla sınırlı değilse, o zaman ideal olarak, veriler sürekli x ve y'nin iki boyutlu bir fonksiyonuymuş gibi, dönel olarak simetrik filtre veya enterpolasyon fonksiyonları kullanılmalıdır. Yarıçapın sam işlevi, iyi bir filtre yapamayacak kadar uzun bir kuyruğa sahiptir ( kare ile integrallenebilir bile değildir ). Tek boyutlu sinc için daha uygun bir analog, iki boyutlu Airy disk genliğidir, bir kare bölgenin aksine 2B frekans uzayındaki dairesel bir bölgenin 2B Fourier dönüşümüdür.

Gauss artı diferansiyel fonksiyon

Bir Gauss artı ikinci türevi, gösterildiği gibi tepeyi düzleştirmek (frekans alanında) veya keskinleştirmek (uzamsal alanda) düşünebilir. Gauss işlevine dayalı işlevler doğal seçimlerdir, çünkü bir Gauss ile evrişim x ve y'ye veya yarıçapa uygulanmış olsun, başka bir Gauss verir. Dalgacıklara benzer şekilde, özelliklerinden bir diğeri de konfigürasyonda (x ve y) ve spektral (j ve k) gösterimde lokalize olma arasında yarı yolda olmasıdır. Bir enterpolasyon fonksiyonu olarak, tek başına bir Gauss, mümkün olan maksimum detayı korumak için fazla yayılmış görünür ve bu nedenle ikinci türev eklenir.

Örnek olarak, bol işleme kabiliyetine sahip bir fotoğraf negatifini ve altıgen desenli bir yazıcıda basarken, sinc işlevi enterpolasyonunu kullanmak için hiçbir neden yoktur. Bu tür bir enterpolasyon, çapraz çizgileri yatay ve dikey çizgilerden farklı bir şekilde ele alır, bu da zayıf bir örtüşme biçimi gibidir.

Pratik gerçek zamanlı kenar yumuşatma yaklaşımları

Gerçek zamanlı bir görüntü oluşturma motorunda (yazılım veya donanım hızlandırmalı) en düşük seviyede kullanılan yalnızca birkaç ilkel vardır . Bunlar "noktalar", "çizgiler" ve "üçgenler" içerir. Eğer biri siyah bir arka plana karşı beyaz bir ilkel çizecekse, böyle bir ilkeli bulanık kenarlara sahip olacak şekilde tasarlayarak bir tür kenar yumuşatma elde etmek mümkündür. Bununla birlikte, bu yaklaşım, bitişik ilkellerle (bir kenarı paylaşan üçgenler gibi) başa çıkmakta güçlük çekmektedir.

Tek tip ortalama alma algoritmasına yaklaşmak için, alt piksel verileri için fazladan bir tampon kullanılabilir. İlk (ve en az bellek tüketen) yaklaşım, 4 × 4 ızgarada piksel başına 16 ekstra bit kullandı. İlkelleri önden arkaya gibi dikkatli bir sırayla işlerseniz makul bir imaj yaratmak mümkündür.

Bu, temellerin bir sırada olmasını gerektirdiğinden ve bu nedenle OpenGL gibi bir uygulama programlama arabirimiyle zayıf bir şekilde etkileşime girdiğinden , en son yöntemler, her bir alt piksel için tam renk bilgisi dahil olmak üzere, piksel başına iki veya daha fazla tam alt piksele sahiptir. Bazı bilgiler alt pikseller arasında paylaşılabilir ( Z-arabelleği gibi ).

Mipmap oluşturma

İçin özelleşmiş bir yaklaşım da vardır doku kaplama denilen mipmap doku haritasının düşük çözünürlüklü, ön filtreden versiyonlarını oluşturarak çalışır. Görüntüyü işlerken, uygun çözünürlüklü mipmap seçilir ve bu nedenle doku pikselleri (dokular) ekrana geldiklerinde zaten filtrelenir. Mipmap oluşturma, nihai sonucu iyileştirmek için genellikle çeşitli doku filtreleme biçimleriyle birleştirilir .

Aşırı sözde rastgele örtüşme içeren bir görüntü örneği

Çünkü fraktallar sınırsız detay ve gürültü başka aritmetik daha var yuvarlak-off hatası, onlar do fotoğrafların veya diğer ölçülen verilerine göre daha net bir şekilde aliasing göstermektedir. Kaçış süreleri sınırlarına yakın merkezlerinden renkleri tahmin edilemez böylece piksellerin kesin merkezlerinde renklerine dönüştürülür, nedeniyle aliasing için, setin sınırında sonsuza gidin. Bu örnek, piksellerinin yaklaşık yarısında kenarlara sahiptir, bu nedenle çok fazla örtüşme gösterir. İlk görüntü, orijinal örnekleme hızında yüklenir. (Çoğu modern yazılım kenar yumuşatma olduğundan, tüm örtüşmeyi görmek için tam boyutlu sürümü indirmek gerekebilir.) İkinci görüntü, örnekleme oranının beş katı olarak hesaplanır ve kenar yumuşatma ile aşağı örneklenir . Birinin her pikselde ortalama renk gibi bir şeyi gerçekten isteyeceğini varsayarsak, bu yaklaşıyor. İlkinden açıkça daha düzenli.

Bu görüntüleri doğru bir şekilde karşılaştırmak için, onları tam ölçekte görüntülemek gerekir.

Bu durumda, kullanılabilecek ek bilgiler olduğu görülür. Bir "mesafe tahmincisi" algoritması ile yeniden hesaplanarak, setin kenarına çok yakın olan noktalar belirlendi, böylece alışılmadık derecede ince ayrıntılar, setin kenarına yakın hızla değişen kaçış zamanlarından alınıyordu. Bu hesaplanan noktalardan türetilen renkler, alışılmadık şekilde piksellerini temsil etmeyenler olarak tanımlanmıştır. Set orada daha hızlı değişir, bu nedenle tek bir nokta örneği tüm pikseli daha az temsil eder. Bu noktalar, üçüncü görüntüde, etraflarındaki noktaların enterpolasyonu yapılarak değiştirildi. Bu, görüntünün gürültüsünü azaltır ancak renkleri parlaklaştırma gibi yan etkiye sahiptir. Dolayısıyla bu görüntü, daha da büyük bir hesaplanan nokta kümesiyle elde edilecek olanla tam olarak aynı değildir. Neyin atıldığını göstermek için, gri bir arka planla harmanlanmış reddedilen noktalar dördüncü görüntüde gösterilir.

Son olarak, "Tomurcuklanan Türbinler" o kadar düzenlidir ki, sistematik (Moiré) örtüşme, en yakın piksel alınarak küçültüldüğünde ana "türbin ekseni" yakınında açıkça görülebilir. İlk görüntüdeki takma ad rastgele görünür çünkü piksel boyutunun altında tüm ayrıntı düzeylerinden gelir. Alt düzey örtüşme bastırıldığında, üçüncü görüntüyü yapmak için ve ardından kenar yumuşatma olmadan beşinci görüntüyü yapmak için bir kez daha aşağı örneklendiğinde, üçüncü görüntünün ölçeğindeki sıra beşinci görüntüde sistematik örtüşme olarak görünür. görüntü.

Bir görüntünün saf aşağı örneklemesi aşağıdaki etkiye sahiptir (tam ölçekte görüntülenmesi önerilir):

Süper örnekleme / tam sahne kenar yumuşatma

Tam görüntü örtüşme önleme (FSAA) olarak da adlandırılan süper örnekleme kenar yumuşatma (SSAA) , tam ekran görüntülerde örtüşmeyi (veya " pürüzleri ") önlemek için kullanılır . SSAA, eski ekran kartlarında bulunan ilk anti-aliasing türüydü. Ancak muazzam hesaplama maliyeti ve GPU'larda çok örnekli kenar yumuşatma (MSAA) desteğinin ortaya çıkması nedeniyle , artık gerçek zamanlı uygulamalarda yaygın olarak kullanılmamaktadır. MSAA, biraz daha düşük grafik kalitesi sağlar, ancak aynı zamanda hesaplama gücünde büyük tasarruf sağlar.

Ortaya çıkan SSAA görüntüsü daha yumuşak görünebilir ve ayrıca daha gerçekçi görünmelidir. Bununla birlikte, fotoğraf benzeri görüntüler için yararlı olsa da, basit bir kenar yumuşatma yaklaşımı (süper örnekleme ve ardından ortalama alma gibi), bazı çizgi sanatı veya diyagram türlerinin görünümünü, özellikle de çoğu yerde çizgiler yatay veya dikeydir. Bu durumlarda, önceki bir ızgara uydurma adımı yararlı olabilir ( ipuçlarına bakın ).

Genel olarak, süper örnekleme, veri noktalarını nihai veri çözümlemesinden daha büyük bir çözünürlükte (genellikle iki kuvvetiyle) toplama tekniğidir. Bu veri noktaları daha sonra genellikle basit bir ortalama ile istenen çözünürlüğe birleştirilir (aşağı örneklenir) . Birleşik veri noktaları daha az görünür örtüşme yapısına (veya hareli desenlere ) sahiptir.

Süper örneklemeyle tam sahne örtüşme önleme, genellikle her tam karenin ekran çözünürlüğünün iki katı (2x) veya dört katı (4x) olarak oluşturulduğu ve ardından ekran çözünürlüğüne uyacak şekilde aşağı örneklendiği anlamına gelir. Bu nedenle, 2x FSAA , her karenin her bir tek pikseli için 4 süper örneklenmiş pikseli işleyecektir. Daha büyük çözünürlüklerde işleme daha iyi sonuçlar verecektir; ancak, performansı ve kare hızını düşürebilecek daha fazla işlemci gücü gerekir. Bazen FSAA, donanımda, bir grafik uygulamasının görüntülerin süper örneklendiğinden ve ardından görüntülenmeden önce alt örneklendiğinden habersiz olacağı şekilde uygulanır.

Nesne tabanlı kenar yumuşatma

Bir grafik oluşturma sistemi, poligonal ilkellerden oluşturulmuş nesnelere dayalı bir görüntü oluşturur; görüntüdeki örtüşme efektleri, görüntünün yalnızca nesnelerin siluet kenarlarını temsil eden alanlarına bir kenar yumuşatma şeması uygulanarak azaltılabilir. Silüet kenarlarının kenarları, opaklığı değişen kenar yumuşatma ilkelleri oluşturularak kenarları yumuşatılır. Bu kenar yumuşatma ilkelleri, kontrastlı kenarlarla birleştirilir ve görüntüde nesnelerin arka planla karışmış gibi göründüğü bir bölge oluşturur. Yöntemin, yalnızca iki geçişte tam sahne örtüşme önleme oluşturması ve biriktirme tamponunun gerektirdiği ek belleğin kullanılmasını gerektirmemesi nedeniyle, biriktirme tamponuna dayalı klasik yöntemlere göre bazı önemli avantajları vardır . Nesne tabanlı kenar yumuşatma ilk olarak Indy iş istasyonları için Silicon Graphics'te geliştirildi .

Kenar yumuşatma ve gama sıkıştırma

Dijital görüntüler genellikle gama sıkıştırılmış bir biçimde saklanır , ancak çoğu optik kenar yumuşatma filtresi doğrusaldır. Bu nedenle, bir görüntüyü optik bulanıklaştırma ile eşleşecek şekilde alt örneklemek için, önce onu doğrusal bir biçime dönüştürmeli, ardından kenar yumuşatma filtresi uygulamalı ve son olarak onu gama sıkıştırılmış biçime geri dönüştürmelisiniz. Gama ile sıkıştırılmış bir görüntü üzerinde doğrusal aritmetik kullanmak, ideal filtreden biraz farklı olan değerlerle sonuçlanır. Bu hata, yüksek kontrastlı alanlarla uğraşırken daha büyüktür ve yüksek kontrastlı alanların daha soluk olmasına neden olur: parlak ayrıntılar (bir kedinin bıyıkları gibi) görsel olarak incelir ve karanlık ayrıntılar (ağaç dalları gibi), optik olarak anti- takma ad görüntü. Her piksel ayrı ayrı deforme edilir, yani kenar yumuşatmadan sonra ana hatlar düzensiz hale gelir. Doğrusal formata ve doğrusal formata dönüştürme işlemi büyük ölçüde yavaşlattığından ve farklılıklar genellikle ince olduğundan, Final Cut Pro , Adobe Photoshop ve GIMP dahil olmak üzere neredeyse tüm görüntü düzenleme yazılımları , gama sıkıştırılmış etki alanında görüntüleri işler.

Modern GPU'ların çoğu, dokuları bellekte sRGB formatında depolamayı destekler ve esasen performans kaybı olmaksızın doğrusal alana ve şeffaf bir şekilde geri dönüşüm gerçekleştirebilir.

Tarih

Kenar yumuşatma tarihindeki önemli erken çalışmalar şunları içerir:

  • Freeman, H. (Mart 1974). "Çizgi çizim görüntülerinin bilgisayarda işlenmesi". ACM Hesaplama Araştırmaları . 6 (1): 57–97. doi : 10.1145 / 356625.356627 .
  • Crow, Franklin C. (Kasım 1977). "Bilgisayar tarafından oluşturulan gölgeli görüntülerde örtüşme sorunu". ACM'nin İletişimi . 20 (11): 799–805. doi : 10.1145 / 359863.359869 .
  • Catmull, Edwin (23-25 ​​Ağustos 1978). "Kenar yumuşatmalı gizli yüzey algoritması". Bilgisayar grafikleri ve interaktif teknikler konulu 5. yıllık konferansın bildirileri . sayfa 6–11.

Ayrıca bakınız

Referanslar

Dış bağlantılar