نحوه بدست آوردن مومنت - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

نحوه بدست آوردن مومنت

+3 امتیاز

سلام.

چطور می تونم مومنت رو تو OpenCV بدست بیاریم .آیا مومنت کاربردهای زیادی داره؟

سوال شده آذر 9, 1392  بوسیله ی farnoosh (امتیاز 8,362)   20 44 59
دوباره تگ گذاری شد بهمن 22, 1392 بوسیله ی BlueBlade

1 پاسخ

+4 امتیاز
 
بهترین پاسخ
یکی از اساسی ترین کارهایی که بایستی تو سیستم های تشخیص الگو در پردازش تصوی انجام بدیم انتخاب یک سری ویژگی های عددی به عنوان وِیژگی از آبجکت ها هستش. بهترین سیستم ها اونایی هستند که بتونند ویژگی های یونیکی از آبجکت ها استخراج کنند
هر چقدر این ویژگی های یونیک تر باشند تو مرحله کلاسفیکیشن براحتی میشه آبجکت ها را از هم متمایز کرد. بعضی از این روش های نسبت به چرخش آبجکت و تغییر اندازه آن  مقادیر ثابتی به ما می دن.
یکی از روش های ساده جهت بررسی 2 تا کنتور یا blob مومنت هستش در واقع از طریق پیمایش کل نقاط کانتور یا کل پیکسل های سفید یک blob و از طریق معادله زیر:
 
 
در فرمول با i مرتیه x و j مرتبه y می باشد و کل پیکسل ها در تصویر پیمایش می گردد.
 
جهت بدست آوردن مومنت در Opencv از تابع زیر استفاده نمایید.
Moments m = moments(difference, false);
Point p1(m.m10/m.m00, m.m01/m.m00);

 

پارامتر اول تصویر یا کانتور می باشد و پارامتر دوم در صورتی true کنید که شما از تصویر ماسک بخواهید مومنت بگیرید.
 
OpenCv با فراخوانی تابع بالا 3 نوع مومنت را محاسبه می نماید.
 مومنت های مکانی(Spatial moment)
مومنت های مرکزی (Centeral moment)
مومنت های مرکزی نرمال (Normalized central moment)
 
نحوه محاسبه مومنت مرکزی
نحوه محاسبه مرکز ثقل:
نحوه محاسبه مومنت مرکزی نرمال:
در کتبخانه Opencv برای کانتور ها از روش green جهت محاسبه مومنت استفاده می گردد.
 
یکی دیگر از مومنت های که می تونید از اون استفاده کنید Hu invarient moment هستش که در واقع ترکیب خطی از مومنت مرکزیه ایده اینجا بدین صورته که با ترکیبه چند تا مومنت های مرکزی ضرایبی ساخته میشه که می تونیم با آنها یک تصویر را در دوران و تغییر
اندازه با ضرایب مشخص داشته باشیم. 

پاسخ داده شده آذر 9, 1392 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
ویرایش شده فروردین 23, 1393 بوسیله ی مصطفی ساتکی
...