بحاجة الى مزيد من طمس مختلفة

صورة ضبابية مع مرشح Gaussian Blur يستخدم على نطاق واسع في مجموعة واسعة من المهام. لكن في بعض الأحيان تريد تنوعًا أكبر بقليل من مرشح واحد فقط لجميع المناسبات ، حيث يمكن لمعلمة واحدة فقط أن تضبط نفسها - حجمها. في هذه المقالة ، سوف نلقي نظرة على العديد من التطبيقات الضبابية الأخرى.


مقدمة


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

يُطلق على المرشح اسم Gaussian لأنه مبني على وظيفة تُعرف باسم Gaussian ، ex2 :



يتم الحصول على نسخة ثنائية الأبعاد من خلال دورانها حول المحور الإحداثي ، e(x2+y2) :



هنا لكل زوج من الإحداثيات (س،ذ)س،ذ يتم حساب المسافة إلى المركز من خلال الصيغة  sqrtx2+y2 ، والتي يتم تمريرها كوسيطة للدالة الغوسية - وكما ترون بسهولة ، e left( sqrtx2+y2 right)2 خفضت إلى e(x2+y2) .

مصفوفة مبنية على قطعة [3.3] ومع وجود مستوى معين من أخذ العينات ، سيبدو كما يلي:

\ left (\ start {array} {ccccccc} 1.52 \ times 10 ^ {- 8} & 2.26 \ times 10 ^ {- 6} & 0.0000454 & 0.000123 & 0.0000454 & 2.26 \ times 10 ^ {- 6} & 1.52 \ الأوقات 10 ^ {- 8} \\ 2.26 \ times 10 ^ {- 6} & 0.000335 & 0.00674 & 0.01834 & 0.00674 & 0.000335 & 2.26 \ times 10 ^ {- 6} \\ 0.0000454 & 0.00674 & 0.135 & 0.368 & 0.135 & 0.00674 & 0.0000454 \\ 0.000123 & 0.0183 & 0.368 & 1.00 & 0.368 & 0.0183 & 0.000123 \\ 0.0000454 & 0.00674 & 0.135 & 0.368 & 0.135 & 0.00674 & 0.0000454 \\ 2.26 \ times 10 ^ {- 6} & 0.000335 & 0.00674 & 0.0183 & 0.00674 & 0.000335 & 2.26 \ times 10 ^ {- 6} \\ 1.52 \ times 10 ^ {- 8} & 2.26 \ times 10 ^ {- 6} & 0.0000454 & 0.000123 & 0.0000454 & 2.26 \ times 10 ^ { -6} & 1.52 \ times 10 ^ {- 8} \\ \ end {array} \ right)

\ left (\ start {array} {ccccccc} 1.52 \ times 10 ^ {- 8} & 2.26 \ times 10 ^ {- 6} & 0.0000454 & 0.000123 & 0.0000454 & 2.26 \ times 10 ^ {- 6} & 1.52 \ الأوقات 10 ^ {- 8} \\ 2.26 \ times 10 ^ {- 6} & 0.000335 & 0.00674 & 0.01834 & 0.00674 & 0.000335 & 2.26 \ times 10 ^ {- 6} \\ 0.0000454 & 0.00674 & 0.135 & 0.368 & 0.135 & 0.00674 & 0.0000454 \\ 0.000123 & 0.0183 & 0.368 & 1.00 & 0.368 & 0.0183 & 0.000123 \\ 0.0000454 & 0.00674 & 0.135 & 0.368 & 0.135 & 0.00674 & 0.0000454 \\ 2.26 \ times 10 ^ {- 6} & 0.000335 & 0.00674 & 0.0183 & 0.00674 & 0.000335 & 2.26 \ times 10 ^ {- 6} \\ 1.52 \ times 10 ^ {- 8} & 2.26 \ times 10 ^ {- 6} & 0.0000454 & 0.000123 & 0.0000454 & 2.26 \ times 10 ^ { -6} & 1.52 \ times 10 ^ {- 8} \\ \ end {array} \ right)


أو ، إذا نظرنا إلى قيم عناصر المصفوفة على أنها مستوى سطوع ، مثل هذا:



فيما يتعلق بمعالجة الإشارات ، يُطلق على ذلك الاستجابة النبضية ، لأن هذا هو بالضبط ما ستظهره نتيجة الالتواء لهذا الفلتر مع دفعة واحدة (في هذه الحالة ، بكسل).

