Dapatkah seseorang menjelaskan algoritma di balik lapisan penyesuaian "Hitam dan Putih" di photoshop?
Saya harus mereproduksinya menggunakan C ++ untuk aplikasi yang menekankan piksel non-merah / magenta (ish) dari gambar (dengan toleransi yang dapat dikonfigurasi seperti persen), dan sumber daya ini menunjukkan perilaku yang saya harapkan.
Masih tidak bisa mereproduksi, tetapi saya menemukan petunjuk:
Setiap piksel ditentukan hingga dua kontrol, satu aditif (RGB) dan satu subtractive (CMY).
Jawaban:
Saya meniru algoritma dengan sempurna di MATLAB (Berdasarkan pada @ Ivan Kuckir jawaban):
Perhatikan bahwa konversi dari
vPhotoshopValues
kevCoeffValues
harus dilakukan sebagaivCoeffValues = (vPhotoshopValues - 50) ./ 50
.Karena nilai Photoshop ada di [-200, 300] dan harus dipetakan secara linear ke [-5, 5] dengan
50 -> 0
.Berikut ini adalah perbandingan dengan Photoshop:
Kesalahan maksimum kurang dari 1 dalam rentang [0, 255].
Kode lengkap tersedia di Pemrosesan Sinyal StackExchange GitHub Q688 saya .
sumber
Setiap gambar (warna) terdiri dari komponen RGB. ketika Anda menambahkan (atau mengurangi) nilai konstan ke semua piksel hanya di komponen RED, Anda akan melihat efek yang setara dengan menggerakkan tab RED ke kanan, dan dengan cara yang sama mengurangi komponen RED dengan konstanta akan memiliki efek sebaliknya.
Seperti bijaksana Anda dapat menambah / mengurangi setiap komponen dengan nilai tetap seperti yang dijelaskan. Jika Anda menambah / mengurangi SEMUA komponen RGB dengan nilai yang sama, ini akan setara dengan perubahan kecerahan (pada dasarnya Anda menambah / menghapus warna PUTIH).
Cyan, Blue, Magenta - sesuai dengan transformasi dalam ruang warna CMYK. (Tapi saya kira, Biru dalam ruang warna ini sesuai dengan campuran Cyan dan Kuning. Jadi itu agak rumit. Transformasi pada dasarnya sama untuk semua.
Elemen warna terakhir: {Hue dan Saturation} sesuai dengan operasi yang sama tetapi di sini, gambar pertama-tama ditransformasikan dalam model HSV dan kemudian HUE dan Saturation ditambahkan / dikurangi secara independen.
Saya tidak tahu tentang hubungan yang tepat dari penanda dial ke nomor yang sesuai tetapi Anda dapat mencari tahu dengan mencoba nilai-nilai praktis.
sumber
dotProduct(color, vec3(0.2989, 0.5870, 0.1140)
operasi). 3. Biru tidak "sesuai dengan campuran cyan dan kuning" di ruang warna apa pun.