Apakah gamma masih penting untuk diperhitungkan?

17

Apakah monitor yang berbeda (termasuk layar ponsel) masih menggunakan fungsi gamma yang sangat berbeda saat menampilkan gambar berwarna? Apakah ada cara standar untuk mewakili warna yang kemudian dapat diterjemahkan sesuai dengan gamma monitor, atau apakah semuanya cukup mirip untuk menghalangi kebutuhan akan hal ini saat ini?

trichoplax
sumber
5
Saya akan mengatakan posting ini tentang topik. Tampaknya sangat terkait dengan Permata GPU 3: Bab 24. Pentingnya Menjadi Linear http.developer.nvidia.com/GPUGems3/gpugems3_ch24.html
Alan Wolfe
5
Apakah ada sesuatu pada topik di tempat lain tidak relevan dengan keputusan ini. Kami hanya perlu tahu apakah itu ada di topik di sini .
trichoplax
1
Saya sengaja memposting pertanyaan batas untuk mengukur di mana perbatasan itu. Harap naikkan sebanyak mungkin ketidakpastian di Meta.
trichoplax
3
Menjadi menyambut tempat lain adalah tidak pernah alasan yang tepat saja untuk menyatakan sesuatu yang luar topik di sini .
Chris berkata Reinstate Monica
2
@robobenklein tidak ada dalam ruang lingkup stack ini menyatakan stack ini untuk grafis 3D secara khusus.
Qix

Jawaban:

15

Ya, sementara banyak layar dan operasi OS menggunakan gamma 2.2, perangkat keras Anda dan hasil perhitungannya masih perlu diperbaiki. Ada juga media khusus seperti siaran TV yang memiliki gamma berbeda. Peralatan sensor seperti kamera sebagian besar linier sehingga perlu disesuaikan. Selain itu, pengguna dapat mengatur sistem mereka ke gamma apa pun yang mereka suka.

Dalam grafik komputer alasan utama untuk memperhitungkan gamma adalah bahwa perhitungan Anda kemungkinan besar dilakukan dalam ruang linear * atau menjumlahkan kontribusi cahaya menjadi tidak perlu rumit. Bagaimanapun gamma benar-benar merupakan penyederhanaan, Anda akan jauh lebih baik dalam melakukan konversi profil ke profil jika memungkinkan untuk menginvestasikan waktu komputasi untuk melakukannya.

Penjelasan matematis

Ini mungkin lebih sederhana untuk dipahami. Monitor Anda memiliki kesalahan tampilan yang tidak masalah jika data Anda sesuai dengan , namun jika Anda ingin menghitung:g(x)g(x)

Sebuah+b+c+d

dan , , , , memiliki kesalahan harus Anda hitung.Sebuahbcdg(x)

g(g-1(Sebuah)+g-1(b)+g-1(c)+g-1(d))

Anda perlu melakukan ini untuk setiap sub elemen berulang kali. Oleh karena itu alih-alih menjalankan transformasi setiap kali Anda mengubah semua sekali menjadi linier dan kemudian sekali kembali.

Dan akhirnya alasan artistik

Ini mungkin terlihat lebih baik dengan gamma yang berbeda. Banyak game memiliki penyesuaian gamma untuk alasan ini.

* Kasus terburuk adalah Anda menganggap perhitungan Anda sebagai linear tetapi tidak memberikan kompensasi untuk karakteristik output monitor nonlinier.

joojaa
sumber
Apakah kita punya lateks?
joojaa
2
Tidak, tapi semoga kita akan di masa depan . Jangan ragu untuk menambahkan jawaban Anda sebagai contoh untuk kebutuhannya.
Chris berkata Reinstate Monica
Jika Anda ingin menunjukkan bagaimana jawaban Anda akan terlihat jika kami memiliki MathJax, untuk membantu menyelesaikan kasus ini, Anda dapat menggunakan mathurl.com .
trichoplax
11

Ruang warna standar de facto untuk gambar digital hari ini adalah sRGB . sRGB adalah asumsi default yang baik jika bekerja dengan layar yang ruang warna pastinya tidak diketahui (yaitu sebagian besar tampilan acak seseorang dapat menjalankan aplikasi Anda), atau gambar yang pengkodean ruang warnanya tidak diketahui (yaitu sebagian besar file gambar acak yang mungkin Anda temui) .

Standar sRGB mendefinisikan kromatisitas CIE dari primer merah, hijau, dan biru murni dan titik putih — dengan kata lain, standar tersebut mendefinisikan apa yang tampak seperti primer dan putih itu relatif terhadap panjang gelombang murni.

sRGB juga mendefinisikan kurva gamma yang digunakan untuk pengkodean nilai RGB. Kurva gamma adalah bagian yang biasanya diperhatikan oleh programmer grafis, karena kita harus mengubah warna bolak-balik antara sRGB dan linear untuk melakukan pencahayaan matematika secara fisik dengan benar. Semua GPU modern memiliki dukungan sRGB bawaan: mereka dapat secara otomatis menerapkan transformasi gamma dalam perangkat keras saat mengambil sampel tekstur, atau menulis nilai piksel ke target yang di-render.

Sejauh menyangkut monitor, dengan yang berkualitas tinggi harus dimungkinkan untuk mengkalibrasi pengaturannya (atau mungkin pra-dikalibrasi) sehingga hasilnya cocok dengan sRGB setepat mungkin. Jika monitor itu sendiri tidak dapat melakukannya, koreksi warna dalam jumlah terbatas juga dapat dilakukan pada GPU selama pemindaian; ada beberapa tabel pencarian perangkat keras kecil yang nilai-nilai RGB dipetakan sebelum dikirim keluar melalui kabel.

Anda mungkin juga menemukan Rec. 709 , yang merupakan ruang warna standar untuk HDTV; ini sangat mirip dengan sRGB, menggunakan pendahuluan dan titik putih yang sama, tetapi kurva gamma yang sedikit berbeda. Beberapa monitor kelas atas menggunakan ruang warna Adobe RGB , yang agak lebih luas dari sRGB; fotografer cenderung menyukai foto-foto itu karena mereka lebih setia menggambarkan seperti apa foto itu ketika dicetak. TV HDR generasi berikutnya yang akan keluar (semoga) dalam beberapa tahun mendatang akan menggunakan Rec. 2020 , yang memiliki gamut besar dan membutuhkan 10 atau 12 bit per komponen daripada 8.

Jadi untuk kembali ke pertanyaan Anda apakah Anda perlu khawatir tentang monitor yang berbeda memiliki gamma yang berbeda: tidak banyak. Untuk permainan dan grafik PC umum, Anda dapat mengasumsikan sRGB, dan memperkirakan bahwa jika pengguna benar-benar peduli dengan akurasi warna, mereka akan memiliki monitor yang baik dan terkalibrasi. Jika Anda memproduksi perangkat lunak untuk fotografer atau media cetak, atau untuk standar video HDR generasi berikutnya, maka Anda mungkin harus mulai mengkhawatirkan ruang warna yang luas.

Nathan Reed
sumber
Monitor gamut yang lebih luas juga akan mulai menjadi hal biasa dalam waktu dekat. Misalnya saya tidak mengkalibrasi ke sRGB pada terburuk seni saya, tetapi profil ke profil konverter membuat gambar masih terlihat sama seperti pada mesin dev saya.
joojaa