⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagepropertiesinitial.m

📁 一个跟踪运动羽毛球拍得matlab程序
💻 M
📖 第 1 页 / 共 2 页
字号:
        minorDist = PointLeftRightDIST;
        
        if sqrt((upPointX - gravX)*(upPointX - gravX) + (upPointY - gravY)*(upPointY - gravY)) > sqrt((downPointX - gravX)*(downPointX - gravX) + (downPointY - gravY)*(downPointY - gravY))
            rotationAngle = 0;
        else
            rotationAngle = 180;    
        end
        
        
    else
        eccentricity = PointLeftRightDIST/PointUpDownDIST;
        doundNess = 4*area/pi*sqrt(PointLeftRightDIST);
        
        majorDist = PointLeftRightDIST;
        minorDist = PointUpDownDIST;
        
        if sqrt((rightPointX - gravX)*(rightPointX - gravX) + (rightPointY - gravY)*(rightPointY - gravY)) > sqrt((lefttPointX - gravX)*(lefttPointX - gravX) + (lefttPointY - gravY)*(lefttPointY - gravY))
            rotationAngle = 90;
        else
            rotationAngle = 270;    
        end        
        
    end
    
elseif (Dist1515 >= Distmain ) & (Dist1515 >= Dist1212) & (Dist1515 >= Dist3333)  & (Dist1515 >= Dist2121)  & (Dist1515 >= Dist5151) & (Point1515XUpRightDownLeftDIST > 0) & (Point1515XUpLeftDownRightDIST > 0)   
    %Point1515XUpRightDownLeftDIST
    %Point1515XUpLeftDownRightDIST
    
    if Point1515XUpRightDownLeftDIST > Point1515XUpLeftDownRightDIST
        eccentricity = Point1515XUpRightDownLeftDIST/Point1515XUpLeftDownRightDIST;
        doundNess = 4*area/pi*sqrt(Point1515XUpRightDownLeftDIST);
        
        majorDist = Point1515XUpRightDownLeftDIST;
        minorDist = Point1515XUpLeftDownRightDIST;
        
        if sqrt((upRightPoint15X - gravX)*(upRightPoint15X - gravX) + (upRightPoint15Y - gravY)*(upRightPoint15Y - gravY)) > sqrt((downLeftPoint15X - gravX)*(downLeftPoint15X - gravX) + (downLeftPoint15Y - gravY)*(downLeftPoint15Y - gravY))
            rotationAngle = 11;
        else
            rotationAngle = 191;    
        end
        
    else
        eccentricity = Point1515XUpLeftDownRightDIST/Point1515XUpRightDownLeftDIST;
        doundNess = 4*area/pi*sqrt(Point1515XUpLeftDownRightDIST);
        
        majorDist = Point1515XUpLeftDownRightDIST;
        minorDist = Point1515XUpRightDownLeftDIST;     
        
        if sqrt((upLeftPoint15X - gravX)*(upLeftPoint15X - gravX) + (upLeftPoint15Y - gravY)*(upLeftPoint15Y - gravY)) > sqrt((downRightPoint15X - gravX)*(downRightPoint15X - gravX) + (downRightPoint15Y - gravY)*(downRightPoint15Y - gravY))
            rotationAngle = 349;
        else
            rotationAngle = 169;    
        end        
        
    end
    
elseif (Dist1212 >= Distmain) & (Dist1212 >= Dist1515)  & (Dist1212 >= Dist3333)  & (Dist1212 >= Dist2121)  & (Dist1212 >= Dist5151)  & (Point1212XUpRightDownLeftDIST > 0) & (Point1212XUpLeftDownRightDIST > 0)      
    %Point1212XUpRightDownLeftDIST
    %Point1212XUpLeftDownRightDIST
    
    if Point1212XUpRightDownLeftDIST > Point1212XUpLeftDownRightDIST
        eccentricity = Point1212XUpRightDownLeftDIST/Point1212XUpLeftDownRightDIST;
        doundNess = 4*area/pi*sqrt(Point1212XUpRightDownLeftDIST);

        majorDist = Point1212XUpRightDownLeftDIST;
        minorDist = Point1212XUpLeftDownRightDIST;
        
        if sqrt((upRightPoint12X - gravX)*(upRightPoint12X - gravX) + (upRightPoint12Y - gravY)*(upRightPoint12Y - gravY)) > sqrt((downLeftPoint12X - gravX)*(downLeftPoint12X - gravX) + (downLeftPoint12Y - gravY)*(downLeftPoint12Y - gravY))
            rotationAngle = 27;
        else
            rotationAngle = 207;    
        end        
        
    else
        eccentricity = Point1212XUpLeftDownRightDIST/Point1212XUpRightDownLeftDIST;
        doundNess = 4*area/pi*sqrt(Point1212XUpLeftDownRightDIST);

        majorDist = Point1212XUpLeftDownRightDIST;
        minorDist = Point1212XUpRightDownLeftDIST;  

        if sqrt((upLeftPoint12X - gravX)*(upLeftPoint12X - gravX) + (upLeftPoint12Y - gravY)*(upLeftPoint12Y - gravY)) > sqrt((downRightPoint12X - gravX)*(downRightPoint12X - gravX) + (downRightPoint12Y - gravY)*(downRightPoint12Y - gravY))
            rotationAngle = 333;
        else
            rotationAngle = 153;    
        end          
        
    end    
    
