I am using OpenImaj to extract features from images and then comparing them using DoGSIFTEngine. As far as I understand, here is the process:
- I extract keypoints feature from image and saving them. (file or database text)
- Extracted keypoints are in ASCII format as I am using this writer:
IOUtils.writeASCII(output, localFeatureList);
Imagine that I have more than 1 million of data (extracted features from images). I will receive a new input image and I have to compare to this million of data using this matcher:
public static final RobustAffineTransformEstimator MODEL_FITTER = new RobustAffineTransformEstimator(50.0, 1500, new RANSAC.PercentageInliersStoppingCondition(0.5)); public static final LocalFeatureMatcher<Keypoint> MATCHER = new ConsistentLocalFeatureMatcher2d<>( new FastBasicKeypointMatcher<>(8), MODEL_FITTER);
I don't know which method is faster, using a database to store the file data or reading file data on the disk ????
Also, how to make things faster ?
Thank you!!!!
I alrad tried using Redis as backend to store feature and reading them from there but it took 7 minutes for 50.000 records... (read + matching)