الخلط والتركيب قبل المضاعفة مقابل ألفا غير المضاعفة

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

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

لنفترض الآن أنك تفعل الشيء الصحيح هنا ، أي أننا نستخدم مزج ألفا مسبقًا ومن ثم فإن معادلة المزج الخاصة بنا للون نسيج ج وقيمة ألفا أ ولون وجهة الخلفية د هي

ص (ج ، أ ، د) = ج + (1-أ) ⋅d

على عكس مزج ألفا الكلاسيكي

Br (c، a، d) = c⋅a + (1-a) ⋅d

لاحظ أنني استخدمت الرمزين p و r للتمييز بين خلط ألفا "قبل المضاعفة" و "العادي". الآن ، لنفترض أيضًا أننا نجري تحجيمًا بسيطًا للنسيج لدينا ، ونبقي الرياضيات بسيطة ، لنفترض أنه مقياس أحادي الأبعاد فقط. بعبارة أخرى ، فإن أي تكسلين متتاليين من نسيجنا سيولد تدرجًا في الألوان والألفا عند التقديم والشكل

S (c) = c1 + x⋅ (c2-c1) S (a) = a1 + x⋅ (a2-a1)

أي أن اللون c سيتغير من c1 إلى c2 مع تغير x من 0 إلى 1 على وحدات بكسل المخزن المؤقت للوجهة d ، كما سيتغير alpha a من a1 إلى a2 خطيًا. حتى الآن ، بسيط جدًا. ودعنا نجعل الأمر أكثر بساطة إذا افترضنا أن الخلفية d هي لون ثابت ، على الرغم من أن كل شيء سنثبت أنه لا يزال يعمل إذا لم نفعل ذلك.

إذن هذه هي الملاحظة الرئيسية لهذه المقالة: نتوقع أن يؤدي تغيير الحجم ثم دمج النسيج في الشاشة (وهو الترتيب الطبيعي للعمليات) إلى نفس الصورة كما لو قمنا بدمج النسيج مع الخلفية أولاً و ثم تحجيم النتيجة. بمعنى آخر ، نريد

Bp (S (cp)، S (a)، d) = S (Bp (cp، a، d))

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

Bp (S (c)، S (a)، d) = S (c) + (1-S (a)) ⋅d = c1 + x⋅ (c2-c1) + d⋅ (1 - a1 - x⋅ (a2-a1)) = c1 + d⋅ (1-a1) + x⋅ [c2 - c1 - d⋅ (a2-a1)] = Bp (c1، a1، d) + x⋅ [c2 - d⋅a2 + d - (c1 - d⋅a1 + d)] = Bp (c1، a1، d) + x⋅ [Bp (c2، a2، d) - Bp (c1، a1، d)] = S ( BP (ج ، أ ، د))

أو باختصار

Bp (S (c)، S (a)، d) = S (Bp (c، a، d))

في الواقع ، فإن مزج وحدات البكسل المقحمة يكافئ إقحام وحدات البكسل الممزوجة. مزيج ألفا المضاعف مسبقًا رائع! رياضيات مزج ألفا المنتظم الآن دعنا نرى لماذا وكيف لا يعمل مزج ألفا المنتظم. تذكر أن معادلات الخلط لدينا هي الآن Br (c، a، d) = c⋅a + (1-a) ⋅d ، لذلك

Br (S (c)، S (a)، d) = S (c) S (a) + d⋅ (1-S (a)) = [c1 + x⋅ (c2-c1)] ⋅ [a1 + x⋅ (a2-a1)] + d⋅ [1 - a1 - x⋅ (a2-a1)] = c1a1 + d⋅ (1-a1) + c1x⋅ (a2-a1) + a1x⋅ (c2 -c1) + x2⋅ (c2-c1) (a2-a1) - x⋅d⋅ (a2-a1) = Br (c1، a1، d) + x⋅ [c1a2 + a

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

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

لنفترض الآن أنك تفعل الشيء الصحيح هنا ، أي أننا نستخدم مزج ألفا مسبقًا ومن ثم فإن معادلة المزج الخاصة بنا للون نسيج ج وقيمة ألفا أ ولون وجهة الخلفية د هي

ص (ج ، أ ، د) = ج + (1-أ) ⋅d

على عكس مزج ألفا الكلاسيكي

Br (c، a، d) = c⋅a + (1-a) ⋅d

لاحظ أنني استخدمت الرمزين p و r للتمييز بين خلط ألفا "قبل المضاعفة" و "العادي". الآن ، لنفترض أيضًا أننا نجري تحجيمًا بسيطًا للنسيج لدينا ، ونبقي الرياضيات بسيطة ، لنفترض أنه مقياس أحادي الأبعاد فقط. بعبارة أخرى ، فإن أي تكسلين متتاليين من نسيجنا سيولد تدرجًا في الألوان والألفا عند التقديم والشكل

S (c) = c1 + x⋅ (c2-c1) S (a) = a1 + x⋅ (a2-a1)

أي أن اللون c سيتغير من c1 إلى c2 مع تغير x من 0 إلى 1 على وحدات بكسل المخزن المؤقت للوجهة d ، كما سيتغير alpha a من a1 إلى a2 خطيًا. حتى الآن ، بسيط جدًا. ودعنا نجعل الأمر أكثر بساطة إذا افترضنا أن الخلفية d هي لون ثابت ، على الرغم من أن كل شيء سنثبت أنه لا يزال يعمل إذا لم نفعل ذلك.

إذن هذه هي الملاحظة الرئيسية لهذه المقالة: نتوقع أن يؤدي تغيير الحجم ثم دمج النسيج في الشاشة (وهو الترتيب الطبيعي للعمليات) إلى نفس الصورة كما لو قمنا بدمج النسيج مع الخلفية أولاً و ثم تحجيم النتيجة. بمعنى آخر ، نريد

Bp (S (cp)، S (a)، d) = S (Bp (cp، a، d))

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

Bp (S (c)، S (a)، d) = S (c) + (1-S (a)) ⋅d = c1 + x⋅ (c2-c1) + d⋅ (1 - a1 - x⋅ (a2-a1)) = c1 + d⋅ (1-a1) + x⋅ [c2 - c1 - d⋅ (a2-a1)] = Bp (c1، a1، d) + x⋅ [c2 - d⋅a2 + d - (c1 - d⋅a1 + d)] = Bp (c1، a1، d) + x⋅ [Bp (c2، a2، d) - Bp (c1، a1، d)] = S ( BP (ج ، أ ، د))

أو باختصار

Bp (S (c)، S (a)، d) = S (Bp (c، a، d))

في الواقع ، فإن مزج وحدات البكسل المقحمة يكافئ إقحام وحدات البكسل الممزوجة. مزيج ألفا المضاعف مسبقًا رائع! رياضيات مزج ألفا المنتظم الآن دعنا نرى لماذا وكيف لا يعمل مزج ألفا المنتظم. تذكر أن معادلات الخلط لدينا هي الآن Br (c، a، d) = c⋅a + (1-a) ⋅d ، لذلك

Br (S (c)، S (a)، d) = S (c) S (a) + d⋅ (1-S (a)) = [c1 + x⋅ (c2-c1)] ⋅ [a1 + x⋅ (a2-a1)] + d⋅ [1 - a1 - x⋅ (a2-a1)] = c1a1 + d⋅ (1-a1) + c1x⋅ (a2-a1) + a1x⋅ (c2 -c1) + x2⋅ (c2-c1) (a2-a1) - x⋅d⋅ (a2-a1) = Br (c1، a1، d) + x⋅ [c1a2 + a

What's Your Reaction?

like

dislike

love

funny

angry

sad

wow