Match scores not split up into "genuine" and "impostor" categories correctly for 1vsall UTFVP database protocol
The 1vsall UTFVP database protocol is supposed to compare every fingervein sample to every other sample. The following is an excerpt from the score file:
10_1_1 59_4 0059/0059_4_1_120511-152502 0.23330404
As can be seen in the line above, the first two items (10_1_1 and 59_4) are not in the same format. In particular, the first item is supposed to be the client ID corresponding to the model and the second item is supposed to be the client ID corresponding to the probe. While the client ID for the probe (59_4) is correct, it seems that the model ID (10_1_1) instead of the client ID (10_1) is written to the score file for the model. This is a problem, because during matching the model and probe IDs will never match, so all the resulting match scores will be placed into the "impostor" category and we will end up with no "genuine" scores. Of course, if we then try to do any evaluation/plotting, the result will be wrong.
The root cause of this issue is the fact that the
client_id_from_model_id function in
bob.bio.base.database is not being overriden inside
bob.bio.vein.database.utfvp, the consequence of which is that the client ID is assumed to be the same as the model ID (which is clearly stated in the base class implementation).