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

📄 imageproperties.m

📁 一个跟踪运动羽毛球拍得matlab程序
💻 M
📖 第 1 页 / 共 2 页
字号:

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

% get the distances

PointUpDownDIST               = sqrt((upPointX - downPointX)*(upPointX - downPointX) + (upPointY - downPointY)*(upPointY - downPointY));
PointLeftRightDIST            = sqrt((rightPointX - leftPointX)*(rightPointX - leftPointX) + (rightPointY - leftPointY)*(rightPointY - leftPointY));
Point1515XUpRightDownLeftDIST = sqrt((upRightPoint15X - downLeftPoint15X)*(upRightPoint15X - downLeftPoint15X) + (upRightPoint15Y - downLeftPoint15Y)*(upRightPoint15Y - downLeftPoint15Y));
Point1212XUpRightDownLeftDIST = sqrt((upRightPoint12X - downLeftPoint12X)*(upRightPoint12X - downLeftPoint12X) + (upRightPoint12Y - downLeftPoint12Y)*(upRightPoint12Y - downLeftPoint12Y));
Point3333XUpRightDownLeftDIST = sqrt((upRightPoint33X - downLeftPoint33X)*(upRightPoint33X - downLeftPoint33X) + (upRightPoint33Y - downLeftPoint33Y)*(upRightPoint33Y - downLeftPoint33Y));
Point2121XUpRightDownLeftDIST = sqrt((upRightPoint21X - downLeftPoint21X)*(upRightPoint21X - downLeftPoint21X) + (upRightPoint21Y - downLeftPoint21Y)*(upRightPoint21Y - downLeftPoint21Y));
Point5151XUpRightDownLeftDIST = sqrt((upRightPoint51X - downLeftPoint51X)*(upRightPoint51X - downLeftPoint51X) + (upRightPoint51Y - downLeftPoint51Y)*(upRightPoint51Y - downLeftPoint51Y));

Point1515XUpLeftDownRightDIST = sqrt((upLeftPoint15X - downRightPoint15X)*(upLeftPoint15X - downRightPoint15X) + (upLeftPoint15Y - downRightPoint15Y)*(upLeftPoint15Y - downRightPoint15Y));
Point1212XUpLeftDownRightDIST = sqrt((upLeftPoint12X - downRightPoint12X)*(upLeftPoint12X - downRightPoint12X) + (upLeftPoint12Y - downRightPoint12Y)*(upLeftPoint12Y - downRightPoint12Y));
Point3333XUpLeftDownRightDIST = sqrt((upLeftPoint33X - downRightPoint33X)*(upLeftPoint33X - downRightPoint33X) + (upLeftPoint33Y - downRightPoint33Y)*(upLeftPoint33Y - downRightPoint33Y));
Point2121XUpLeftDownRightDIST = sqrt((upLeftPoint21X - downRightPoint21X)*(upLeftPoint21X - downRightPoint21X) + (upLeftPoint21Y - downRightPoint21Y)*(upLeftPoint21Y - downRightPoint21Y));
Point5151XUpLeftDownRightDIST = sqrt((upLeftPoint51X - downRightPoint51X)*(upLeftPoint51X - downRightPoint51X) + (upLeftPoint51Y - downRightPoint51Y)*(upLeftPoint51Y - downRightPoint51Y));

% add them up 
Distmain = PointUpDownDIST + PointLeftRightDIST;
Dist1515 = Point1515XUpRightDownLeftDIST + Point1515XUpLeftDownRightDIST;
Dist1212 = Point1212XUpRightDownLeftDIST + Point1212XUpLeftDownRightDIST;
Dist3333 = Point3333XUpRightDownLeftDIST + Point3333XUpLeftDownRightDIST;
Dist2121 = Point2121XUpRightDownLeftDIST + Point2121XUpLeftDownRightDIST;
Dist5151 = Point5151XUpRightDownLeftDIST + Point5151XUpLeftDownRightDIST;

% which is the largest?

eccentricity = -1;
doundNess    = -1;

if (Distmain >= Dist1515) & (Distmain >= Dist1212) & (Distmain >= Dist3333)  & (Distmain >= Dist2121)  & (Distmain >= Dist5151)  & (PointUpDownDIST > 0) & (PointLeftRightDIST > 0)   
    %PointUpDownDIST
    %PointLeftRightDIST
    
    if PointUpDownDIST > PointLeftRightDIST
        eccentricity = PointUpDownDIST/PointLeftRightDIST;
        doundNess = 4*area/pi*sqrt(PointUpDownDIST);

        majorDist = PointUpDownDIST;
        minorDist = PointLeftRightDIST;
        
    else
        eccentricity = PointLeftRightDIST/PointUpDownDIST;
        doundNess = 4*area/pi*sqrt(PointLeftRightDIST);
        
        majorDist = PointLeftRightDIST;
        minorDist = PointUpDownDIST;
    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;
        
        
    else
        eccentricity = Point1515XUpLeftDownRightDIST/Point1515XUpRightDownLeftDIST;
        doundNess = 4*area/pi*sqrt(Point1515XUpLeftDownRightDIST);
        
        majorDist = Point1515XUpLeftDownRightDIST;
        minorDist = Point1515XUpRightDownLeftDIST;        
    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;
        
    else
        eccentricity = Point1212XUpLeftDownRightDIST/Point1212XUpRightDownLeftDIST;
        doundNess = 4*area/pi*sqrt(Point1212XUpLeftDownRightDIST);

        majorDist = Point1212XUpLeftDownRightDIST;
        minorDist = Point1212XUpRightDownLeftDIST;        
    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;
        
    else
        eccentricity = Point3333XUpLeftDownRightDIST/Point3333XUpRightDownLeftDIST;
        doundNess = 4*area/pi*sqrt(Point3333XUpLeftDownRightDIST);

        majorDist = Point3333XUpLeftDownRightDIST;
        minorDist = Point3333XUpRightDownLeftDIST;
    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;        
    else
        eccentricity = Point2121XUpLeftDownRightDIST/Point2121XUpRightDownLeftDIST;
        doundNess = 4*area/pi*sqrt(Point2121XUpLeftDownRightDIST);
        
        majorDist = Point2121XUpLeftDownRightDIST;
        minorDist = Point2121XUpRightDownLeftDIST;        
    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;        
    else
        eccentricity = Point5151XUpLeftDownRightDIST/Point5151XUpRightDownLeftDIST;
        doundNess = 4*area/pi*sqrt(Point5151XUpLeftDownRightDIST);
        
        majorDist = Point5151XUpLeftDownRightDIST;
        minorDist = Point5151XUpRightDownLeftDIST;        
    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) = 0;
    arrOutPut(3) = majorDist;
    arrOutPut(4) = minorDist;
    
    arrOutPut(6) = topY;
    arrOutPut(7) = bottomY;
    arrOutPut(8) = leftX;
    arrOutPut(9) = rightX;    
    
        
    Proc = arrOutPut;
   
else
    Proc = -1;
end

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

⌨️ 快捷键说明

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