elseif (Dist3333 >= Distmain) & (Dist3333 >= Dist1515)  & (Dist3333 >= Dist1212 )  & (Dist3333 >= Dist2121)  & (Dist3333 >= Dist5151) & (Point3333XUpRightDownLeftDIST > 0) & (Point3333XUpLeftDownRightDIST > 0)       
    %Point3333XUpRightDownLeftDIST
    %Point3333XUpLeftDownRightDIST
    
    if Point3333XUpRightDownLeftDIST > Point3333XUpLeftDownRightDIST
        eccentricity = Point3333XUpRightDownLeftDIST/Point3333XUpLeftDownRightDIST;
        doundNess = 4*area/pi*sqrt(Point3333XUpRightDownLeftDIST);

        majorDist = Point3333XUpRightDownLeftDIST;
        minorDist = Point3333XUpLeftDownRightDIST;
        
        if sqrt((upRightPoint33X - gravX)*(upRightPoint33X - gravX) + (upRightPoint33Y - gravY)*(upRightPoint33Y - gravY)) > sqrt((downLeftPoint33X - gravX)*(downLeftPoint33X - gravX) + (downLeftPoint33Y - gravY)*(downLeftPoint33Y - gravY))
            rotationAngle = 45;
        else
            rotationAngle = 225;    
        end           
        
    else
        eccentricity = Point3333XUpLeftDownRightDIST/Point3333XUpRightDownLeftDIST;
        doundNess = 4*area/pi*sqrt(Point3333XUpLeftDownRightDIST);

        majorDist = Point3333XUpLeftDownRightDIST;
        minorDist = Point3333XUpRightDownLeftDIST;

        if sqrt((upLeftPoint33X - gravX)*(upLeftPoint33X - gravX) + (upLeftPoint33Y - gravY)*(upLeftPoint33Y - gravY)) > sqrt((downRightPoint33X - gravX)*(downRightPoint33X - gravX) + (downRightPoint33Y - gravY)*(downRightPoint33Y - gravY))
            rotationAngle = 315;
        else
            rotationAngle = 135;    
        end          
        
    end
    
elseif (Dist2121 >= Distmain) & (Dist2121 >= Dist1515)  & (Dist2121 >= Dist1212 )  & (Dist2121 >= Dist3333 )  & (Dist2121 >= Dist5151)  & (Point2121XUpRightDownLeftDIST > 0) & (Point2121XUpLeftDownRightDIST > 0)      
    %Point2121XUpRightDownLeftDIST
    %Point2121XUpLeftDownRightDIST

    if Point2121XUpRightDownLeftDIST > Point2121XUpLeftDownRightDIST
        eccentricity = Point2121XUpRightDownLeftDIST/Point2121XUpLeftDownRightDIST;
        doundNess = 4*area/pi*sqrt(Point2121XUpRightDownLeftDIST);

        majorDist = Point2121XUpRightDownLeftDIST;
        minorDist = Point2121XUpLeftDownRightDIST;       
        
        if sqrt((upRightPoint21X - gravX)*(upRightPoint21X - gravX) + (upRightPoint21Y - gravY)*(upRightPoint21Y - gravY)) > sqrt((downLeftPoint21X - gravX)*(downLeftPoint21X - gravX) + (downLeftPoint21Y - gravY)*(downLeftPoint21Y - gravY))
            rotationAngle = 63;
        else
            rotationAngle = 243;    
        end         
        
    else
        eccentricity = Point2121XUpLeftDownRightDIST/Point2121XUpRightDownLeftDIST;
        doundNess = 4*area/pi*sqrt(Point2121XUpLeftDownRightDIST);
        
        majorDist = Point2121XUpLeftDownRightDIST;
        minorDist = Point2121XUpRightDownLeftDIST;     
        
        if sqrt((upLeftPoint21X - gravX)*(upLeftPoint21X - gravX) + (upLeftPoint21Y - gravY)*(upLeftPoint21Y - gravY)) > sqrt((downRightPoint21X - gravX)*(downRightPoint21X - gravX) + (downRightPoint21Y - gravY)*(downRightPoint21Y - gravY))
            rotationAngle = 297;
        else
            rotationAngle = 117;    
        end           
        
    end    
    
