Itu adalah wiki komunitas, sehingga Anda dapat memperbaiki pos yang mengerikan dan mengerikan ini.
Grrr, tidak ada LaTeX. :) Saya kira saya harus melakukan yang terbaik yang saya bisa.
Definisi:
Kami punya gambar (PNG, atau format lossless * lainnya) bernama A ukuran A x oleh A y . Tujuan kami adalah untuk mengukurnya dengan p = 50% .
Gambar ( "array") B akan menjadi "langsung skala" versi A . Ini akan memiliki B s = 1 jumlah langkah.
A = B B s = B 1
Gambar ("array") C akan menjadi versi A "ditingkatkan skala" . Ini akan memiliki C s = 2 jumlah langkah.
A ≅ C C s = C 2
Hal Menyenangkan:
A = B 1 = B 0 × p
C 1 = C 0 × p 1 ÷ C s
A ≅ C 2 = C 1 × p 1 ÷ C s
Apakah Anda melihat kekuatan fraksional itu? Mereka secara teoritis akan menurunkan kualitas dengan gambar raster (raster di dalam vektor tergantung pada implementasinya). Berapa banyak? Kami akan mencari tahu selanjutnya ...
The Good Stuff:
C e = 0 jika p 1 ÷ C s ∈ ℤ
C e = C s jika p 1 ÷ C s ∉ ℤ
Di mana e mewakili kesalahan maksimum (skenario kasus terburuk), karena kesalahan pembulatan bilangan bulat.
Sekarang, semuanya tergantung pada algoritma downscaling (Super Sampling, Bicubic, Lanczos sampling, Nearest Neighbor, dll).
Jika kita menggunakan Tetangga terdekat (yang terburuk algoritma untuk apa pun dari setiap kualitas), "kesalahan maksimum yang benar" ( C t ) akan sama dengan C e . Jika kita menggunakan salah satu dari algoritma lain, itu menjadi rumit, tetapi tidak akan seburuk itu. (Jika Anda ingin penjelasan teknis tentang mengapa itu tidak akan seburuk Nearest Neighbor, saya tidak bisa memberi Anda satu alasan itu hanya dugaan. CATATAN: Hei ahli matematika! Perbaiki ini!)
Kasihi sesamamu manusia:
Mari kita membuat "array" gambar D dengan D x = 100 , D y = 100 , dan D s = 10 . p masih sama: p = 50% .
Algoritma Neestest Neighbor (definisi mengerikan, saya tahu):
N (I, p) = mergeXYDuplicates (floorAllImageXYs (I x, y × p), I) , di mana hanya x, y sendiri yang sedang dikalikan; bukan nilai warnanya (RGB)! Saya tahu Anda tidak bisa benar-benar melakukannya dalam matematika, dan inilah mengapa saya bukan MATEMATIKA LEGENDARIS dari ramalan itu.
( mergeXYDuplicates () hanya menyimpan "elemen" paling bawah / paling kiri x, y di gambar asli I untuk semua duplikat yang ditemukannya, dan membuang sisanya.)
Mari kita ambil piksel acak: D 0 39,23 . Kemudian gunakan D n + 1 = N (D n , p 1 ÷ D s ) = N (D n , ~ 93,3%) berulang-ulang.
c n + 1 = lantai (c n × ~ 93,3%)
c 1 = lantai ((39,23) × ~ 93,3%) = lantai ((36,3,21,4)) = (36,21)
c 2 = lantai ((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)
Jika kami melakukan penurunan sederhana hanya satu kali, kami harus:
b 1 = lantai ((39,23) × 50%) = lantai ((19,5,11,5)) = (19,11)
Mari kita bandingkan b dan c :
b 1 = (19,11)
c 10 = (15,8)
Itu kesalahan (4,3) piksel! Mari kita coba ini dengan piksel akhir (99,99) , dan memperhitungkan ukuran sebenarnya dalam kesalahan. Saya tidak akan melakukan semua matematika di sini lagi, tetapi saya akan memberitahu Anda itu menjadi (46,46) , kesalahan (3,3) dari seharusnya, (49,49) .
Mari kita gabungkan hasil ini dengan yang asli: "kesalahan nyata" adalah (1,0) . Bayangkan jika ini terjadi pada setiap piksel ... itu mungkin berakhir membuat perbedaan. Hmm ... Yah, mungkin ada contoh yang lebih baik. :)
Kesimpulan:
Jika gambar Anda awalnya berukuran besar, itu tidak masalah, kecuali jika Anda melakukan banyak downscales (lihat "Contoh dunia nyata" di bawah).
Semakin buruk dengan maksimum satu piksel per langkah tambahan (turun) di Nearest Neighbor. Jika Anda melakukan sepuluh downscales, kualitas gambar Anda akan sedikit menurun.
Contoh dunia nyata:
(Klik pada gambar kecil untuk tampilan yang lebih besar.)
Turun dengan 1% secara bertahap menggunakan Super Sampling:
Seperti yang Anda lihat, Super Sampling "mengaburkan" jika diterapkan beberapa kali. Ini "bagus" jika Anda melakukan satu downscale. Ini buruk jika Anda melakukannya secara bertahap.
* Tergantung pada editor, dan format, ini bisa berpotensi membuat perbedaan, jadi aku tetap sederhana dan menyebutnya lossless.
(100%-75%)*(100%-75%) != 50%
,. Tapi saya yakin saya tahu apa yang Anda maksudkan, dan jawabannya adalah "tidak", dan Anda tidak akan bisa membedakannya, jika ada.