في البداية ، يتم تعريف Gaussian على فاصل لانهائي. ولكن نظرًا لحقيقة أنه يتحلل بسرعة كبيرة ، فمن الممكن أن يستبعد من الحسابات القيم القريبة من الصفر - لأنها لا تزال لن تؤثر على النتيجة. في التطبيقات الحقيقية ، يعد تطبيع القيمة ضروريًا أيضًا حتى لا يتغير سطوع الصورة بعد الالتفاف ؛ وفي حالة عدم وضوح الصورة التي يكون لكل بكسل فيها نفس اللون ، يجب ألا تتغير الصورة نفسها.

للراحة ، غالبًا ما يستخدم التطبيع في الإحداثيات ، من خلال إدخال معلمة إضافية  سيجماسيجما (اقرأ باسم "سيغما") - للنظر في حجة في النطاق [1،1]، و  سيجماسيجما يحدد نسبة ضغط غاوسي:

 frace fracx2+y22 sigma22 pi sigma2


تطبيع المفرق 2 pi sigma2 تم الحصول عليها هنا بشكل تحليلي من خلال جزء لا يتجزأ محدد في اللانهاية:

 int infty infty int infty inftye fracx2+y22 sigma2dxdy=2 pi sigma2

،


بسبب حقيقة أن المساواة تحمل e left(x2+y2 right)=ex2ey2 يمكن تنفيذ عدم وضوح Gaussian بالتتابع ، أولاً في الصفوف ثم في الأعمدة - مما يتيح لك توفير الكثير من العمليات الحسابية. في هذه الحالة ، من الضروري استخدام صيغة التطبيع للحالة أحادية البعد -

 frace fracx22 sigma2 sqrt2 pi sigma2



ابدأ


بالنسبة للمرشح التعسفي ، نحتاج أولاً إلى تحديد وظيفة التوهين الخاصة بنا من متغير واحد وو ، حيث يتم الحصول على وظيفة اثنين من المتغيرات بالتناوب عن طريق استبدال x على  sqrtx2+y2 اين x و ذذ هذه هي إحداثيات عنصر المصفوفة في النطاق (1،1)دولا،دولا ، والذي يستخدم بعد ذلك لملء عناصر المصفوفة. لن يتم النظر في التطبيع بشكل تحليلي ، ولكن يكون ملخصًا مباشرًا لجميع عناصر المصفوفة - هذا أبسط وأكثر دقة - لأنه بعد التقدير ، تصبح الوظيفة "ضعيفة" وستتوقف قيمة التطبيع على مستوى التقدير.

في حالة ترقيم عناصر المصفوفة من البداية ، فإن الإحداثيات x او ذذ يتم حسابها بواسطة الصيغة

 frac2indexsize11


اين مؤشر الدولار - الرقم التسلسلي للعنصر في الصف أو العمود ، و حجم $ $ - العدد الإجمالي للعناصر.

على سبيل المثال ، في المصفوفة 5 في 5 ، سيبدو كما يلي:

\ left (\ start {array} {ccccc} f (-1، -1) & f \ left (- \ frac {1} {2}، - 1 \ right) & f (0، -1) & f \ left (\ frac {1} {2}، - 1 \ right) & f (1، -1) \\ f \ left (-1، - \ frac {1} {2} \ right) & f \ left (- \ frac {1} {2} ، - \ frac {1} {2} \ right) & f \ left (0 ، - \ frac {1} {2} \ right) & f \ left (\ frac { 1} {2} ، - \ frac {1} {2} \ right) & f \ left (1 ، - \ frac {1} {2} \ right) \\ f (-1.0) & f \ left (- \ frac {1} {2} ، 0 \ right) & f (0،0) & f \ left (\ frac {1} {2} ، 0 \ right) & f (1،0) \\ f \ left (-1 ، \ frac {1} {2} \ right) & f \ left (- \ frac {1} {2} ، \ frac {1} {2} \ right) & f \ left (0 ، \ frac {1} {2} \ right) & f \ left (\ frac {1} {2} ، \ frac {1} {2} \ right) & f \ left (1 ، \ frac {1} {2 } \ right) \\ f (-1،1) & f \ left (- \ frac {1} {2} ، 1 \ right) & f (0،1) & f \ left (\ frac {1} { 2} ، 1 \ right) & f (1،1) \\ \ end {array} \ right)

