في مجال رسوميات الحاسوب، الترشيح (filtering) هو تمرير صورة من خلال عملية تعالج كل بكسل من بكسلاتها، للحصول على تأثير معين.
شرح تقني
العملية المذكورة أعلاه هي دالة رياضية تأخذ عدداً محدداً من البكسلات كقيم لونية، وتحسب منها قيمة لونية وحيدة جديدة. يتم تطبيق الدالة مرة واحدة على كل بكسل من البكسلات في الصورة المرغوب ترشيحها. في هذه العملية يتم التعامل مع البكسلات كمتجهات لونية ثلاثية الأبعاد (أو رباعية الأبعاد في بعض الأحيان)، حيث يعتبر كل من المكونات اللونية الأساسية (الأحمر، الأخضر، والأزرق) محوراً في الفراغ اللوني (س، ص، ع). قد يكون المرشح مؤلف من دالة خطية واحدة، أو من مجموعة عمليات رياضية غير خطية، أو عملية التفاف.
من أشهر المرشحات في رسوميات الحاسوب مرشح الغباشة (أو التنعيم) (blur)، وله أشكال عديدة يمكن رؤية بعضها من قائمة المرشحات في برنامج أدوبي فوتوشوب، كما أنه يستخدم بكثرة في الرسوميات ثلاثية الأبعاد (انظر قسم الترشيح في الرسم ثلاثي الأبعاد أدناه).
مكونات المرشح
يتكون المرشح من ثلاثة أجزاء تحدد شكل نتيجته النهائية[1][2]. هذه الأجزاء هي:
دالة الترشيح
(filter function)، الدالة الرياضية (أو سلسلة العمليات الرياضية) التي تأخذ قيمة البكسل اللونية من الصورة وتحسب منها قيمة لونية جديدة. إضافةً إلى البكسل الفعلي، فإن الكثير من دوال المرشحات الشائعة تأخذ أيضاً البكسلات المحيطة بالبكسل الفعلي كمدخلات لها. ولكل بكسل تأخذه الدالة معاملاً يحدِّد "وزنه" أو مدى تأثيره ضمن المعادلة. هذه الأوزان تلعب دوراً كبيراً في التأثير النهائي للمرشح، ويتم ترتيبها في مصفوفة تدعى النواة (انظر المرشح القياسي).
النافذة
(filter window)، تحدد عدد البكسلات التي تستقبلها دالة الترشيح. سبق وذكرنا أنه عند معالجة كل بكسل من الصورة يتم أيضاً جلب عدد من البكسلات المحيطة وأخذها بالحسبان. فمثلاً، لو جلبنا محيطاً بعرض بكسل واحد، فإن عدد البكسلات الكلي سيكون 9 (البكسل المركزي، والثمانية بكسلات المحيطة). النافذة يعبر عنها كعرض وارتفاع (فنقول أن النافذة للمرشح هي 3×3 بكسل، مما يعطي المرشح 9 بكسلات كما في المثال السابق). مركز النافذة يكون دائماً عند إحداثيات البكسل الأساسي. لا يسمح بأن يكون حجم النافذة أصغر من بكسل واحد.
النواة
(filter kernel)، تحدِّد معامِلاً رياضياً لكل بكسل في النافذة، بحيث يكون هذا المعامِل أحد مُدخلات تابع الترشيح. عادةً عندما تـُذكَر النواة دون تفصيل، فإنه يقصد نواة تتألف من مصفوفة مُعامِلات يـُضرَب كلّ معامِل منها بالبكسل المقابل له في النافذة، ثم يتم أخذ المجموع كقيمة نهائية (انظر المرشح القياسي). هنا يجدر بالذكر أن المعاملات تحدد بحيث يكون مجموعها يساوي 1. في حال كون المجموع أكبر من 1، فإن الصورة الناتجة ستكون أكثر سطوعاً من الأصل، والعكس صحيح.
المرشح القياسي
فيما يلي الدالة القياسية المستخدمة للترشيح[3]:
حيث x و y هما إحداثيات البكسل المطلوب من الصورة، وَ:
حيث m هي عرض نافذة المرشح، وَبالمثل:
حيث n هي ارتفاع نافذة المرشح.
f تابع يعيد القيمة اللونية للبكسل عند الإحداثي المطلوب من الصورة الأصلية، و w يعيد المعامِل الموافق للبكسل من النواة (لاحظ أن مبدأ الإحداثيات في النواة هو العينة المركزية).
الترشيح في تحجيم الصور
تحجيم الصور هو أحد المجالات التي تعتمد بشدة على الترشيح. في عملية التكبير تكون المشكلة هي إيجاد قيم لونية تملأ البكسلات الجديدة التي لم تكن ضمن الصورة الأصلية. أما في عملية التصغير فإن المشكلة هي تحديد أي البكسلات يجب الإبقاء عليها وأيها يتم إهمالها في الصورة الجديدة التي تحوي عدداً أقل من البكسلات. يجدر بالذكر أن عملية التحجيم تعمل على العرض بشكل مستقل عن الارتفاع، أي أنه من الممكن تحجيم صورة لتكون أضيق وأطول من الأصل في نفس الوقت، مما يعني أن التضييق هو مسألة تصغير على البعد الأفقي، والإطالة هي مسألة تكبير على البعد الشاقولي (وهكذا بالنسبة لبقية الأبعاد إن كانت الصورة مكونة من أكثر من بعدين)[4][5].
يتم تنفيذ التحجيم عن طريق أخذ موقع كل بكسل من الصورة الجديدة، وإيجاد الموقع الموافق له في الصورة الأصلية. بسبب أن الحجمين مختلفين، فإن هذا الموقع قد لا يقع على إحداثيات صحيحة في الصورة الأصلية. مثلاً، نريد تحجيم صورة بأبعاد 10×10 بكسل إلى 50×50 بكسل. نبدأ بالبكسل الأعلى الأيسر من الصورة ونفرض أنه هو مبدأ الإحداثيات لدينا (0،0). الآن البكسل التالي (الثاني من اليسار) له الإحداثيات (1،0) في الصورة الجديدة، أما في الصورة الأصلية فإن إحداثياته ستكون (0.2،0) وذلك بتطبيق مبدأ النسبة والتناسب. والبكسل الثالث في الصورة الجديدة سيكون في الإحداثيات (0.4،0) في الصورة القديمة، وهكذا. أما البكسل رقم (30،0) في الصورة الجديدة فإنه يطابق البكسل (6،0) من الصورة الأصلية، وهو عدد صحيح بدون أي كسور، وهنا الوضع واضح ويمكننا أخذ القيمة اللونية للبكسل الجديد من الصورة الأصلية بشكل مباشر. لكن في حالة وجود كسور في إحداثي البكسل، فإنه يلجأ إلى واحد من أساليب الترشيح التالية لحل المسألة:
ترشيح النقطة الأقرب
(Nearest-Point Filtering) وهو تقريب الإحداثي إلى أقرب عدد صحيح، ومن ثم قراءة القيمة اللونية عند ذلك الإحداثي ووضعها في البكسل في الصورة الجديدة.
الترشيح الخطي
(Linear Filtering) وهو أخذ البكسلين المحيطين بالإحداثي، والدمج بينهما بنسبة تطابق الجزء الكسري من الإحداثي. مثلاً، للإحداثي 30.4 نأخذ البكسل رقم 30 ورقم 31، وندمج بينهما بنسبة 40% إلى 60% على الترتيب. القيمة اللونية الناتجة توضع في الصورة الجديدة. في الصور المسطحة (ثنائية البعد) يتم الدمج بين أربع بكسلات، وفي الصور الحجمية يتم الدمج بين 8 بكسلات.
الترشيح التكعيبي
(Cubic Filtering) وهو نفس مبدأ الترشيح الخطي، إلا أن طريقة الدمج (أو الاستيفاء) تتم على منحني تكعيبي. نتائج هذا الترشيح تختلف عن الترشيح الخطي بأنها تعطي وزناً أكبر للون البكسل الأقرب (وكأنه حل يجمع مزايا ترشيح النقطة الأقرب والترشيح الخطي). تتسم الصور المحجمة بهذا النمط بالوضوح، لأن كمية الألوان الجديدة الداخلة إلى الصورة محدودة.
الترشيح في الرسم ثلاثي الأبعاد
يستخدم الترشيح في الرسوم ثلاثية الأبعاد بشكل واسع، حيث يتم تطبيق الكثير من المرشحات المعروفة (كالغباشة أو زيادة التباين أو إيجاد الحواف) لتحسين الصور النتاجة. إلا أن تحجيم الصور باستخدام مبدأ الترشيح له أهمية كبيرة في الرسوم ثلاثية الأبعاد. إذ أنه يعتبر أمراً أساسياً للتخلص من بعض عيوب الإظهار الناجمة عن عرض الإكساءات بشكل منظوري من خلال الكاميرا التخيلية، حيث أن المجسم المكسي قد يكون قريباً من الكاميرا مما يتطلب إكساءات بحجم أكبر لتظهر التفاصيل الإضافية، أو قد يكون المجسم بعيداً جداً مما يمنع عرض الإكساء بحجمه الأصلي، فيصبح بحاجة إلى تصغير. لذا فإن من أول المرشحات المستخدمة في الرسم ثلاثي الأبعاد هي مرشحات التحجيم، وهي نفسها المرشحات المذكورة أعلاه في قسم تحجيم الصور، مع بعض الإضافات بسبب طبيعة استخدام الإكساءات في الرسم[6]. فيما يلي بعض الأنواع:
الترشيح الخطي الثنائي
(Bilinear Filtering) يعمل على الإكساءات المسطحة (لذلك يدعى ثنائي)، وهو نفس الترشيح الخطي المذكور في قسم تحجيم الصور.
الترشيح الخطي الثلاثي
(Trilinear Filtering) أيضاً يعمل على الإكساءات المسطحة لكن تلك التي تحتوي على طبقات ميب ماب (والتي تُعامَل كبعد ثالث). تتبع هذه الإكساءات نفس مبدأ الترشيح الخطي للصور ثلاثية الأبعاد.
الترشيح الغير متجانس
أو الترشيح المتباين (Anisotropic Filtering)، هو امتداد للترشيح الخطي الثلاثي. إلا أنه يُسمح فيه بأخذ كل عينة في النواة من طبقة ميب ماب مختلفة في الإكساء بحسب توزيع العينات على الإكساء بعد إسقاطها من خلال الكاميرا المنظورية.
مرشحات شهيرة
فيما يلي نبذة مبسطة عن بعض أشهر المرشحات الخطية والغير خطية المنتشرة في رسوميات الحاسوب ومعالجة الصور:
غباشة
(Blur) أو تنعيم، ويعمل ببساطة على مبدأ حساب المعدل اللوني لكل بكسل مع البكسلات المحيطة به. حيث يخصص للبكسلات المحيطة أوزان مختلفة تتحكم بشكل الغباشة. النواة التالية هي لمرشح الغباشة وفق منحني غاوس، وبأبعاد 7×7[7][8]:
0.00000067 | 0.00002292 | 0.00019117 | 0.00038771 | 0.00019117 | 0.00002292 | 0.00000067 |
0.00002292 | 0.00078633 | 0.00655965 | 0.01330373 | 0.00655965 | 0.00078633 | 0.00002292 |
0.00019117 | 0.00655965 | 0.05472157 | 0.11098164 | 0.05472157 | 0.00655965 | 0.00019117 |
0.00038771 | 0.01330373 | 0.11098164 | 0.22508352 | 0.11098164 | 0.01330373 | 0.00038771 |
0.00019117 | 0.00655965 | 0.05472157 | 0.11098164 | 0.05472157 | 0.00655965 | 0.00019117 |
0.00002292 | 0.00078633 | 0.00655965 | 0.01330373 | 0.00655965 | 0.00078633 | 0.00002292 |
0.00000067 | 0.00002292 | 0.00019117 | 0.00038771 | 0.00019117 | 0.00002292 | 0.00000067 |
كما يمكن الوصول إلى مؤثرات خاصة كإحساس السرعة أو الغباشة الموجهة وذلك بمجرد تغيير الأوزان في المصفوفة بالشكل الملائم.
خشونة
(Sharpness)، وهو عكس مرشح الغباشة، حيث يحاول إبراز الحواف في الصورة. النواة التالية هي لمرشح خشونة محدود، وبأبعاد 3×3[9]:
0 | -1 | 0 |
-1 | 5 | -1 |
0 | -1 | 0 |
إيجاد الحواف
(Find Edges)، ويعمل بمبدأ مشابه لمرشح الخشونة، إلا أنه يقوم بإزالة كافة معالم الصورة باستثناء الحواف. النواة التالية هي لمرشح إيجاد الحواف بتوزيع لابلاس، وبأبعاد 3×3[10]:
1 | 1 | 1 |
1 | -8 | 1 |
1 | 1 | 1 |
نتوء وبروز
(Emboss)، وهو صورة معدلة من مرشح إيجاد الحواف، بحيث ينتج صوراً تعطي إيحاءً بالتجسيم أو النحت. النواة التالية هي أحد الأمثلة على مرشح النتوء:
0 | 0 | 2 |
0 | -1 | 0 |
-1 | 0 | 0 |
لاحظ أن النواة غير متناظرة. توزيع الأرقام يحدد "زاوية سقوط الضوء" إن صح التعبير. للحصول على الإحساس الحجري للصورة، يتم تطبيق هذا المرشح على نسخة غير ملونة من الصورة، وبعد تطبيق المرشح يتم إضافة القيمة اللونية 0.5 (أو 128 كرقم صحيح) للحصول على اللون الرمادي.
عكس الألوان
(Color Invert)، وهو من أبسط المرشحات، ويعتمد على نواة من بكسل واحد فقط بقيمة -1، وبعد تطبيق المرشح على الصورة يتم إضافة القيمة اللونية 1 (أو 255 كرقم صحيح) لجميع البكسلات.
المرشح المتوسطي
(Median)، وهو مرشح غير خطي (لا يمكن التعبير عنه بمجرد النواة)، يهدف إلى إزالة التشويش من الصورة. حيث يقوم بترتيب القيم اللونية التي تقع في نافذة المرشح بشكل تصاعدي (أو تنازلي، لا فرق) ومن ثم انتقاء القيمة الوسطى في النافذة، ووضعها مباشرة في الصورة. مما يعني أن البكسل التالي سيأخذ القيمة المحدثة للبكسل السابق، وهكذا تستمر العملية على جميع البكسلات.
ألوان مائية
لا يوجد طريقة قياسية حتى الآن لتحويل الصور لتبدو وكأنها مرسومة بالألوان المائية. لكن إحدى أشهر الطرق المعروفة هي تطبيق المرشح المتوسطي عدد من المرات بشكل متتالي، ومن ثم يمكن تكميم القيم اللونية الناتجة، أو تطبيق مرشح إيجاد الحواف لتحديد المناطق اللونية أكثر.
تشتيت
(Diffusion)، وهو مرشح غير خطي يتسبب بجعل الصورة مشتتة عن طريق تبديل أماكن البكسلات ضمن نافذة المرشح بشكل عشوائي. مقدار التشتيت يتعلق بحجم نافذة المرشح. يمكن تمثيل هذا المرشح باستخدام نواة تحوي القيمة 1 في أحد خلاياها فقط، حيث يتم اختيار خلية مختلفة بشكل عشوائي عند كل بكسل من الصورة.
تشويش
(Noise)، وهو مرشح غير خطي يقوم بإضافة طبقة من القيم اللونية العشوائية فوق الصورة لتظهر مشوشة. قد تكون القيم اللونية من درجات اللون الرمادي فقط، أو أبيض وأسود، أو قيم لونية مختلفة. يستعمل هذا التأثير بشكل طفيف لكسر جمود المشاهد وإضفاء بعض الديناميكية إليها.
ملاحظات ومصادر
- Tomas 2008, الصفحة 467
- Gonzales 2001, الصفحة 116
- Gonzales 2001, الصفحة 117
- Tomas 2008, الصفحة 156
- Gonzales 2001, الصفحة 64
- Tomas 2008, الصفحة 157
- Tomas 2008, الصفحة 469
- Gonzales 2001, الصفحة 175
- Gonzales 2001, الصفحة 330
- Gonzales 2001, الصفحة 581