📄 imagepropertiesinitial.m
字号:
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 + -