# مهندسی نرم افزار > مباحث مرتبط با مهندسی نرم‌افزار > پردازش تصویر (Image Processing) >  بذست آوردن مرکز یک شکل در پردازش تصویر

## JalaliMehr

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

----------


## مصطفی ساتکی

در ابتدا جهت توضیحات تکمیلی به این پست نگاه کنید.
اون روشی که شما ذکر کردید فوق العاده به نویز حساسه و در موارد نویزی دقت جوابش پایینه.
اما روش آماری که برای این کار توصیه میشه استفاده از spatial moment می باشد

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

----------


## mortezamsp

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

----------


## مصطفی ساتکی

بدین صورت

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

----------

