Apakah mengurangi kualitas secara bertahap akan merusak?


10

Di Photoshop, apakah akan ada perbedaan kualitas ketika raster diperkecil 75% satu kali dibandingkan dengan diperkecil 50% dua kali ? Dalam kedua kasus, ukuran akhir akan sama: 25% dari aslinya.

Alasan saya bertanya adalah karena kadang-kadang saya ingin memperkecil gambar yang saya tahu telah diperkecil sebelumnya. Aku benci harus CTRL + Z (undo) seratus kali ke keadaan di mana gambar itu dalam ukuran aslinya. Jika kualitas akhir tidak terpengaruh, saya lebih suka hanya skala gambar di sana dan kemudian.


1
Saya berasumsi maksud Anda "50% sekali vs 25% dua kali"? Meski begitu (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.
Mateen Ulhaq

2
Bukan jawaban tetapi solusi yang mungkin untuk masalah Anda di ⁋2: jika memungkinkan, ubah layer yang akan Anda ubah ukurannya menjadi Smart Object, itu dapat diskalakan maju mundur tanpa efek apa pun terhadap kualitas file asli.
Jari Keinänen

1
@muntoo Diedit untuk mengatakan 75% satu kali dan 50% dua kali. 25% dua kali sebenarnya lebih besar dari 50% sekali.
JoJo

Jawaban:


10

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:

Asli Turunkan x1 Turunkan x10 Perbesar ke Downscaled x1 Perbesar ke x10 yang Turun

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.


Anda membuat banyak usaha lol .... +1
Jack

2
+1 untuk upaya ... -1000 untuk berpikir kita orang-orang tipe arty akan membaca semua itu. Saya menggulir ke pix :-). Dan Anda membuat poin Anda.
Dawson

Jawaban yang bagus, tapi saya tidak yakin seberapa baik contoh menggunakan tetangga terdekat atau super sampling; terutama karena interpolasi bikubik adalah standar Photoshop. Saya juga sudah membaca yang sebaliknya ketika memperbesar gambar: pembesaran bertahap menghasilkan hasil yang sedikit lebih baik daripada pembesaran satu atap: photo.stackexchange.com/a/3985/1913 Mengapa ini tidak akan menjadi kasus pengurangan?
Jari Keinänen

1
@ Koiyu Bicubic lebih buruk dari Supersampling, IIRC. Dalam downscaling, gambar kehilangan data. [Tidak sepenuhnya benar, tetapi:] Sebagian besar algoritma downscaling dirancang untuk kehilangan data ini sambil menghapus kegelisahan yang dihasilkan tetangga terdekat dengan 'mengaburkan' tepiannya sedikit. Kabur ini bertambah. [Tebak] Jika gambar diperbesar, ini 'secara rekursif' ditingkatkan. Saya yakin ada sebuah algoritma di mana kualitas rekursif ini, walaupun mahal dalam CPU, menghasilkan lebih sedikit kekaburan dalam gambar daripada ketika meningkatkan skala sekaligus. [/ Tebak]
Mateen Ulhaq

Kutukan imgur karena menghapus gambar saya setelah tidak aktif. Apakah ada yang tahu layanan yang gambarnya 'permanen'?
Mateen Ulhaq

5

JoJo bertanya tentang kualitas. Sebagian besar tanggapan tentang akurasi piksel , yang semuanya tidak relevan bagi perancang, atau bahkan seorang fotografer.

Kualitas adalah ukuran seberapa meyakinkan dan menyenangkan hasil akhirnya, bukan seberapa "akurat" itu. Sebagai contoh yang bagus, Kloning atau Isi Sadar Konten mengganti bagian-bagian yang tidak diinginkan dari sebuah gambar dengan piksel yang masuk akal : mereka terlihat benar, tetapi mereka tentu saja tidak dapat dianggap akurat.

Di Photoshop, perbedaan praktis utama antara perampingan secara bertahap vs perampingan dalam satu kesempatan adalah bahwa hal itu membutuhkan waktu lebih lama. Jika Anda menagih berdasarkan jam, tentu saja pergi 1% setiap kali. Jika tidak, berhemat dalam satu kesempatan. Jadikan gambar sebagai Objek Smart terlebih dahulu, jika Anda ingin membuat versi yang lebih besar nanti.

