Böylece, topluluk wiki var sen bu korkunç, korkunç yazı çözebilirsiniz.
Grrr, LaTeX yok. :) Sanırım elimden gelenin en iyisini yapmam gerekecek.
Tanım:
Biz bir görüntü (PNG veya başka kayıpsız * biçimi) adında var bir boyutu A x tarafından bir y . Hedefimiz p =% 50 ölçeklendirmektir .
Resim ("dizi") B , A'nın "doğrudan ölçeklenmiş" bir sürümü olacaktır . Bu olacaktır B s = 1 adım sayısı.
A = B B s = B 1
Resim ("dizi") C , A'nın "aşamalı olarak ölçeklenmiş" bir sürümü olacaktır . Bu olacaktır C s = 2 adım sayısı.
A ≅ C C s = C 2
Eğlenceli Şeyler:
A = B 1 = B 0 × p
C 1 = C 0 × p 1 ÷ C s
A ≅ C 2 = C 1 × p 1 ÷ C s
Bu kesirli güçleri görüyor musun? Raster görüntülerle teorik olarak kaliteyi düşürürler (vektörlerin içindeki rasterler uygulamaya bağlıdır). Ne kadar? Bundan sonra anlayacağız ...
İyi Şeyler:
P 1 if C s ∈ ℤ ise C e = 0
C e = C s eğer p 1 ÷ C s ∉ ℤ
Burada e , tamsayı yuvarlama hataları nedeniyle maksimum hatayı (en kötü senaryo) temsil eder.
Şimdi, her şey ölçek küçültme algoritmasına (Süper Örnekleme, Bikübik, Lanczos örneklemesi, En Yakın Komşu, vb.) Bağlıdır.
Biz Yakın Komşu (kullanıyorsanız kötü herhangi kalitede şey için algoritma), "gerçek maksimum hatası" ( C t ) eşit olacaktır C e . Diğer algoritmalardan herhangi birini kullanırsak, karmaşıklaşır, ancak o kadar da kötü olmaz. (Neden En Yakın Komşu kadar kötü olmayacağına dair teknik bir açıklama yapmak istiyorsanız, size sadece bir tahmin veremem çünkü size bir tahmin veremem. NOT: Hey matematikçiler! Bunu düzeltin!)
Komşunu seviyorum:
Diyelim görüntüler bir "dizi" hale D ile D x = 100 , D y = 100 ve D s = 10 . p hala aynı: p =% 50 .
En Yakın Komşu algoritması (korkunç tanım, biliyorum):
N (I, p) = sadece x, y kendilerinin çarpıldığı mergeXYDuplicates (floorAllImageXYs (I x, y × p), I) ; renk (RGB) değerleri değil! Bunu matematikte gerçekten yapamayacağınızı biliyorum ve bu yüzden kehanetin EFSANEVİ MATEMATİKÇİSİ değilim .
( mergeXYDuplicates () , bulduğu tüm kopyalar için orijinal görüntü I'de yalnızca en altta / en solda x, y "öğeleri" tutar ve gerisini atar.)
Rastgele bir piksel alalım: D 0 39,23 . Sonra tekrar tekrar D n + 1 = N (D n , p 1 ÷ D s ) = N (D n , ~% 93,3) uygulayın .
c n + 1 = kat (c n × ~% 93,3)
c 1 = kat ((39,23) × ~% 93,3) = kat ((36,3,21,4)) = (36,21)
c 2 = kat ((36,21) × ~% 93,3) = (33,19)
c 3 = (30,17)
c 4 = (27,15)
c 5 = (25,13)
c 6 = (23,12)
c 7 = (21,11)
c 8 = (19,10)
c 9 = (17,9)
c 10 = (15,8)
Basit bir ölçeği sadece bir kez yapsaydık, sahip olacağız:
b 1 = kat ((39,23) ×% 50) = kat ((19.5,11.5)) = (19,11)
B ve c'yi karşılaştıralım :
b 1 = (19,11)
c 10 = (15,8)
Bu (4,3) piksellik bir hata ! Bunu uç piksellerle (99,99) deneyelim ve hatadaki gerçek boyutu hesaba katalım . Burada yine tüm matematik yapmayacağım, ama olur anlatacağım (46,46) , bir hata (3,3) olması gerektiği kadarıyla, (49,49) .
Bu sonuçları orijinal ile birleştirelim: "gerçek hata" (1,0) . Bunun her pikselde meydana gelip gelmediğini düşünün ... bir fark yaratabilir. Hmm ... Muhtemelen daha iyi bir örnek var. :)
Sonuç:
Resminiz başlangıçta büyük bir boyuttaysa, birden fazla küçültme yapmadıkça gerçekten önemli olmaz (aşağıdaki "Gerçek dünya örneği" bölümüne bakın).
En Yakın Komşu'da artan adım başına (aşağı) maksimum bir piksel daha kötüleşir. On ölçek küçültürseniz, görüntünüzün kalitesi biraz düşer.
Gerçek dünya örneği:
(Daha büyük görünüm için küçük resimlere tıklayın .)
Süper Örnekleme kullanılarak% 1 kademeli olarak küçültülür:

Gördüğünüz gibi, Süper Örnekleme birkaç kez uygulanırsa "bulanıklaştırır". Bir ölçek küçültüyorsanız, bu "iyi" dir. Bu kötü sen aşamalı yapıyoruz eğer.
* Editör bağlı ve format, bu olabilir bunu basit tutmak ve kayıpsız onu arıyorum böylece potansiyel bir fark yaratır.
(100%-75%)*(100%-75%) != 50%. Ama ne demek istediğini bildiğime inanıyorum ve bunun cevabı "hayır" dır ve eğer varsa, farkı gerçekten anlatamazsın.