Open pv33 opened 1 year ago
Current Status: Overall system for associating is built out, but the pass by value / pass by reference parts need revision. The first revision was pass by reference everywhere, so always self-associated. The second revision removed that but the template/solution now stays constant. It needs to be updated over time. Naturally, there is some balance between the two that is needed and should be worked out. For now, let's not worry. Get the association and update working out so that the process is correct. We'll fix the rest later.
Simple Solution: The simple solution would probably be to just copy the new "descriptor" over and let the old one expire. This is the refresh template approach. It should be taken care of internally by the feature descriptor via an update member function, or something like that.
TODO: Descriptor update function. The stored descriptor is passed the new descriptor and either (1) returns the updated version or (2) updates itself. In former case we get a potentially new instance. In the latter case, the original instance is updated.
Which should it be: thePiece = thePiece.update(trackedPiece) or thePiece.update(trackedPiece)
the second probably needs some kind of deepTransfer or deepCopy method. I think we should just call it a transfer operation.
The comparisons made in board.Correspondences presumes that the template board is static, but that need not be the case.
Especially in the case of puzzle solving. One would presume that there is the temporal board to board association, plus the static solution board to measured board association. The latter would need to be purely appearance based. The former can be based on distance and appearance. There should be a flag indicating whether the template board should be updated or not. Most likely as part of the Correspondences class.
Perhaps there may be a need for a special Solution board type of correspondences to. Maybe call is SolutionTracker. The core part does board temporal tracking, but also keeps track of the solution correspondences so that the mapping from the current board to the solution board is known. Having a solution board is fundamentally different than performing tracking.
Yunzhi's premise was that data association could be made against a global template and would work. That may ultimately end up being true, but it undermines incremental build up of the code. It might also reduce flexibility and therefore constrain what solutions are explored or permissible.
Get board.Correspondences working out.