Tidak masalah algoritma apa yang Anda gunakan (dan komentar Dawson tentang algoritme itu mati - mereka luar biasa), perampingan membuang piksel. Algoritma mengurangi piksel dan memodifikasi yang lain dengan menebak bagaimana cara membuatnya terlihat benar. Algoritma yang baik membuat tebakan yang baik; itu memberi Anda hasil yang terlihat meyakinkan, tetapi tidak akurat dalam arti yang berarti. Jujur, akurat - selain warna! - bukan apa yang Anda cari kecuali jika Anda seorang ilmuwan, dalam hal ini Anda mungkin tidak akan melakukan perampingan di tempat pertama.

Gambar yang telah diperkecil menggunakan algoritme bikubik biasa sering kali mendapat manfaat dari sedikit penajaman, tetapi jika Anda membuat jpeg untuk web, penajaman akan meningkatkan ukuran file.

Kualitas yang tepat dalam desain adalah kualitas yang Anda butuhkan untuk produk akhir Anda. Apa pun di luar itu menambah waktu, tetapi bukan nilai, bagi pekerjaan Anda.

[Sunting: Karena ada yang menyebutkan memperbesar koiyu kebangkitan pertanyaan ini. Saya telah menambahkan beberapa komentar pada subjek itu.]

Ada ide yang muncul bahwa jika Anda meningkatkan gambar dalam langkah-langkah kecil, sebagai lawan dari satu lompatan raksasa, Anda mendapatkan hasil yang sedikit lebih baik ("sedikit lebih buruk" akan lebih akurat). Scott Kelby mempromosikan ide itu beberapa tahun yang lalu, dan itu mungkin benar pada PS 7. Saya belum melihat apa pun yang meyakinkan saya bahwa itu benar hari ini. Itu tidak terbukti dalam tes saya sendiri, sekitar PS CS2 dan 3, tetapi harus dikatakan bahwa saya tidak membuang banyak waktu pada mereka.

Saya tidak menghabiskan waktu untuk pengujian mendalam karena sedikit perbedaan antara "kualitas gambar terdegradasi" dan "kualitas gambar sedikit kurang terdegradasi" tidak memiliki nilai praktis: tidak ada yang dapat digunakan. Dalam pekerjaan saya sendiri, aturan sederhana saya adalah, "Jangan terlalu besar." Sebagai soal kepraktisan dalam pekerjaan desain, sebuah gambar yang agak terlalu rendah resolusi untuk tujuan tertentu selalu terlihat lebih baik digunakan apa adanya daripada gambar yang sama "ukuran" ke resolusi "benar" oleh proses apa pun yang saya punya menemukan, termasuk variasi fraktal dan bikubik.


"Jika kamu menagih per jam, tentu saja pergi 1% pada suatu waktu." ...Tidak lazim? :)
Mateen Ulhaq

BTW, bukankah dirasakan 'kabur' dilakukan dengan menurunkan algoritma secara sengaja?
Mateen Ulhaq

Bicubic tidak kabur karena niat, tetapi sedikit pelunakan adalah artefak yang umum. Ketika itu terjadi, sedikit mempertajam perbaikan itu.
Alan Gilbertson

1
@muntoo: "Jika Anda mengenakan biaya per jam ..." adalah sarkasme ringan yang umum dalam diskusi tentang alur kerja desain, untuk menekankan bahwa penggunaan waktu kerja yang tidak efisien dan boros keduanya tidak efisien dan boros.
Alan Gilbertson

+1 Banyak bit bagus: "Kualitas adalah ukuran seberapa meyakinkan dan menyenangkan hasil akhirnya, bukan seberapa" akurat "itu.", "Akurat ... bukan yang Anda cari kecuali Anda seorang ilmuwan "," sedikit perbedaan antara "kualitas gambar terdegradasi" dan "kualitas gambar sedikit kurang terdegradasi" tidak memiliki nilai praktis "
Farray

3

Umumnya beberapa penskalaan akan mengurangi kualitas lebih dari penskalaan tunggal ke ukuran akhir, tetapi seringkali perbedaannya menjadi minimal. Khususnya, penskalaan yang lebih kecil dengan rasio yang tepat, seperti contoh Anda (2: 1, 2: 1) dibandingkan (4: 1), akan memiliki degradasi yang sangat kecil dibandingkan dengan penskalaan tunggal. Yang terbaik, tentu saja, untuk melakukan semua modifikasi dalam resolusi tertinggi dan kemudian skala hanya sekali di akhir. Ketika penskalaan yang tepat pada awalnya tidak diketahui, seseorang dapat melakukan serangkaian penskalaan uji untuk menemukan ukuran yang tepat, kemudian perhatikan ukurannya, membuang gambar uji, dan melakukan penskalaan tunggal ke ukuran itu dari yang asli.


