PDA

View Full Version : سنترال مامنت



crackestan
شنبه 22 بهمن 1390, 14:55 عصر
با سلام خدمت تمامیه دوستان عزیز
من میخوام یه سنترال ممانت پیاده سازی کنم ، به عبارتی میخوام روی یک تصویر عملیات سنترال مامنت رو انجام بدم .
نا گفته نماند که قبلا به کمک دوستان عزیز ، کد های بررسی به روی سنترال مامنت رو تهیه کردم ولی میخوام ببینم که دقیقا خروجی سنترال مانت بعد از انجام دستورات و بدست آوردن مرکز ثقل چه چیزی هست ؟
با نرم افزار متلب یه عکس سیاه و سفید رو وارد نرم افزار کردم و دستورات مربوط به سنترال مامنت رو اعمال کردم .
حالا میخوام بدونم خروجی چه چیزی باید باشه ؟

مصطفی ساتکی
یک شنبه 23 بهمن 1390, 23:41 عصر
سلام.
رو تصویر grayscale هم میشه اعمال کرد ولی معمولاً روی تصویر باینری یا همون blob اعمال می کنند.
مثلاً شما سیلوهت یک گلابی رو در نظر بگیرید خود گلابی سفید و پشت زمینه مشکی حال شما میخاید central moment این سیلوهت رو بدست بیارید توجه داشته باشید که تصویر سیلوهت مربوط به گلابی در یک مستطیلی احاطه شده که مرکز این مستطیل مرکز ثقل این شکل نمی باشد با اون کدی که قبلاً گذاشته بودم می تونید central moment رو بدست بیارید .
مومنت اول میانگین
مومنت دوم واریانس
مومنت سوم میزان پراکندگی رو نشون میده اگر مثلاً ته گلابی به سمت راست باشه مثبت میشه و اگه سمت چپ باشه منفی
مومنت چهارم میزان بلندی و لاغری یا کوتاهی و چاقی گلابی را در مقایسه با توزیع نرمال مشخص می سازد.

برای اطلاعات بیشتر به این پست (http://www.7khatcode.com/260/%D9%86%D8%AD%D9%88%D9%87-%D8%A8%D8%AF%D8%B3%D8%AA-%D8%A2%D9%88%D8%B1%D8%AF%D9%86-%D9%85%D9%88%D9%85%D9%86%D8%AA) مراجعه کنید.

crackestan
دوشنبه 24 بهمن 1390, 14:14 عصر
سلام.
رو تصویر grayscale هم میشه اعمال کرد ولی معمولاً روی تصویر باینری یا همون blob اعمال می کنند.
مثلاً شما سیلوهت یک گلابی رو در نظر بگیرید خود گلابی سفید و پشت زمینه مشکی حال شما میخاید central moment این سیلوهت رو بدست بیارید توجه داشته باشید که تصویر سیلوهت مربوط به گلابی در یک مستطیلی احاطه شده که مرکز این مستطیل مرکز ثقل این شکل نمی باشد با اون کدی که قبلاً گذاشته بودم می تونید central moment رو بدست بیارید .
مومنت اول میانگین
مومنت دوم واریانس
مومنت سوم میزان پراکندگی رو نشون میده اگر مثلاً ته گلابی به سمت راست باشه مثبت میشه و اگه سمت چپ باشه منفی
مومنت چهارم میزان بلندی و لاغری یا کوتاهی و چاقی گلابی را در مقایسه با توزیع نرمال مشخص می سازد
با تشکر از راهنمایی شما دوست عزیز
من تصویری که در زیر گذاشتم رو به کمک دستور imread در داخل یه متغیر قرار دادم به صورت زیر :

g=imread('c:\user\mt.jpg
اما دستوراتی که شما دادید رو وقتی کپی پیست میکنم ارور زیر در نرم افزار متلب نمایش داده میشود :

Undefined function or method 'point' for input arguments of type 'char'.
دستوری که کپی میکنم این دستور است :

point centerOfMass(image)
{
M00 = 0;
M10 = 0;
M01 = 0;
for(int i=0;i< image->height;i++)
for(int j=0;j <image->width;j++)
{
M00 += image->pixels(j,i);
M10 += i * image->pixel(j,i);
M01 += j * image->pixel(j,i);
}
point pnt;
pnt.x = M10 / M00;
pnt.y = M01 / M00;
return pnt;
}

آیا باید این دستور رو جای خاصی قرار بدم ؟؟؟ ( چون وقتی این دستور رو دربرنامه قرار میدم ، با ارور بالا مواجه میشم . )
پیشا پیش از راهنماییتان بی نهایت سپاس گذارم
تصویر مورد استفاده برای سنترال مامنت :
http://up.chakme.ir/images/c92egj62zt401e1da2c.jpg

مصطفی ساتکی
دوشنبه 24 بهمن 1390, 21:24 عصر
دوست عزیز من کدی رو که برای شما قرار دادم به زبان C++ بود البته باید کتابخانه های سورس هدر های مربوطه رو هم باید داشته باشید .اون کد تو matlab کامپایل نمیشه. می تونید تو وب سرچ کنید ولی اینطوی بعید می دونم که به نتیجه ای برسید.
به هر حال من یه پیشنهاد دارم شما حداقل زیان matlab رو تا حدودی یاد بگیرید من بعداً بهتون کمک می کنم که اون کد رو چطور به matlab تبدیل کنید.