Canny cannot detect valid edges against similar backgrounds

Hi everyone, I’m trying to detect the edges of planar objects on a chessboard. The background and objects have some similar colors, and it seems that Canny and thresholding methods aren’t working for me. Are there any better ways?

  1. origin img
  2. threshold img
  3. What I need

White always overlaps with the background chessboard, making it impossible to detect precise areas.

(Due to the new user restriction, I can only upload one image and merge them. The images are explained according to their numbers.)

and that won’t change.

look into “texture analysis”.