elseif (Dist5151 >= Distmain) & (Dist5151 >= Dist1515)  & (Dist5151 >= Dist1212 )  & (Dist5151 >= Dist3333 )  & (Dist5151 >= Dist2121 )  & (Point5151XUpRightDownLeftDIST > 0) & (Point5151XUpLeftDownRightDIST > 0)      
    %Point5151XUpRightDownLeftDIST
    %Point5151XUpLeftDownRightDIST
    
    if Point5151XUpRightDownLeftDIST > Point5151XUpLeftDownRightDIST
        eccentricity = Point5151XUpRightDownLeftDIST/Point5151XUpLeftDownRightDIST;
        doundNess = 4*area/pi*sqrt(Point5151XUpRightDownLeftDIST);

        majorDist = Point5151XUpRightDownLeftDIST;
        minorDist = Point5151XUpLeftDownRightDIST;     
        
        if sqrt((upRightPoint51X - gravX)*(upRightPoint51X - gravX) + (upRightPoint51Y - gravY)*(upRightPoint51Y - gravY)) > sqrt((downLeftPoint51X - gravX)*(downLeftPoint51X - gravX) + (downLeftPoint51Y - gravY)*(downLeftPoint51Y - gravY))
            rotationAngle = 79;
        else
            rotationAngle = 259;    
        end  
        
    else
        eccentricity = Point5151XUpLeftDownRightDIST/Point5151XUpRightDownLeftDIST;
        doundNess = 4*area/pi*sqrt(Point5151XUpLeftDownRightDIST);
        
        majorDist = Point5151XUpLeftDownRightDIST;
        minorDist = Point5151XUpRightDownLeftDIST; 
        
        if sqrt((upLeftPoint51X - gravX)*(upLeftPoint51X - gravX) + (upLeftPoint51Y - gravY)*(upLeftPoint51Y - gravY)) > sqrt((downRightPoint51X - gravX)*(downRightPoint51X - gravX) + (downRightPoint51Y - gravY)*(downRightPoint51Y - gravY))
            rotationAngle = 281;
        else
            rotationAngle = 101;    
        end           
        
    end
    
end    


eccentricity = majorDist/minorDist;
roundNess = 4*area/pi*sqrt(majorDist);


% -------------------------------------------------------------------------------------------------------

