Alpha مزج صورة حمراء أو زرقاء وخضراء لإنتاج صورة ملونة لأي قيمة RGB؟

StackOverflow https://stackoverflow.com/questions/2030471

سؤال

في الأساس، لدي سياق لا يمكنني فيه صبغة صورة ثابتة، على الرغم من أنني أستطيع تغيير قيمة ألفا. مع بعض التجريب، لقد وجدت أنه يمكنني طبقة نسخة حمراء وأزرق وأخضر من الصورة، مع قيم ألفا محددة، لإنتاج مجموعة واسعة من الألوان. ومع ذلك، أتساءل عما إذا كان من الممكن تحقيق تمثيل RGB حقيقي من خلال هذه الطريقة؟ إذا كان الأمر كذلك، فما هي الصيغة لتحويل قيمة RGB إلى قيم ألفا مختلفة للطبقات الحمراء والأزرق والأخضر.

هل كانت مفيدة؟

المحلول

"المعادلة" الأساسية مزيج ألفا هي:

alpha * (R1,G1,B1) + (1-alpha) * (R2,G2,B2)

عندما يكون لديك ثلاث طبقات مع Alpha، فأنت في الواقع الجمع بين 4 طبقات (الجزء الرابع أسود) لذلك اللون النهائي هو:

alpha1 * (R1,G1,B1) + (1-alpha1) * ( 
   alpha2 * (R2,G2,B2) + (1-alpha2) * (
      alpha3 * (R3,G3,B3) + (1-alpha2) * (0,0,0) ) )

شريطة أن يكون لديك نفس الصورة على كل طبقة و Layer1 هي القناة الحمراء (G1 = B1 = 0) و Layer2 خضراء و Layer3 أزرق تحصل عليه:

(alpha1 * R, (1-alpha1)*alpha2 * G, (1-alpha1)*(1-alpha2)*alpha3 * B)

لحضور بكسل أبيض يمكنك القيام بأي لون ممكن. لحضور بكسل أسود لا يمكنك فعل أي شيء سوى أسود. لأي بكسل آخر، يتم تقييدك بقيم R و G و B.

قل أنك تريد تحقيقه (RD، GD، BD) في بكسل حيث يكون اللون الحالي (R، G، B) ثم عليك اختيار:

alpha1 = Rd/R
alpha2 = Gd/(G*(1-alpha1))
alpha3 = Bd/(B*(1-alpha1)*(1-alpha2))

المشكلة هي أن Alpha يمكن أن يكون عادة ما يكون فقط بين 0 و 1. لذلك، على سبيل المثال، إذا كان RD> R لا يوجد شيء يمكنك القيام به.

يمكنك أن تفعل أفضل إذا كنت تستطيع التحكم في وظيفة المزج (على سبيل المثال، في فوتوشوب).

نصائح أخرى

لا أعتقد أن هذا ممكن، إذا فهمت لك بشكل صحيح.

إذا، للحصول على بكسل معين، تكون القيمة الحمراء لصورتك، على سبيل المثال، 0.5، يمكنك الجمع بين ذلك مع ألفا في النطاق (النموذجي) [0،1] لتشكيل أي قيمة تصل إلى 0.5، ولكن لا يمكنك ذلك أذهب أعلاه، للحصول على 0.6 أو نحو ذلك كقيمة الإخراج.

إذا كنت تتطلع إلى إنشاء 3 طبقات تمتزج معا إضافة ما يصل إلى الصورة الأصلية، فمن الممكن تماما. إليك رابط إلى برنامج نصي ثعبان يسمى الوظائف في متجر Paint Shop Pro للقيام بالأجزاء الصلبة.

http://pixelnook.home.comcast.net/~pixelnook/splittorgb.htm.

إذا كنت بحاجة إلى مزيد من التفاصيل من ذلك، فاترك تعليق وسأحاول ملء ذلك في وقت لاحق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top