یک تصویر را انتخاب میکنی، چند ثانیه صبر میکنی، و بعد همان تصویر با دو زنجیره از دایرههای چرخان دوباره کشیده میشود. این ایدهٔ دموی «اپیسیکلهای فوریه» است: مرز تصویر در مرورگر استخراج میشود، دو سری فوریهٔ مستقل برای مختصات X و Y محاسبه میشوند، و یک قلم روی بوم حرکت میکند تا شکل اولیه بازسازی شود.
دموی زنده را میتوانی همین حالا امتحان کنی: دموی اپیسیکلهای فوریه. هیچ تصویری به سرور ارسال نمیشود و همهٔ پردازشها در مرورگر خودت انجام میشوند.
هر حرکت دورهای را میتوان به مجموع مجموعهای از حرکتهای سادهتر شکست. در سری فوریه، هر جمله یک بردار چرخان است: یک دایره با شعاع مشخص که با سرعت زاویهای ثابت میچرخد. اگر چند بردار چرخان را پشت سر هم قرار دهی، نقطهٔ انتهای زنجیره مسیر پیچیدهای را طی میکند. به این دایرههای تودرتو «اپیسیکل» میگویند؛ همان ایدهای که اخترشناسان قدیم برای توضیح حرکت سیارات به کار میبردند.
تفاوت این دمو با نمایشهای کلاسیک در این است که اینجا دو سری مستقل داریم:
x(t) = a0 + Σ [ak cos(kt) + bk sin(kt)] y(t) = c0 + Σ [ck cos(kt) + dk sin(kt)]
برای هر محور، دامنه و فاز هر هارمونیک جداگانه محاسبه میشود. بعد از مرتبسازی بر اساس دامنه، بزرگترین دایرهها اول رسم میشوند و جزئیات کوچکتر در ادامه اضافه میشوند.
مرورگر ابتدا تصویر را روی یک بوم مخفی میکشد و آن را به حداکثر 300 پیکسل در بعد بزرگتر مقیاس میدهد. سپس مسیر پردازش زیر اجرا میشود:
بهترین نتیجه با PNG شفاف یا سوژهٔ یکدست روی پسزمینهٔ ساده به دست میآید. عکسهای شلوغ هم در بسیاری از موارد کار میکنند، اما مرز استخراجشده ممکن است بخشی از پسزمینه را هم شامل شود.
در نمایش تکزنجیرهای، یک سری فوریهٔ مختلط کل مسیر دو بعدی را میسازد. اینجا اما دو سری واقعی و مستقل داریم: یکی برای X و یکی برای Y. زنجیرهٔ افقی بالای بوم مختصات X را تولید میکند و زنجیرهٔ عمودی سمت چپ مختصات Y را. از انتهای هر زنجیره یک خط راهنمای نقطهچین رسم میشود و محل تلاقی آن دو، نقطهٔ قلم است.
این تقسیمبندی عمدی است: اگر جای X و Y عوض شود، تقاطع خطوط راهنما به لبهٔ بوم منتقل میشود و شکل درست رسم نمیشود. با چیدمان فعلی، خط عمودی از زنجیرهٔ بالا و خط افقی از زنجیرهٔ کناری دقیقاً روی نقطهٔ رسم به هم میرسند.
ضرایب با تبدیل فوریهٔ گسسته روی همان 1000 نقطه محاسبه میشوند. برای هر هارمونیک، دامنه و فاز ذخیره میشود و هارمونیکها بر اساس دامنه نزولی مرتب میشوند. جملهٔ Nyquist که در انتهای طیف قرار دارد، ضریب ویژهٔ خودش را دارد تا بازسازی در N=500 دقیقاً کامل شود.
خطای نمایشدادهشده، RMS مسیر تقریبی نسبت به شعاع RMS مسیر اصلی است. یعنی فقط فاصلهٔ هندسی مهم نیست؛ خطا نسبت به اندازهٔ خود شکل سنجیده میشود. برای یک ستارهٔ پنجپر، مقادیر اندازهگیریشده در دمو چنین بودند:
| تعداد هارمونیک | خطای RMS |
|---|---|
| 5 | 1.79% |
| 10 | 0.75% |
| 80 | 0.09% |
| 500 | 0.00% |
این اعداد به شکل ورودی و کیفیت کانتور بستگی دارند، اما روند کلی همیشه یکسان است: با افزایش N، خطا کاهش مییابد و مسیر به شکل اصلی نزدیکتر میشود.
در پنل سمت چپ، اسلایدر هارمونیک از 1 تا 500 کار میکند و تغییر آن بلافاصله روی هر دو زنجیره اعمال میشود. اسلایدر سرعت، سرعت چرخش را تغییر میدهد. دکمهٔ Pause انیمیشن را متوقف میکند و Clear trace مسیر رسمشده را پاک میکند.
این دمو برای آموزش و آزمایش ساخته شده، نه برای بازسازی دقیق هر عکس. چند نکته را در نظر بگیر:
یک لوگو، یک قلب، یا یک تصویر شفاف را آپلود کن و اسلایدر N را از 5 تا 200 حرکت بده. تفاوت بین یک بیضی ساده و یک شکل کامل را همانجا میبینی. اگر نتیجهٔ جالبی گرفتی، در بخش نظرات همین پست لینکش را بگذار.
No Comments have been Posted.