initialSymmetry1 = abs(sqrt((leftPointX - gravX) * (leftPointX - gravX) + (leftPointY - gravY) * (leftPointY - gravY)) - sqrt((rightPointX - gravX) * (rightPointX - gravX) + (rightPointY - gravY) * (rightPointY - gravY)));
initialSymmetry2 = abs(sqrt((upRightPoint15X - gravX) * (upRightPoint15X - gravX) + (upRightPoint15Y - gravY) * (upRightPoint15Y - gravY)) - sqrt((upLeftPoint15X - gravX) * (upLeftPoint15X - gravX) + (upLeftPoint15Y - gravY) * (upLeftPoint15Y - gravY)));
initialSymmetry3 = abs(sqrt((upRightPoint12X - gravX) * (upRightPoint12X - gravX) + (upRightPoint12Y - gravY) * (upRightPoint12Y - gravY)) - sqrt((upLeftPoint12X - gravX) * (upLeftPoint12X - gravX) + (upLeftPoint12Y - gravY) * (upLeftPoint12Y - gravY)));
initialSymmetry4 = abs(sqrt((upRightPoint33X - gravX) * (upRightPoint33X - gravX) + (upRightPoint33Y - gravY) * (upRightPoint33Y - gravY)) - sqrt((upLeftPoint33X - gravX) * (upLeftPoint33X - gravX) + (upLeftPoint33Y - gravY) * (upLeftPoint33Y - gravY)));
initialSymmetry5 = abs(sqrt((upRightPoint21X - gravX) * (upRightPoint21X - gravX) + (upRightPoint21Y - gravY) * (upRightPoint21Y - gravY)) - sqrt((upLeftPoint21X - gravX) * (upLeftPoint21X - gravX) + (upLeftPoint21Y - gravY) * (upLeftPoint21Y - gravY)));
initialSymmetry6 = abs(sqrt((upRightPoint51X - gravX) * (upRightPoint51X - gravX) + (upRightPoint51Y - gravY) * (upRightPoint51Y - gravY)) - sqrt((upLeftPoint51X - gravX) * (upLeftPoint51X - gravX) + (upLeftPoint51Y - gravY) * (upLeftPoint51X - gravY)));
initialSymmetry7 = abs(sqrt((downRightPoint15X - gravX) * (downRightPoint15X - gravX) + (downRightPoint15Y - gravY) * (downRightPoint15Y - gravY)) - sqrt((downLeftPoint15X - gravX) * (downLeftPoint15X - gravX) + (downLeftPoint15Y - gravY) * (downLeftPoint15Y - gravY)));
initialSymmetry8 = abs(sqrt((downRightPoint12X - gravX) * (downRightPoint12X - gravX) + (downRightPoint12Y - gravY) * (downRightPoint12Y - gravY)) - sqrt((downLeftPoint12X - gravX) * (downLeftPoint12X - gravX) + (downLeftPoint12Y - gravY) * (downLeftPoint12Y - gravY)));
initialSymmetry9 = abs(sqrt((downRightPoint33X - gravX) * (downRightPoint33X - gravX) + (downRightPoint33Y - gravY) * (downRightPoint33Y - gravY)) - sqrt((downLeftPoint33X - gravX) * (downLeftPoint33X - gravX) + (downLeftPoint33Y - gravY) * (downLeftPoint33Y - gravY)));
initialSymmetry10 = abs(sqrt((downRightPoint21X - gravX) * (downRightPoint21X - gravX) + (downRightPoint21Y - gravY) * (downRightPoint21Y - gravY)) - sqrt((downLeftPoint21X - gravX) * (downLeftPoint21X - gravX) + (downLeftPoint21Y - gravY) * (downLeftPoint21Y - gravY)));
initialSymmetry11 = abs(sqrt((downRightPoint51X - gravX) * (downRightPoint51X - gravX) + (downRightPoint51Y - gravY) * (downRightPoint51Y - gravY)) - sqrt((downLeftPoint51X - gravX) * (downLeftPoint51X - gravX) + (downLeftPoint51Y - gravY) * (downLeftPoint51Y - gravY)));

% -------------------------------------------------------------------------------------------------------

boundVal = 50;



if (eccentricity < 1.5) & (area > 500) & (doundNess > 2000) & (initialSymmetry1 < boundVal)  & (initialSymmetry2 < boundVal) & (initialSymmetry3 < boundVal) & (initialSymmetry4 < boundVal) & (initialSymmetry5 < boundVal) & (initialSymmetry6 < boundVal) & (initialSymmetry7 < boundVal) & (initialSymmetry8 < boundVal) & (initialSymmetry9 < boundVal) & (initialSymmetry10 < boundVal) & (initialSymmetry11 < boundVal)

        
    %objectID
    %area
    %doundNess    
    %eccentricity
    %initialSymmetry1
    %initialSymmetry2
    %initialSymmetry3
    %initialSymmetry4
    %initialSymmetry5
    %initialSymmetry6
    %initialSymmetry7
    %initialSymmetry8
    %initialSymmetry9
    %initialSymmetry10
    %initialSymmetry11
    
    
    % -------------------------------------------------------------------------------------------------------
    % now we have the object we need to work on the lence equation now.
    % what is the distance we should keep the camera?

    playingFieldDistance                    = 100 * 1.5;                                % cm = 1.5 meters
    badmintonRacketHeight                   = 23.3;                                     % cm
    delta                                   = 1.15;                                     % Now assuming that we accept error term delta where delta > 1
                                                                                        % h1 = delta * h2

    imageResolution                         = 37.795;                                   % pixels/cm                                                            
    heightImageRacketAtBackPosition         = PointUpDownDIST/imageResolution;                                                 
    
    cameraDistance                          = (playingFieldDistance/(delta-1))*(1 + (heightImageRacketAtBackPosition/badmintonRacketHeight));
    
    cameraDistance                          = cameraDistance/100;                       % now in meters
    
    
    %cameraDistance
  
    % -------------------------------------------------------------------------------------------------------
    
    
    
    % -------------------------------------------------------------------------------------------------------
    arrOutPut = 1:9;

    arrOutPut(1) = objectID;
    arrOutPut(2) = cameraDistance;
    arrOutPut(3) = majorDist;
    arrOutPut(4) = minorDist;
    arrOutPut(5) = rotationAngle;
    
    arrOutPut(6) = topY;
    arrOutPut(7) = bottomY;
    arrOutPut(8) = leftX;
    arrOutPut(9) = rightX;
    
    arrOutPut
    
    Proc = arrOutPut;
   
else
    Proc = -1;
end

% -------------------------------------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -