comparison scripts/compute-clearmot.py @ 982:51d8406b2489

corrected bug when not using a homography and using a mask for CLEAR MOT metrics
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Tue, 27 Feb 2018 16:45:46 -0500
parents 196a1fd498ba
children 933670761a57
comparison
equal deleted inserted replaced
981:c3e690c5536e 982:51d8406b2489
31 parser.add_argument('-i', dest = 'videoFilename', help = 'name of the video file (for display)') 31 parser.add_argument('-i', dest = 'videoFilename', help = 'name of the video file (for display)')
32 parser.add_argument('--csv', dest = 'csvOutput', help = 'output comma-separated metrics', action = 'store_true') 32 parser.add_argument('--csv', dest = 'csvOutput', help = 'output comma-separated metrics', action = 'store_true')
33 args = parser.parse_args() 33 args = parser.parse_args()
34 34
35 if args.homographyFilename is not None: 35 if args.homographyFilename is not None:
36 homography = loadtxt(args.homographyFilename) 36 invHomography = inv(loadtxt(args.homographyFilename))
37 else: 37 else:
38 homography = None 38 invHomography = None
39 39
40 objects = storage.loadTrajectoriesFromSqlite(args.trackerDatabaseFilename, 'object') 40 objects = storage.loadTrajectoriesFromSqlite(args.trackerDatabaseFilename, 'object')
41 41
42 if args.maskFilename is not None: 42 if args.maskFilename is not None:
43 maskObjects = [] 43 maskObjects = []
44 from matplotlib.pyplot import imread 44 from matplotlib.pyplot import imread
45 mask = imread(args.maskFilename) 45 mask = imread(args.maskFilename)
46 if len(mask) > 1: 46 if len(mask) > 1:
47 mask = mask[:,:,0] 47 mask = mask[:,:,0]
48 for obj in objects: 48 for obj in objects:
49 maskObjects += obj.getObjectsInMask(mask, inv(homography), 2) # TODO add option to keep object if at least one feature in mask 49 maskObjects += obj.getObjectsInMask(mask, invHomography, 10) # TODO add option to keep object if at least one feature in mask
50 objects = maskObjects 50 objects = maskObjects
51 51
52 annotations = storage.loadBBMovingObjectsFromSqlite(args.groundTruthDatabaseFilename) 52 annotations = storage.loadBBMovingObjectsFromSqlite(args.groundTruthDatabaseFilename)
53 for a in annotations: 53 for a in annotations:
54 a.computeCentroidTrajectory(homography) 54 a.computeCentroidTrajectory(invHomography)
55 55
56 if args.nFramesOffsetAnnotations is not None: 56 if args.nFramesOffsetAnnotations is not None:
57 for a in annotations: 57 for a in annotations:
58 a.shiftTimeInterval(args.nFramesOffsetAnnotations) 58 a.shiftTimeInterval(args.nFramesOffsetAnnotations)
59 59
79 intrinsicCameraMatrix = loadtxt(args.intrinsicCameraMatrixFilename) 79 intrinsicCameraMatrix = loadtxt(args.intrinsicCameraMatrixFilename)
80 else: 80 else:
81 intrinsicCameraMatrix = None 81 intrinsicCameraMatrix = None
82 firstInstant = args.firstInstant 82 firstInstant = args.firstInstant
83 lastInstant = args.lastInstant 83 lastInstant = args.lastInstant
84 cvutils.displayTrajectories(args.videoFilename, objects, {}, inv(homography), firstInstant, lastInstant, annotations = annotations, undistort = args.undistort, intrinsicCameraMatrix = intrinsicCameraMatrix, distortionCoefficients = args.distortionCoefficients, undistortedImageMultiplication = args.undistortedImageMultiplication, gtMatches = gtMatches, toMatches = toMatches) 84 cvutils.displayTrajectories(args.videoFilename, objects, {}, invHomography, firstInstant, lastInstant, annotations = annotations, undistort = args.undistort, intrinsicCameraMatrix = intrinsicCameraMatrix, distortionCoefficients = args.distortionCoefficients, undistortedImageMultiplication = args.undistortedImageMultiplication, gtMatches = gtMatches, toMatches = toMatches)
85 #print('Ground truth matches') 85 #print('Ground truth matches')
86 #print(gtMatches) 86 #print(gtMatches)
87 #print('Object matches') 87 #print('Object matches')
88 #rint toMatches 88 #rint toMatches