\ left (\ start {array} {ccccc} f (-1، -1) & f \ left (- \ frac {1} {2}، - 1 \ right) & f (0، -1) & f \ left (\ frac {1} {2}، - 1 \ right) & f (1، -1) \\ f \ left (-1، - \ frac {1} {2} \ right) & f \ left (- \ frac {1} {2} ، - \ frac {1} {2} \ right) & f \ left (0 ، - \ frac {1} {2} \ right) & f \ left (\ frac { 1} {2} ، - \ frac {1} {2} \ right) & f \ left (1 ، - \ frac {1} {2} \ right) \\ f (-1.0) & f \ left (- \ frac {1} {2} ، 0 \ right) & f (0،0) & f \ left (\ frac {1} {2} ، 0 \ right) & f (1،0) \\ f \ left (-1 ، \ frac {1} {2} \ right) & f \ left (- \ frac {1} {2} ، \ frac {1} {2} \ right) & f \ left (0 ، \ frac {1} {2} \ right) & f \ left (\ frac {1} {2} ، \ frac {1} {2} \ right) & f \ left (1 ، \ frac {1} {2 } \ right) \\ f (-1،1) & f \ left (- \ frac {1} {2} ، 1 \ right) & f (0،1) & f \ left (\ frac {1} { 2} ، 1 \ right) & f (1،1) \\ \ end {array} \ right)


أو إذا استبعدنا القيم الحدية التي لا تزال صفرية ، فسيتم حساب الإحداثيات بواسطة الصيغة

 frac2indexsize+1size


وسوف تتخذ المصفوفة تبعا لذلك

\ left (\ start {array} {ccccc} f \ left (- \ frac {4} {5} ، - \ frac {4} {5} \ right) & f \ left (- \ frac {2} { 5} ، - \ frac {4} {5} \ right) & f \ left (0 ، - \ frac {4} {5} \ right) & f \ left (\ frac {2} {5} ، - \ frac {4} {5} \ right) & f \ left (\ frac {4} {5} ، - \ frac {4} {5} \ right) \\ f \ left (- \ frac {4} {5 }، - \ frac {2} {5} \ right) & f \ left (- \ frac {2} {5}، - \ frac {2} {5} \ right) & f \ left (0، - \ frac {2} {5} \ right) & f \ left (\ frac {2} {5} ، - \ frac {2} {5} \ right) & f \ left (\ frac {4} {5} ، - \ frac {2} {5} \ right) \\ f \ left (- \ frac {4} {5} ، 0 \ right) & f \ left (- \ frac {2} {5} ، 0 \ right ) & f (0،0) & f \ left (\ frac {2} {5} ، 0 \ right) & f \ left (\ frac {4} {5} ، 0 \ right) \\ f \ left ( - \ frac {4} {5} ، \ frac {2} {5} \ right) & f \ left (- \ frac {2} {5} ، \ frac {2} {5} \ right) & f \ left (0 ، \ frac {2} {5} \ right) & f \ left (\ frac {2} {5} ، \ frac {2} {5} \ right) & f \ left (\ frac {4} {5} ، \ frac {2} {5} \ right) \\ f \ left (- \ frac {4} {5} ، \ frac {4} {5} \ right) & f \ left (- \ frac {2} {5} ، \ frac {4} {5} \ right) & f \ left (0 ، \ frac {4} {5} \ right) & f \ left (\ frac {2} {5} ، \ frac {4} {5} \ right) & f \ left (\ frac {4} {5} ، \ frac {4} {5} \ right) \\ \ end {array} \ right)

\ left (\ start {array} {ccccc} f \ left (- \ frac {4} {5} ، - \ frac {4} {5} \ right) & f \ left (- \ frac {2} { 5} ، - \ frac {4} {5} \ right) & f \ left (0 ، - \ frac {4} {5} \ right) & f \ left (\ frac {2} {5} ، - \ frac {4} {5} \ right) & f \ left (\ frac {4} {5} ، - \ frac {4} {5} \ right) \\ f \ left (- \ frac {4} {5 }، - \ frac {2} {5} \ right) & f \ left (- \ frac {2} {5}، - \ frac {2} {5} \ right) & f \ left (0، - \ frac {2} {5} \ right) & f \ left (\ frac {2} {5} ، - \ frac {2} {5} \ right) & f \ left (\ frac {4} {5} ، - \ frac {2} {5} \ right) \\ f \ left (- \ frac {4} {5} ، 0 \ right) & f \ left (- \ frac {2} {5} ، 0 \ right ) & f (0،0) & f \ left (\ frac {2} {5} ، 0 \ right) & f \ left (\ frac {4} {5} ، 0 \ right) \\ f \ left ( - \ frac {4} {5} ، \ frac {2} {5} \ right) & f \ left (- \ frac {2} {5} ، \ frac {2} {5} \ right) & f \ left (0 ، \ frac {2} {5} \ right) & f \ left (\ frac {2} {5} ، \ frac {2} {5} \ right) & f \ left (\ frac {4} {5} ، \ frac {2} {5} \ right) \\ f \ left (- \ frac {4} {5} ، \ frac {4} {5} \ right) & f \ left (- \ frac {2} {5} ، \ frac {4} {5} \ right) & f \ left (0 ، \ frac {4} {5} \ right) & f \ left (\ frac {2} {5} ، \ frac {4} {5} \ right) & f \ left (\ frac {4} {5} ، \ frac {4} {5} \ right) \\ \ end {array} \ right)


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

