Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void PrzetwarzatorObrazow::CalcMoments8(PrzetwarzatorObrazow * source)
- {
- BITMAPINFOHEADER header = source->getInfo()->bmiHeader;
- int width = header.biWidth;
- int height = header.biHeight;
- std::vector<CPoint> obj = source->selectedObject;
- // u00
- double u00 = obj.size();
- // u10 = /x
- double u10 = 0;
- for (int i = 0; i < obj.size(); i++)
- u10 += obj[i].x;
- u10 /= u00;
- // u01 = /y
- double u01 = 0;
- for (int i = 0; i < obj.size(); i++)
- u01 += (height - obj[i].y);
- u01 /= u00;
- // u20
- double u20 = 0;
- for (int i = 0; i < obj.size(); i++)
- u20 += pow(obj[i].x - u10, 2);
- u20 /= u00;
- // u02
- double u02 = 0;
- for (int i = 0; i < obj.size(); i++)
- u02 += pow((height - obj[i].y) - u01, 2);
- u02 /= u00;
- // u11
- double u11 = 0;
- for (int i = 0; i < obj.size(); i++)
- u11 += (obj[i].x - u10) * ((height - obj[i].y) - u01);
- u11 /= u00;
- // o z kreska w srodku
- double o = 0.5 * atan((2 * u11) / (u20 - u02));
- double pi = 3.14159265;
- double oDegree = o * 180 / pi;
- selectedMoments = CalcMomentsValues(u00, u10, u01, u20, u02, u11, oDegree);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement