PDA

View Full Version : بذست آوردن مرکز یک شکل در پردازش تصویر



JalaliMehr
پنج شنبه 26 آبان 1390, 08:04 صبح
سلام
جهت بدست آوردن مرکز یک blob روش من بدین صورت است که rectangle ی که blob رو احاطه می کند را بدست آورده و سپس مرکز این recangle رو بعنوان مرکز blob در نظر می گیریم البته در همه موارد جواب صحیح نیست
آیا روش دیگری هم وجود دارد که مرکز را دقیق تر محاسبه نماید

مصطفی ساتکی
جمعه 27 آبان 1390, 12:17 عصر
در ابتدا جهت توضیحات تکمیلی به این پست (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?show=260#q260) نگاه کنید.
اون روشی که شما ذکر کردید فوق العاده به نویز حساسه و در موارد نویزی دقت جوابش پایینه.
اما روش آماری که برای این کار توصیه میشه استفاده از spatial moment می باشد78012

برای background مقدار f(x,y)=0 و برای foreground مقدار f(x,y)=1 می باشد
حال مقادیر m00 و m01 و m10 را با توجه به فرمول مذکور بدست آورید حال برای بدست آوردن مرکز ثقل object از رابطه زیر استفاده نماید ( c مرکز ثقل )
Cx = m10/m00
Cy = m01 / m00

mortezamsp
سه شنبه 01 آذر 1390, 14:33 عصر
x مرکز رو با میانگین x های همه نقاط شکل، و
y مرکز رو با میانگین y های همه نقاط شکل حساب کن.

function [yc, xc] = centermass(image)

[y, x] = find(image == 1);

xc = sum(x) / size(x, 1);
yc = sum(y) / size(y, 1);

end

مصطفی ساتکی
سه شنبه 01 آذر 1390, 18:49 عصر
بدین صورت

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;
}