コード例 #1
0
        public MeasurementModel LoadJson()

        {
            double[][] matrixX;
            double[][] matrixW, matrixY;


            MatrixCal matrixCal = new MatrixCal();

            DistanceAlgo distanceAlgo = new DistanceAlgo();

            MeasurementModel realmeasurements = new MeasurementModel();


            using (StreamReader r = new StreamReader(@"c:\Users\Ruwindhu\Desktop\openpose-1.3.0-win64-gpu-binaries\output\test sub 5_keypoints.json"))
            {
                string            json  = r.ReadToEnd();
                List <BodyPoints> items = JsonConvert.DeserializeObject <List <BodyPoints> >(json);


                BodyDistances bodyDistances = new BodyDistances();

                RatioAlgo ratioAlgo = new RatioAlgo();


                for (var i = 0; i < items.Count; i++)
                {
                    // Pythagoras used to caluate distance between 2 coordinates


                    bodyDistances.d1 = distanceAlgo.distanceBetweenPoints(items[i].x6, items[i].y6, items[i].x3, items[i].y3);

                    bodyDistances.d2 = distanceAlgo.distanceBetweenPoints(items[i].x4, items[i].y4, items[i].x3, items[i].y3);

                    bodyDistances.d3 = distanceAlgo.distanceBetweenPoints(items[i].x4, items[i].y4, items[i].x5, items[i].y5);

                    bodyDistances.d4 = distanceAlgo.distanceBetweenPoints(items[i].x9, items[i].y9, items[i].x3, items[i].y3);

                    bodyDistances.d5 = distanceAlgo.distanceBetweenPoints(items[i].x9, items[i].y9, items[i].x12, items[i].y12);

                    bodyDistances.d6 = distanceAlgo.distanceBetweenPoints(items[i].x9, items[i].y9, items[i].x10, items[i].y10);

                    bodyDistances.d7 = distanceAlgo.distanceBetweenPoints(items[i].x10, items[i].y10, items[i].x11, items[i].y11);



                    matrixX = matrixCal.MatrixCreate(7, 1);


                    matrixX[1][1] = bodyDistances.d1;
                    matrixX[2][1] = bodyDistances.d2;
                    matrixX[3][1] = bodyDistances.d3;
                    matrixX[4][1] = bodyDistances.d4;
                    matrixX[5][1] = bodyDistances.d5;
                    matrixX[6][1] = bodyDistances.d6;
                    matrixX[7][1] = bodyDistances.d7;


                    matrixW = matrixCal.MatrixCreate(7, 7);

                    matrixW = ratioAlgo.matrixwcal();

                    matrixY = matrixCal.MatrixCreate(7, 1);

                    matrixY = matrixCal.MatrixProduct(matrixW, matrixX);



                    realmeasurements.shoulderlength  = matrixY[1][1];
                    realmeasurements.upperArmLegth   = matrixY[2][1];
                    realmeasurements.lowerArmLegth   = matrixY[3][1];
                    realmeasurements.shouldertoHip   = matrixY[4][1];
                    realmeasurements.hipCrossLength  = matrixY[5][1];
                    realmeasurements.kneelegth       = matrixY[6][1];
                    realmeasurements.kneetoToeLength = matrixY[7][1];
                }

                return(realmeasurements);
            }
        }
コード例 #2
0
        public double[][] matrixwcal()
        {
            double[][] matrixw, matrixx, matrixy, matrixxtrapose, matrixpart1val, matrixpart2val, matrixpart3val, matrixI;


            matrixx = matrixCal.MatrixCreate(7, 1);

            matrixy = matrixCal.MatrixCreate(7, 1);

            matrixxtrapose = matrixCal.MatrixCreate(1, 7);

            matrixw = matrixCal.MatrixCreate(7, 7);

            matrixpart1val = matrixCal.MatrixCreate(7, 7);

            matrixpart2val = matrixCal.MatrixCreate(7, 7);

            matrixpart3val = matrixCal.MatrixCreate(7, 7);


            matrixI = matrixCal.MatrixCreate(7, 7);

            matrixx[1][1] = 72.597;
            matrixx[2][1] = 61.504;
            matrixx[3][1] = 56.222;
            matrixx[4][1] = 115.277;
            matrixx[5][1] = 45.382;
            matrixx[6][1] = 89.17;
            matrixx[7][1] = 72.683;

            matrixy[1][1] = 44;
            matrixy[2][1] = 33;
            matrixy[3][1] = 27;
            matrixy[4][1] = 63;
            matrixy[5][1] = 23;

            matrixy[6][1] = 51;
            matrixy[7][1] = 45;

            matrixxtrapose[1][1] = matrixx[1][1];
            matrixxtrapose[1][2] = matrixx[2][1];
            matrixxtrapose[1][3] = matrixx[3][1];
            matrixxtrapose[1][4] = matrixx[4][1];
            matrixxtrapose[1][5] = matrixx[5][1];
            matrixxtrapose[1][6] = matrixx[6][1];
            matrixxtrapose[1][7] = matrixx[7][1];


            matrixI = matrixCal.MatrixIdentity(7);

            matrixpart1val = matrixCal.MatrixProduct(matrixy, matrixxtrapose);

            matrixpart2val = matrixCal.MatrixProduct(matrixx, matrixxtrapose);

            for (int i = 0; i < 7; i++)
            {
                for (int j = 0; j < 7; j++)
                {
                    matrixpart2val[i][j] = matrixpart2val[i][j] + (lamba * matrixI[i][j]);
                }
            }

            matrixpart3val = matrixCal.MatrixInverse(matrixpart2val);

            matrixw = matrixCal.MatrixProduct(matrixpart1val, matrixpart3val);


            return(matrixw);
        }