1
Anda mengatakan peningkatan skala lebih buruk, tetapi apakah ada bukti teoretis?
JoJo

1
Saya hanya mengambil screencap dari pengaturan multimonitor saya dan kemudian menggunakan photoshop untuk skala satu versi menjadi 25% dan satu 50 kemudian 50. Kedua hasilnya identik dengan pixel. Saya terkejut
horatio

@ Jojo: Saya tidak punya bukti teoritis untuk ditawarkan (dan bukti akan tergantung pada mana dari beberapa algoritma interpolasi yang digunakan dalam penskalaan). Saya pikir Anda bisa menunjukkannya: ambil gambar nontrivial katakan 400x400, skala ke 380px, ke 360, & ke 340. Bandingkan dengan yang diperkecil dari yang asli ke 340px. Saya belum mencoba ini, tetapi saya pikir akan ada beberapa kabur yang lebih besar, meskipun mungkin tidak semua yang dapat dilihat secara visual. Perhatikan penskalaan yang disarankan tidak menggunakan rasio yang bagus.
mgkrebbs

1
Saya melakukan latihan. Ini versi skala 1 dan ini versi skala 3x . Anda dapat melihat hilangnya detail di garis-garis halus dari menengah ke bawah. Dengan zoom, Anda dapat melihat hal serupa di banyak tempat. Ini adalah interpolasi kubik melalui Gimp, dan menggunakan file PNG untuk menghindari kompresi yang hilang.
mgkrebbs

1

Pertanyaan ini MENGAGUMKAN! ... Saya pikir kita semua terlalu teknis.

Gambar 100 x 100 piksel = 10.000 total piksel

Menurunkan gambar menarik piksel keluar. Peningkatan menambahkan mereka. Either way perangkat lunak mengambil "tebakan" untuk mengubah file.

Pengurangan tunggal: 90 x 90 (1900px dihapus dari informasi file asli)

2 Pengurangan langkah: 95 x 95 (975px dihapus), 90 x 90 (925 lainnya). Detail untuk menangkap di sini adalah bahwa dari total 1900px dihapus - 975 dari mereka BUKAN bagian dari informasi asli .

Gambar asli selalu yang terbaik. Lebih sedikit "generasi" selalu menyamakan kualitas yang lebih baik (paling dekat dengan kualitas aslinya).

BUKTI (dan tanggapan terhadap komentar @ mutoo)

masukkan deskripsi gambar di sini

Ini sederhana ... ini adalah algoritma ... itu bukan seperangkat mata manusia. Ada 3 warna di sini. 100% hitam, 50% hitam, dan putih (gambar skala abu-abu). Tidak masalah bagaimana saya mengatur skala - menu ukuran gambar, alat transformasi, RGB, CMYK, 100 x 100px, 10 x 10in, hasilnya sama:

Di sepanjang tepi hitam / abu-abu Anda menemukan 80% hitam (warna yang tidak ada). Di sepanjang tepi putih / abu-abu Anda menemukan 7% hitam (tidak ada). [bukan undangan untuk argumen anti-alias di sini]

Seperti yang kita semua tahu (sebagai manusia, dan semua), pengurangan atau pembesaran yang sempurna akan menghasilkan kotak bergaris Hitam / Abu-abu / Putih. Dan saya masih menemukan bahwa satu iterasi (naik atau turun) menciptakan replika yang lebih baik daripada banyak.


Bagian tentang "BUKAN bagian dari informasi asli" tidak sepenuhnya benar. Algoritma Nearest Neighbor, misalnya, tidak pernah mengubah nilai piksel; itu hanya menghilangkan piksel yang dipilih. Akhirnya, "piksel salah" mulai dihapus karena kesalahan pembulatan bilangan bulat, sehingga kualitasnya menurun. Algoritma "Lebih Baik", sementara itu, dapat mencampurkan warna-warna piksel, dan beberapa algoritma penskalaan piksel seni bahkan mungkin mengambil "tebakan". Hal ini menyebabkan pengaburan, yang diinginkan ketika melakukan skala tunggal ke bawah, tetapi tidak banyak.
Mateen Ulhaq

[lanjutan] Tetangga Terdekat masih lebih buruk: menghilangkan "piksel yang salah", dan membuat gambar Anda tampak seperti tangga yang sangat aneh (tampilan atas).
Mateen Ulhaq

Membawa saya kembali ke hari-hari kamera stat saya - bangun / tembak ukuran yang Anda butuhkan untuk reproduksi sebaik mungkin. Alat peraga besar untuk orang-orang yang menulis algoritme itu ... "Mari kita buat SATU hal yang akan memproses SEGALANYA dan membuatnya terlihat sangat bagus 99% dari waktu." <- hal-hal yang cukup hardcore, serius.
Dawson

-1

Kemungkinan besar ya, tetapi dalam kebanyakan kasus Anda bahkan tidak akan dapat melihat perbedaannya.

Sunting: Saya melihat bahwa orang-orang tidak menyukai jawaban saya :). Mungkin karena itu sederhana. IMHO itu tidak membuatnya kurang benar. Ya… buktikan saya salah :).

Sunting 2: Saya ingin menjaga jawaban saya singkat tapi ... :)

T: Di Photoshop, apakah akan ada perbedaan kualitas ketika raster diperkecil 75% satu kali sebagai ganti diperkecil 50% dua kali? Dalam kedua kasus, ukuran akhir akan sama: 25% dari aslinya.

SEBUAH:

  1. "Kemungkinan besar ya" - lihat posting muntoo. Dia mengatakan bahwa setiap langkah interpolasi memperkenalkan beberapa kesalahan kecil. Mereka adalah kesalahan pembulatan atau representasi dan mereka dapat berkontribusi pada penurunan kualitas. Kesimpulan sederhana: lebih banyak langkah, lebih banyak kemungkinan degradasi. Jadi "kemungkinan besar" gambar akan kehilangan kualitas selama setiap langkah penskalaan. Lebih banyak langkah - degradasi kualitas yang lebih mungkin. Jadi "kemungkinan besar" gambar akan lebih terdegradasi jika diskalakan dua kali daripada dalam satu. Kehilangan kualitas tidak pasti - misalnya, mengambil gambar warna solid, tetapi seberapa seringkah perancang skala akan menghasilkan gambar serupa?

  2. "tetapi dalam kebanyakan kasus Anda bahkan tidak akan dapat melihat perbedaannya" - lagi - posting muntoo. Seberapa besar potensi kesalahan? Dalam contohnya adalah gambar yang diskalakan bukan dalam 2 tetapi dalam 75 langkah dan perubahan kualitas terlihat tetapi tidak dramatis. Dalam 75 langkah! Apa yang terjadi ketika gambar diskalakan hingga 25% dalam Ps CS4 (bicubic, sampel muntoo, diskalakan dalam satu dan dua langkah sesuai)?

dalam satu langkah dalam dua langkah

Adakah yang bisa melihat perbedaannya? Tetapi perbedaannya ada di sana:

#: gm compare -metric mse one-step.png two-step.png Image Difference (MeanSquaredError):
           Normalized    Absolute
          ============  ==========
     Red: 0.0000033905        0.0
   Green: 0.0000033467        0.0
    Blue: 0.0000033888        0.0
   Total: 0.0000033754        0.0

Dan dapat dilihat jika ditandai dengan benar (gm bandingkan -highlight-color purple -file diff.png one-step.png two-step.png):

perbedaan antara penskalaan satu dan dua langkah

1 dan 2 membuat jawaban saya, yang saya harap akan tetap singkat, karena yang lain cukup rumit;).

Itu dia! :) Hakim sendiri.


1
-1 karena ini bukan jawaban nyata. "mungkin ya" ... berdasarkan apa ? "Anda tidak akan dapat melihat perbedaannya" ... situs QA ini ditujukan untuk para profesional desain , yang adalah orang-orang yang akan melihat perbedaan kecil dalam gambar. Jika Anda menghapus teori yang tidak didukung dan pernyataan yang tidak didukung, tidak ada konten lain di pos Anda.
Farray

Berdasarkan pengalaman saya. Sudahkah Anda mencobanya? Profesional yang baik tahu kapan harus menggunakan aproximation alih-alih mencoba menghitung jika warna berbeda dengan sepersekian persen :)
thebodzio

Maksud saya: sudahkah Anda mencoba sampel ulang beberapa incrementaly gambar dan membandingkan hasilnya dengan gambar resampled dalam satu langkah? Saya tidak mematuhi pengalaman Anda.
thebodzio

1
Penjabaran @thebodzio sangat membantu jawaban ini - dan karena downvotes tidak permanen, saya telah menghapus milik saya.
Jari Keinänen
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.