ahojnnes · GitHub

@ahojnnes

Copy link Copy Markdown

Contributor

Creates simple routine for generating synthetic images that can be successfully matched and reconstructed. This is in preparation for a synthetic end-to-end test of the automatic reconstruction controller.

Keypoints:
keypoints

Inlier matches:
inliers

Reconstruction:
model

@ahojnnes

@B1ueber2y

Copy link Copy Markdown

Contributor

Thanks for the nice feature! However, I have the following two concerns:

  1. Some of the feature patches are occluded by other peaks, depending on the ordering of the synthesis.
  2. Not sure how reliable the matches are, especially given that many descriptors work on gray-scaled images. I suggest to create a test on the resulting matches.

@ahojnnes

Copy link Copy Markdown

Contributor Author

Thanks for the nice feature! However, I have the following two concerns:

  1. Some of the feature patches are occluded by other peaks, depending on the ordering of the synthesis.
  2. Not sure how reliable the matches are, especially given that many descriptors work on gray-scaled images. I suggest to create a test on the resulting matches.

Thanks, these are valid concerns, but the goal is not for producing perfect matches, which requires a much more sophisticated approach and likely isn't even possible in the first place. It also depends on the specific feature detector and matcher implementation / parameters. As per my limited testing, the resulting images produce consistent feature detections/matches and reconstructions. If you have specific suggestions for how to make this better without boiling the ocean, then I am more than happy to improve upon the current implementation.

@ahojnnes

@B1ueber2y

Copy link Copy Markdown

Contributor

Thanks for the nice feature! However, I have the following two concerns:

  1. Some of the feature patches are occluded by other peaks, depending on the ordering of the synthesis.
  2. Not sure how reliable the matches are, especially given that many descriptors work on gray-scaled images. I suggest to create a test on the resulting matches.

Thanks, these are valid concerns, but the goal is not for producing perfect matches, which requires a much more sophisticated approach and likely isn't even possible in the first place. It also depends on the specific feature detector and matcher implementation / parameters. As per my limited testing, the resulting images produce consistent feature detections/matches and reconstructions. If you have specific suggestions for how to make this better without boiling the ocean, then I am more than happy to improve upon the current implementation.

To improve matchability, does it make sense to use a coded pattern for the peak rather than use one single color? We can benefit from these gabor bases as in calibration and structured light, e.g., https://github.com/opencv/opencv_contrib/blob/4.x/modules/structured_light/src/sinusoidalpattern.cpp.

The code looks long and complicated, but with the help of ChatGPT i got something quite minimal (xD): https://chatgpt.com/share/690b6054-da6c-8010-83fa-2e75c93b6e4a

I assume classical feature descriptors would work very well on such patterns.

@B1ueber2y

Copy link Copy Markdown

Contributor

Thanks for the nice feature! However, I have the following two concerns:

  1. Some of the feature patches are occluded by other peaks, depending on the ordering of the synthesis.
  2. Not sure how reliable the matches are, especially given that many descriptors work on gray-scaled images. I suggest to create a test on the resulting matches.

Thanks, these are valid concerns, but the goal is not for producing perfect matches, which requires a much more sophisticated approach and likely isn't even possible in the first place. It also depends on the specific feature detector and matcher implementation / parameters. As per my limited testing, the resulting images produce consistent feature detections/matches and reconstructions. If you have specific suggestions for how to make this better without boiling the ocean, then I am more than happy to improve upon the current implementation.

To improve matchability, does it make sense to use a coded pattern for the peak rather than use one single color? We can benefit from these gabor bases as in calibration and structured light, e.g., https://github.com/opencv/opencv_contrib/blob/4.x/modules/structured_light/src/sinusoidalpattern.cpp.

The code looks long and complicated, but with the help of ChatGPT i got something quite minimal (xD): https://chatgpt.com/share/690b6054-da6c-8010-83fa-2e75c93b6e4a

I assume classical feature descriptors would work very well on such patterns.

Well I realized that if we generate such patterns we would ideally also need to handle the homography, then it can get quite complicated.

B1ueber2y

Copy link Copy Markdown

Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. I agree that this is a nice way to start.

@ahojnnes

Copy link Copy Markdown

Contributor Author

Thanks, I think these are good ideas and an opportunity to improve upon what I hacked together in 1h here. I'll go ahead with what we have now, as it satisfies the use case of creating some simple end-to-end tests without real data (and having synthetic GT camera poses).

@ahojnnes

@ahojnnes

ahojnnes deleted the user/jsch/synth-images branch

November 5, 2025 15:45

Merged

Read the original on github.com ↗