\ left (\ start {array} {ccc} 1 & 4 & 1 \\ 4 & 20 & 4 \\ 1 & 4 & 1 \\ \ end {array} \ right)

\ left (\ start {array} {ccc} 1 & 4 & 1 \\ 4 & 20 & 4 \\ 1 & 4 & 1 \\ \ end {array} \ right)


عندها سيكون مجموع كل عناصرها 40 ، وبعد التطبيع سوف يأخذ الشكل

\ left (\ start {array} {ccc} \ frac {1} {40} & \ frac {1} {10} & \ frac {1} {40} \\ \ frac {1} {10} & \ frac {1} {2} & \ frac {1} {10} \\ \ frac {1} {40} & \ frac {1} {10} & \ frac {1} {40} \\ \ end {array } \ اليمين)

\ left (\ start {array} {ccc} \ frac {1} {40} & \ frac {1} {10} & \ frac {1} {40} \\ \ frac {1} {10} & \ frac {1} {2} & \ frac {1} {10} \\ \ frac {1} {40} & \ frac {1} {10} & \ frac {1} {40} \\ \ end {array } \ اليمين)


ويصبح مجموع كل عناصره 1.

التوهين الخطي


أولاً ، خذ أبسط وظيفة - الخط:

\ left \ {\ start {array} {ll} 1-x ، & x <1 \\ 0 ، & x \ geqslant 1 \\ \ end {array} \ right.

\ left \ {\ start {array} {ll} 1-x ، & x <1 \\ 0 ، & x \ geqslant 1 \\ \ end {array} \ right.




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



التوهين الخطي الناعم


يمكن أن يؤدي الانتقال الحاد من الخط المائل إلى الوظائف الصفرية إلى تناقض مع الإحساس بالجمال. لحلها ، سوف تساعدنا الوظيفة.

1 fracnxxnn1


فيها نن يحدد "صلابة" الالتحام ، n>1دولادولا . على سبيل المثال ن=3دولاراندولارا نحن نحصل عليها

\ left \ {\ start {array} {ll} 1- \ frac {3 xx ^ 3} {2} ، & x <1 \\ 0 ، & x \ geqslant 1 \\ \ end {array} \ right.

\ left \ {\ start {array} {ll} 1- \ frac {3 xx ^ 3} {2} ، & x <1 \\ 0 ، & x \ geqslant 1 \\ \ end {array} \ right.




والمرشح نفسه سيبدو



التخفيف الزائدي


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



بعد كل العمليات الحسابية والتبسيط ، نحصل على الصيغة

\ left \ {\ start {array} {ll} \ frac {(x-1) ^ 2 (k x + k + 1)} {(k + 1) (k x + 1)} ، & x <1 \\ 0 و & x \ geqslant 1 \\ \ end {array} \ right.

\ left \ {\ start {array} {ll} \ frac {(x-1) ^ 2 (k x + k + 1)} {(k + 1) (k x + 1)} ، & x <1 \\ 0 و & x \ geqslant 1 \\ \ end {array} \ right.


في أي معلمة ك>0دولاكدولا يحدد طبيعة التوهين:



والمرشح نفسه سوف ننظر (ل ك=5دولاكدولا ) كيف



خوخه تأثير


يمكنك الذهاب بطريقة أخرى - لجعل الجزء العلوي من المرشح غير حاد ، ولكن غبي. أسهل طريقة لتنفيذ ذلك هي تعيين وظيفة التخميد كدالة ثابتة:

\ left \ {\ start {array} {ll} 1 ، & x <1 \\ 0 ، & x \ geqslant 1 \\ \ end {array} \ right.

\ left \ {\ start {array} {ll} 1 ، & x <1 \\ 0 ، & x \ geqslant 1 \\ \ end {array} \ right.




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

\ left \ {\ start {array} {ll} \ left (1-x ^ n \ right) ^ 2 ، & x <1 \\ 0 ، & x \ geqslant 1 \\ \ end {array} \ right.

\ left \ {\ start {array} {ll} \ left (1-x ^ n \ right) ^ 2 ، & x <1 \\ 0 ، & x \ geqslant 1 \\ \ end {array} \ right.


متغير المعلمة نن يمكنك الحصول على مجموعة واسعة من خيارات التصفية:

ن=0.5دولا

ندولا


ن=2دولا

ندولا


ن=10دولا

ندولا


ن=50دولا

ندولا



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

\ left \ {\ start {array} {ll} \ left (1-x ^ n \ right) ^ 2 \ left (d + x ^ m \ right) ، & x <1 \\ 0 ، & x \ geqslant 1 \\ \ end {array} \ right.


هنا المعلمة د يحدد ارتفاع المركز ، و مدولا - حدة الانتقال إلى الحواف.
ل d=0.2،m=2،n=10 نحن نحصل عليها



لكن ل d=0،m=12،n=2



الاختلافات غاوس


يمكن أيضًا تعديل وظيفة Gaussian نفسها مباشرةً. الطريقة الأكثر وضوحًا للقيام بذلك هي تحديد المعلِّم - لن نفكر في الأمر الآن ، ولكن نأخذ خيارًا أكثر إثارة للاهتمام:

\ left \ {\ start {array} {ll} e ^ {\ frac {kx ^ 2} {x ^ 2-1}} ، & -1 <x <1 \\ 0 ، وإلا \\ \ end { مجموعة} \ اليمين.


بسبب حقيقة أنه مع x قاسم الوحدة x21 يميل إلى الصفر الكسر  frackx2x21 يميل إلى ناقص اللانهاية ، ويميل الأس نفسه إلى الصفر. وبالتالي تقسيم بواسطة x21 يسمح بضغط مجال تعريف الوظيفة مع ( infty، infty) قبل (1،1)دولا . علاوة على ذلك ، متى س= مساء1دولا بسبب القسمة على صفر ( 121=0 ) قيمة الوظيفة غير محددة ، لكن لها حدين - الحد من جهة (من الداخل) هو صفر ، ومن ناحية أخرى ، اللانهاية:

 undersetx to1 textlime frackx2x21=0


 undersetx to1+ textlime frackx2x21= infty


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

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



الآن يمكنك أن ترى ما حدث:

ك=5دولا


ك=2دولا


ك=0.5دولا


ك=0.1دولا


ك=0.01دولا



اختلافات الشكل


عن طريق تغيير وظيفة الانتقال من إحداثيين إلى واحد  sqrtx2+y2 ، يمكنك الحصول على أشكال أخرى ، وليس مجرد قرص. على سبيل المثال:

f left( frac left|xy right|+ left|x+y right|2 right)




f( left|x right|+ left|y right|)




من خلال الانتقال إلى أرقام معقدة ، يمكنك إنشاء أشكال أكثر تعقيدًا:

f left( frac left| Re left((x+iy)(1) frac03 right) right|+ left| Re left((x+iy)(1) frac13 right) right|+ left| Re left((x+iy)(1) frac23 right) right| sqrt3 right)





f biggl(10 left| Re left((x+iy)(1) frac18 right) right| biggr) cdotf( left|x+iy right|)




f biggl( biggl|5 left|x+iy right|(x+iy) Re biggl( cos left( frac52 arg(x+iy) right) biggr) biggr| biggr) cdotf( left|x+iy right|)





في هذه الحالة ، يجب عليك التأكد من أنه عند تحويل الإحداثيات لا تتجاوز الفاصل الزمني (0،1) - حسنًا ، أو العكس ، أعيد تعريف وظيفة التخميد للقيم السلبية للوسيطة.

بعض الأمثلة المحددة


مقال لن يكون كاملا دون اختبار عملي على صور محددة. نظرًا لعدم وجود عمل علمي لدينا ، فلن نأخذ صورة لينا أيضًا - سنأخذ شيئًا ناعمًا ورقيقًا:



جوسيانا




التخفيف الزائدي




الصليب




حلقة




التوهين في اتجاه واحد




نفس المرشحات ، ولكن للنص:








الخاتمة


وبالمثل ، يمكنك إنشاء عوامل تصفية أكثر تعقيدًا ، بما في ذلك عوامل التوضيح أو الخطوط العريضة ؛ وأيضا تعديل تلك النظر بالفعل.

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

يعتبر إخراج وظائف الالتحام مع الثابت بمزيد من التفصيل هنا . يمكن أيضًا استخدام وظائف النافذة الموضحة هنا كدالة تخفيف - كل ما هو مطلوب هو توسيع الوسيطة c (0،1) إلى (  frac12 ، 1) أو في البداية النظر في وظائف النافذة من خلال الصيغة  frac12 left(f left( fractx+1t1 right)f left( fractx1t1 اليمين) اليمين) .

يمكن تنزيل المستند المصدر Wolfram Mathematica لهذه المقالة هنا .

Source: https://habr.com/ru/post/ar432622/


All Articles