![]() |
ایده ای برای تبدیل یک مسیر نویزی به مسیر صاف
سلام .
من یک نرم افزار ترکینگ توپ در محیط 2 بعدی دارم .تنها مشکل نرم افزار اینه که مسیر به دست آمده از توپ مقداری نویز مختصات Y دارد برای حل مشکل میخوام حذف نویز رو بعد از ترکینگ انجام بدم و شکل مسیر صاف و صوف بشه .مثلا در شکل زیر میخوام مسیر سمت چپ را به مسیر سمت راست تصویر تبدیل کنم .شما چه راه حلی را پیشنهاد میکنید. http://img4up.com/up2/39433807670336663362.jpg با تشکر |
برای هموارسازی روشهای زیادی موجوده که اگه تو متلب این برنامه رو نوشتین می تونین از توابعش استفاده کنین. تابع smooth. پیش فرضش تابع moving هست اما توابع زیاد دیگری هم داره. می تونی تست کنی ببینی کدوم بهتره برای کارت مثل lowesss , loess , ...
ww1=smooth(X,'moving'); ساده ترین دیدگاه اینه که از مقادیر اطراف برای هر کدوم از داده هات استفاده کنی و ازش میانگین گیری کنی.(میانگین گیری به صورت محلی) این میانگین گیری می تونه با روش میانگین گیری گوسی یا روش ساده متوسط گیری معمولی انجام بشه. موفق باشی |
باتشکر از پاسخ شما.
اما متاسفانه من برنامه رو با c++ نوشتم . به نظر شما رگرسیون ساده خطی میتونه این مشکل رو حل کنه؟ |
نه فکر نکنم. چون رگرسیون خطی تنها می تونه خط برازش یا همون فیت کنه. بنابراین کل داده ها با یک خط جایگزین میشه. همچنین اگه مسیرو به چند زیر مسیر تقسیم کنی و برای هرکدومش این کارو بکنی، مسیرت تبدیل میشه به چند خط شکسته که مناسب نیست چرا که انحناهاشو از دست میده و فرم بدی میگیره. می تونی از مدلهای پیچیده تر استفاده کنی. حتما تو c++ هم کتابخونه هایی برای هموارسازی وجود داره مثلا opencv . یه چندتا اسم توابع هم گذاشتم که می تونی از اونا استفاده کنی ولی اگه می خوای کدشو خودت بنویسی همون طوری که گفتم می تونی برای هر مختصات مسیرت بر اساس یه پنجره، از مختصات مسیر اطرافش استفاده کنی و میانگین گیری کنی. یعنی برای یه نقطه که مثلا در مختصات 20و30 قرار گرفته روی مسیرت بخوای مختصاتشو هموار کنی می تونی از همسایه هاش استفاده کنی که مثلا 20 نقطه در مسیر که نزدیکترین نقاط به این نقطه 20و30 است به همراه خود این نقطه و ازشون میانگین گیری کنی و نتیجه رو بجای 20و30 بگذاری. که مثلا میشه 21و32 و این کارو برای تک تک نقاط انجام بدی. هر چه اندازه پنجرت بزرگتر باشه نقاط بیشتر به هم شبیه میشند و مسیرت بیشتر هموار میشه. می تونی عمل میانگین گیری رو به صورت معمولی انجام بدی یعنی جمع نقاط تقسیم بر تعدادش یا اونو وابسته به فاصله نقاط از نقطه موردنظرت که می خوای اونو تغییر بدی بکنی. مثلا نقاطی که دورتر قرار گرفته اند نسبت به نقطه موردنظرت وزن کمتری در محاسبه میانگین داشته باشند و خود نقطه موردنظرت بیشترین وزنو داشته باشه که جواب بهتری نسبت به روش معمولی میده. این معیارو می تونی به صورت تابع exp تعریف کنی. یه سرچی بزن gaussian smoothing
|
زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۰۱:۱۰ قبل از ظهر ميباشد. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.