Bagaimana cara menghitung warna lain dengan cahaya yang dirasakan sama dengan nilai abu-abu yang diberikan?

11

Ini terkait dengan pertanyaan yang saya ajukan di tex.stackexchange , yang memiliki aspek warna. Hasil dari pertanyaan itu adalah gambar berikut:
nilai dan kontras saturasi

Saya telah menggambar serangkaian kotak abu-abu di sebelah kiri, dengan cabang merah berangkat ke kanan. Tujuannya adalah untuk memiliki kotak merah yang berbeda dengan saturasi yang berbeda, tetapi semua dengan nilai abu-abu yang sama. Dalam model warna hsv, semuanya memiliki hal yang sama v, tetapi ketika saya mengonversi gambar menjadi skala abu-abu menggunakan Gimp, mereka tidak dikonversi ke abu-abu yang sama. Juga kesan visual adalah bahwa kotak merah di sebelah kanan lebih gelap daripada yang di sebelah kiri.

Bagaimana saya, diberi abu-abu tertentu, menghitung warna dengan rona tertentu dan nilai abu-abu yang sama (atau, bahkan lebih baik, dengan kesan abu-abu yang sama )? Warna yang digunakan dalam gambar semuanya dihitung, jadi saya lebih suka solusi yang memasukkan perhitungan juga.

Saya mungkin menggunakan istilah yang salah di sini - saya seorang insinyur mesin, jadi tolong perbaiki saya jika perlu, atau minta klarifikasi.


Saran untuk menggunakan ruang warna Lab telah membawa saya pada beberapa kesimpulan:

  • Saya bisa menggunakan nilai model Lab Luntuk mengatur semacam nilai abu-abu untuk warna yang berbeda. Dalam model hsv ini v. Saya tidak yakin apakah saya benar-benar diizinkan untuk membandingkannya, tetapi saya akan melakukannya sampai seseorang mengeluh.

  • Dalam model hsv saya juga dapat mengatur beberapa "warna dasar" (rona), yang tidak dapat saya temukan dalam model Lab.

  • Dalam model hsv, saya memiliki 2 konstanta (pada gambar di atas: h= 0, v= 0,375) dan satu variabel ( s).

  • Hingga saat ini, saya hanya memiliki satu konstanta dalam model Lab. Itu tidak cukup untuk menghasilkan sesuatu yang mirip dengan apa yang sudah saya buat dengan model hsv.

Saya kira sudah waktunya untuk eksperimen.


Selesai! Setelah saya menjalankan kode konversi, itu mudah. Langkah pertama adalah mendefinisikan "target red" di sebelah kanan. Saya menghitung RGB2Lab (255,0,0) dan mengubah nilai L dari hasil ke L yang diinginkan pada gambar (L = 62,5). Warna-warna dihitung menggunakan interpolasi linier dalam ruang Lab dari (L, 0,0) hingga (L, aTarget, bTarget). Hasil:

masukkan deskripsi gambar di sini

Terima kasih!

Christoph
sumber
2
Ada banyak hal yang menurut Anda berguna dalam entri wikipedia, tetapi saya menemukan ( en.wikipedia.org/wiki/HSL_and_HSV#Diskeuntungan ) kemungkinan terkait dengan masalah Anda, khususnya: "Karena HSL dan HSV didefinisikan murni dengan merujuk ke beberapa ruang RGB, mereka bukan ruang warna absolut: untuk menentukan warna secara tepat membutuhkan pelaporan tidak hanya nilai HSL atau HSV, tetapi juga karakteristik ruang RGB yang menjadi dasarnya, termasuk koreksi gamma yang digunakan. "
horatio
Jadi ide yang jelas adalah untuk menentukan ruang warna gamma dan RGB (jika mungkin!) Ketika mencoba konversi.
horatio
2
Ide yang lebih baik adalah RGB → L * a * b * → RGB; karena Lab dirancang untuk mendekati penglihatan manusia dan Lightness adalah salah satu dimensinya.
Jari Keinänen
@koiyu Lab adalah cara saya menyarankan kecocokan abu-abu juga ditemukan. (Anda mengalahkan saya untuk itu! Saya mengejek jawaban di bawah ketika Anda memposting ini.)
Nick
Saya menghindari diskusi problematik tentang persepsi warna :)
horatio

Jawaban:

10

Anda bisa menggunakan ruang warna Lab untuk menemukan pasangan Anda. Warna dengan nilai L yang sama dengan abu-abu target Anda akan terlihat hampir identik ketika dikonversi ke skala abu-abu.

Misalnya, Lab abu-abu dari (50, 0, 0), akan terlihat sangat mirip dengan Lab merah (50, 30, 0), (50, 50, 30), dan (50, 50, 50) ketika dikonversi menjadi abu-abu Sampel di bawah ini menggunakan Photoshop (Gambar> Mode> Grayscale) untuk mengkonversi dari Lab menjadi abu-abu: Warna Lab asli
Dikonversi ke skala abu-abu

Nick
sumber
Itu terlihat seperti sesuatu yang saya inginkan! Terima kasih. Namun, saya tidak bisa menggunakan Lab secara langsung dengan perangkat saya, jadi saya perlu semacam algoritma konversi. Koiyu menyarankan untuk mengubah RGB -> Lab -> RGB, dan saya akan mencoba mengimplementasikannya.
Christoph
1
Saya menemukan yang berikut: http://www.brucelindbloom.com/index.html?Equations.html . Saya tidak tahu apakah konversi itu benar dan saya memiliki kesan bahwa beberapa sihir masih diperlukan.
Christoph
Fungsi konversi ini sepertinya bermanfaat.
Nick
Dan mereka memang terlihat sedikit lebih lurus ke depan ...
Christoph
@Nick Saya bisa melakukan semua perhitungan dengan kalkulator, yang bagus. Namun, saya harus menerapkan konversi model warna dalam dokumen LaTeX saya, yang membuat saya pusing di sana-sini. Setelah selesai, saya akan memposting hasilnya dan menerima jawaban Anda.
Christoph
4

Jadi, saran di atas dari Nick hanya berfungsi untuk 50% Luminance. Jika Anda menerapkan nilai L lainnya yang sama untuk warna yang berbeda, hasil abu-abu berbeda.

Pasti ada matematika untuk itu, tetapi Anda bisa melakukannya di layar dengan mata.

Jika Anda membuat semua warna yang Anda inginkan dan meletakkan elemen abu-abu (ilustrator) atau layer (photoshop) dengan mode transparansi ke "warna" (atau saturasi atau rona), itu akan membuat semua elemen di bawah ini untuk mengungkapkan luminositasnya.

Anda harus memastikan semua warna di bawah elemen abu-abu memiliki saturasi 100, atau Anda akan mendapatkan hasil abu-abu, bukan warna yang bagus.

Sekarang, masalahnya adalah: Dengan semua metode di atas, Anda akan membuat semua elemen "luminositas yang sama di dalam profil RGB yang digunakan", yaitu abu-abu yang sama untuk "perangkat" yang dipilih, dan bagian terburuk: Mata adalah perangkat , dan ada perbedaan.

Anda dapat menunjukkan warna yang sama kepada orang yang berbeda dan mereka tidak akan menemukan "kemerataan" yang sama seperti orang lain.

Tambahkan ke fakta bahwa Anda mengatur warna-warna itu sebagai "luminositas yang sama" pada perangkat yang dipilih, dan tidak hanya semuanya "diperkirakan", segera setelah Anda menunjukkannya di perangkat yang berbeda, efeknya akan gagal, karena setiap perangkat memiliki kemampuan sendiri untuk menerangi elemen merah hijau atau biru dengan intensitas berbeda, sehingga Anda bisa mendapatkan, misalnya elemen red-er.

Juga, jika Anda membuat campuran dari abu-abu ke warna seperti yang disarankan di atas, Anda harus memastikan elemen abu-abu memiliki setidaknya 1/255 minimum di setiap saluran (yaitu tidak lagi abu-abu) atau perangkat lunak akan menganggap asal abu-abu sebagai 0-rona, yang akan memberi Anda nada tengah merah-ish (karena perpaduan antara 0 rona dan warna lain akan setengah jalan menuju merah)

Saya ahli pra-pers sejak tahun 90-an dan saran saya adalah: jika Anda akan menggunakan matematika, Anda harus menggunakan matematika untuk mata (kemampuan visual) serta yang untuk perangkat yang akan ditampilkan angka-angka itu menyala.

Semoga berhasil.

sergio
sumber