مدخل الى mt_lut والتدوين البولندي المعكوس

ملاحظة: لن تفهم شيئا اذا لم تكن تعرف اساسيات masktools ولغة avisynth

قد تفكر يوما في كتابة سكربت او فلترة بعض الامور دون مس الاجزاء السليمة او ما شابه

اغلب ادوات masktools  سهلة باستثناء الامور التي لها علاقة بـ lut وبعض الامور الاخرى

التدوينة هذه ستتكلم عن التدوين البولندي المعكوس او ما يسمى RPN مع الافس باستخدام mt_lut او اي فلتر اخر يتعامل بهذه الطريقة

طبعا احسب انكم عارفين بان الفيديو عبارة عن بكسلات او قنوات في اللوما Y والكروما (يوجد اثنين كروما UV) في الفيديو بنظام YUV وكل بكسل او قناة في اللوما او الكروما عبارة عن قيم بنطاق 256 قيمة وان 0 او (او 16 في النطاق التلفازي) تعني اسود و255 (او 235 في النطاق التلفازي) تعني ابيض وما بينهما الوان رمادية، الكروما نفس الشيء باستثناء ان في النطاق التلفازي تكون 240 ، ان كنت تعرف هذا فستعرف ماذا ستكتب في الفقرة القادمة

الان نأتي لـ RPN ، لا اظن اني استطيع شرحه، رابط الويكيبيديا يكفي، ولكن سأعطي امثلة تكفي لمعرفة كيفية التعامل معه

لنفترض ان لدينا ‪ 3 − 4 * 5

الاولوية في العمليات الرياضية كما هو معروف تكون للاقواس ثم الاسس ثم الضرب والقسمة واخيرا الجمع والطرح، لهذا يفضل كتابة العملية اعلاه هكذا لتجنب اللبس والبدأ بالطرح بدل الضرب

‪3 − (4 * 5)

في rpn سيكون ‪3 4 5 * −

لنأخذ الان مثال اخر وهو ‪(3-4)*5

في rpn سيكون ‪3 4 − 5 *

او

5‪ 3 4 − *

في كلا الحالتين تعني

‪(3 4 −) 5 *

الان، اعتقد انكم فقدتم عقولكم قليلا :V ولكن هذا نظام مستخدم وموجود منذ الخمسينات وفي السبعينات والثمانينيات في الكومبيوتر، اظن فائدته الكتابة باختصار والاستغناء عن الاقواس في الرياضيات

طيب، نأتي لموقع بسيط يحول لنا من rpn الى العادي او العكس هنا

مثال حي من سكربت في الافس لفلتر mt_lut (يجمع اسلوب جملة الافس المعتاد مع التدوين البولندي المعكوس)

x 16 < 255 x 75 > 0 255 x 16 - 255 75 16‪ - / * - ? ?
 تعني في لغة الافس
 x < 16 ? 255 : x > 75 ? 0 : 255 - (x - 16) * 255 / (75 - 16)‪

تفاصيل اخرى هنا

لإظهار القيم في avspmod بواسطة التأشير بالماوس على اجزاء الفريم لسهولة معرفة القيم المطلوبة لتركيز الفلترة عليها او تجنب فلترتها، تذهب الى [Options] ثم [Program settings] ثم Video ثم [Customize video status bar] سترى كود طويل، احشر به ‎ %CLR‏ بين ‎%HEX ‏و‎/t/t ‏

سيكون هكذا:-

‪Frame %F / %FC  -  (%T)  %BM      %POS  %HEX %CLR \t\t %Z %Wx%H (%AR)  -  %FR fps  -  %CS

وهنالك ادوات مساعدة ضمن masktools ولكن الافضل ان تعتمد على اليدوي

subtitle(string(mt_polish("x * 5")))
‪"x 5 *"

وهذه لارجاع الrpn الى العادي mt_infix

مثال

MessageClip(mt_infix("x y - 2 - 0 > 255 y x - 2 - 0 > 255 0 ? ?"))
Advertisements

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s