Closed pv33 closed 2 years ago
I still have a question about your proposal. Why do we want to derive the clustering classes from board
instead of piece
? I think it can be better managed at piece
level as each piece
has its own clustering features.
And my current idea is as follows:
For each puzzle piece, it will save a clustering feature vector (maybe more than 1 for pieces that have segmented edges) on both color and shape.
For the color feature, we can follow https://www.abtosoftware.com/blog/computer-vision-powers-automatic-jigsaw-puzzle-solver
To match the puzzles according to the colour of their borders the program first extracts the four borders from each puzzle piece. Then averages the colour values of several edge pixels along the perpendicular to the border and saves them in a vector of RGB values that are normalized to the uniform length
For the shape feature, we can use some existing metrics like moments or https://pypi.org/project/similaritymeasures/
Then those features will be used to create an action plan, e.g., in puzzle.manager
, we associate pieces based on features; in puzzle.builder
class, we create corrections based on features.
Here are the results: byColor, byShape, byEdgeType
Start to think through how to design the clustering classes (which are derived from the
puzzle.board
class). They will define additional virtual layers for the puzzle. These will be stored by the solver and acted upon to create plans, but won't be the actual estimated puzzle board. Describe here before advancing. Or describe in some document.