2011-10-14 24 views
28

Matplotlib'deki antialiasing'i arttırmak mümkün mü? Verilerimde hala bazı takma adlar görebiliyorum, birkaç arka uç çalıştım ve hala var. Hatların antialiasing bayrağı ayarlandı.matplotlib'deki antialiasing'in gücünü değiştirin

Burada ben bir Ekran alınan örnekler burada

enter image description here

ne anlama geldiğini görebilirsiniz. Muhtemelen en iyi örnek değil ama sanırım sıradaki merdivenleri görebiliyorum. Wxagg arka ucu ile çekildi.

Ben Windows 7 ile matplotlib sürümünü 1.01 kullanıyorum

Güncelleme: Artık önceki resmi üretilen kod yok, ama yine de sorun var. Aşağıda, takma adını gösteren basit bir kod örneği verilmiştir.

import numpy as np 
import matplotlib 
matplotlib.use('wxAgg') 
import matplotlib.pyplot as pl 
print 'Backend:', pl.get_backend() 

x = np.linspace(0,6,100) 
y = np.sin(x) 

for a in range(10): 
    pl.plot(x, a/10.*x, linewidth=1) 

pl.show() 

yazdırabilir en Backend: WXAgg Ve çıkan arsa aşağıdaki gibi görünüyor. aliasing

Özellikle düşük kırmızı eğri net takma gösterir.

+6

Grafiğinizi yüksek bir piksel algoritmasıyla daha yüksek piksel boyutlarında ve alt ölçeklerde gerçekleştirebilirsiniz. –

+0

ama interaktif oturumlar ne olacak? – P3trus

+0

"imshow" ile görüntü çizimlerini mi kullanıyorsunuz? Eğer öyleyse, bunun antialiasing ile hiçbir ilgisi yoktur, bu sadece imshow'un kullandığı interpolasyon algoritmasıdır. (3-bant renk dizisini, orijinal veri yerine, çok fazla esere yol açabilecek şekilde, enterpolasyona uğratır.) –

cevap

4

Sorunuza eklediğiniz resim zaten mükemmel şekilde kenar yumuşatılmıştır. Bundan daha iyi olamaz. Görüntünün Yakınlaştırılan sürümü göz at: Bir .svg dosya olarak resmi kaydederseniz, sonsuz hassasiyet olacaktır

Upscaled version of the image in question

+1

Bunun iyi anti-aliased olduğunu doğru, ama "mükemmel" kadar ileri gideceğinden emin değilim. İyi bir anti-alias algoritmasına giren birçok faktör var. –

+0

1. Sınırlı sayıda gölgeye sahip görünmüyor (örneğin, Windows Yazı tipi oluşturmayı seviyor) 2. Görünür bir eser yok. 3. Subpixel oluşturma, kırmızı şeyler için bir seçenek değildir. 4. Her satırdaki bir piksel uzunluğunun genişliği, satır genişliği tarafından tanımlanır, bu nedenle algoritma tarafından değiştirilemez. Bunun herhangi bir şekilde nasıl geliştirilebileceğini gerçekten bilmiyorum. Bir yol görüyor musun? – Simon

+0

Hatta subpixel oluşturmaya başvurmuyordum. Uygulanan süper örneklemenin miktarına göre belirlenen bir faktör, ton sayısını artırdınız. Başkalarını düşünebilirim: filtrenin şekli ve boyutu, renk uzayının doğrusallığı. –

4

. Daha sonra bu .svg dosyasını InkScape gibi bir şeyle düzenleyebilir ve istediğiniz kadar hassasiyet/antialiasing yapabilirsiniz.

+0

Evet, ihracat - svg -> inkscape -> 5g'de png'ye aktarma dpi -> GIMP -> [hafifçe bulanıklaşır? ->]% 20'ye ölçeklendir -> tekrar png'ye aktar. Benim için komşu poligonlar arasındaki beyaz çizgileri tamamen kaldırdık. – naught101