Implementasi teknis upscaling

15

Jadi saya telah melihat bikubik dan fraktal terdaftar sebagai metode peningkatan skala foto. Apa rincian teknis di balik cara kerjanya dan mengapa / kapan yang satu lebih baik dari yang lain?

rfusca
sumber
upsize: bilinear; berhemat: lanczos 3.

Jawaban:

15

Pertama, pembesaran gambar melibatkan memindahkan piksel secara terpisah dengan jumlah tetap, dan mengisi ruang antara piksel yang berdekatan sebelumnya dengan konten yang serupa. Ini dapat dilakukan melalui fabrikasi piksel dasar (penyaringan bikubik), atau melalui cara yang lebih kompleks, seperti mengubah gambar menjadi representasi vektor, dan penskalaan dalam ruang vektor.

Pemfilteran Bicubic, bersama dengan pemfilteran Bilinear, menggunakan kurva fungsi yang relatif sederhana untuk menyatukan warna-warna piksel tetangga bersamaan ketika Anda memperbesar gambar. Bilinear menggunakan kurva fungsi linier, sedangkan Bicubic menggunakan kurva fungsi spline kubik (cspline). Filtrasi bicubic umumnya menghasilkan hasil yang lebih halus, namun kedua algoritma akhirnya memadukan nilai-nilai piksel tetangga bersama-sama melalui kurva fungsi untuk "mengisi celah" ketika memperbesar gambar. Perlu dicatat bahwa penskalaan bikubik pada umumnya bersifat lossless, karena hanya ruang antara piksel asli yang benar-benar dihasilkan. Bergantung pada nuansa implementasi spesifik, piksel asli dapat berubah sedikit, namun sebagian besar, data asli dipertahankan dan data baru dibuat untuk diisi saat gambar ditingkatkan.

Pendekatan fraktal untuk penskalaan gambar menggunakan pendekatan yang sama sekali berbeda. Algoritma yang lebih kompleks digunakan untuk menganalisis konten gambar, mengidentifikasi tepi dan "objek", dan akhirnya mengubah gambar menjadi format vektor fraktal. Setelah gambar di-vektor-kan, ia dapat diskalakan "lossless" dalam ruang vektor, kemudian dirender kembali pada ukuran yang lebih besar. Algoritma fraktal, seperti Fraktal Asli, menggunakan algoritma vektor fraktal untuk skala gambar sambil mempertahankan tepi yang halus dan tajam. Pendekatan ini berguna ketika gambar Anda pada awalnya memiliki tepi yang tajam dan dapat dikenali sebagai faktor utama, dan menjaga ketajaman yang jelas pada sisi-sisi itu penting.

Selain itu, Genuine Fractals berupaya untuk mempertahankan detail non-tepi melalui konsep "kemiripan diri", menjaga detail dengan mempertimbangkan konten gambar sebagai fraktal, dan membuat ulang konten non-edge dari algoritma fraktal. Ini dianggap memiliki manfaat, daripada sekadar membuat informasi dari piksel tetangga, konten baru dapat dihasilkan dari pola yang terdiri dari banyak piksel. Pendekatan ini dapat bekerja dengan baik ketika meningkatkan sekitar 200%, namun sifat dasar vektor penskalaan menjadi lebih jelas ketika penskalaan ke ukuran yang lebih besar. Juga harus dicatat bahwa metode penskalaan ini tidak lossless, dan beberapa detail piksel halus dapat dibuang ketika algoritma mencoba untuk menemukan fraktalpola yang bisa direplikasi. Peningkatan skala yang ekstrem dapat menghasilkan replikasi pola yang terlihat, dan detail tepi yang halus dapat dihapus dalam upaya mempertahankan tepi yang tajam dan tajam pada semua ukuran gambar.

BenVista juga menyediakan algoritma kepemilikan yang dijuluki S-Spline. Ada sedikit informasi tentang spesifikasi algoritme ini, namun sepertinya algoritma berbasis fungsi lainnya. Penskalaan S-Spline Max di PhotoZoom Pro, seperti Genuine Fractals, melakukan pekerjaan yang luar biasa mempertahankan definisi tepi. Algoritma ini juga mampu menskalakan hingga sekitar 200% atau lebih, namun mendorong algoritma ini lebih jauh menghasilkan degradasi dan smoothing detail non-edge yang terlihat. Tampaknya kompromi umum dalam penskalaan algoritma adalah definisi tepi maximim, atau pelestarian detail maksimum. Juga harus dicatat bahwa sebagian besar algoritma penskalaan pihak ketiga, termasuk Fraktal Asli dan BenVista PhotoZoom Pro, secara otomatis menerapkan topeng unsharp ke gambar akhir secara default.

Dimungkinkan untuk menggunakan bikubik secara iteratif. Inti mendasar dari penskalaan bikubik adalah bahwa hal itu membuat lebih banyak informasi semakin besar skala Anda, dengan biaya tertinggi dari ketajaman. Dengan melakukan penskalaan bikubik dengan kenaikan 3-5%, Anda mempertahankan detail yang jauh lebih orisinal atau hampir orisinal, dan membuat jauh lebih sedikit gambar pada setiap langkah. Hasil akhir dari penskalaan bikubik iteratif (atau stepped) dapat mempertahankan definisi tepi yang jauh lebih besar, tanpa kehilangan detail halus. Namun, biayanya adalah investasi pribadi yang jauh lebih besar dalam penskalaan, karena saat ini, tidak ada aplikasi prefabrikasi yang akan melakukan ini untuk Anda. Anda perlu menghitung lebar dan tinggi gambar baru secara manual pada setiap langkah dengan mengalikan lebar atau tinggi sebelumnya dengan persentase penskalaan Anda, dan memasukkan angka itu ke dalam program pengeditan gambar Anda ' alat penskalaan bikubik. Hasil akhirnya bisa luar biasa, dan setajam gambar bicibic dengan masking unsharp. Batas seberapa besar Anda dapat mengatur skala gambar tanpa kerugian yang terlihat jauh lebih besar daripada algoritma lainnya, setidaknya 400%, mungkin lebih.

jrista
sumber
Hmm. Cukup mudah untuk membuat skrip bikubik iteratif sebagai skrip gimp, atau aksi photoshop ....
Silakan Baca Profil
Saya sudah mencobanya sebagai aksi photoshop, namun saya tidak berhasil, karena memerlukan informasi komputasi. Saya tidak benar-benar melakukan banyak scripting dengan Photoshop, jadi saya tidak yakin apakah itu mendukung fungsi matematika atau scripting.
jrista
2
+1 Wow, jawaban terinci yang fantastis. Saya pikir ini adalah pertanyaan yang membosankan sampai saya membaca jawaban Anda.
fmark
Saya baru saja menguji beberapa rezising di Paint.net, tetapi hasilnya tidak seperti yang dinyatakan dalam jawaban ini, gambar yang diubah ukurannya berkali-kali menghasilkan banyak kekaburan karena gambar yang sama di-resampling hanya satu kali. Saya mencoba dengan ukuran gambar yang sama menjadi 200% dan berulang 104% setiap kali sampai mencapai dimensi piksel yang kira-kira sama.
Jahaziel
1
Jika Anda ingin contoh bicubic iteratif yang dilakukan pada gambar yang mendapat manfaat dari metode ini, lihat analisis saya di sini: Studi Empiris
jrista