I have been working with the descriptor DESCRIPTOR_MLDB_UPRIGHT.
Since the the descriptor uses 486 bits, 61 bytes are needed and there are two bits that are not used.
In my opinion these two bits should be initialized to a fixed known value, for instance zero.
In fact when using descriptor DESCRIPTOR_MLDB, these initialization is done, but when using the upright version I have not seen where it is done in the code and have seen that these two extra bytes are random (what causes problems for matching)
I think that an easy solution would be to set line 1074 of AKAZEFeatures.cpp to
desc = 0;
I have been working with the descriptor DESCRIPTOR_MLDB_UPRIGHT. Since the the descriptor uses 486 bits, 61 bytes are needed and there are two bits that are not used. In my opinion these two bits should be initialized to a fixed known value, for instance zero. In fact when using descriptor DESCRIPTOR_MLDB, these initialization is done, but when using the upright version I have not seen where it is done in the code and have seen that these two extra bytes are random (what causes problems for matching)
I think that an easy solution would be to set line 1074 of AKAZEFeatures.cpp to desc = 0;