You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Remove Gaussian blur code alternatives that are never used or didn't
work very well.
Remove the config param ScalingMode (always use default).
Remove fixed scaling code.
Remove code to downscale everything directly from input image.
Remove the narrower gauss filter width called "OpenCV mode".
Remove functions to interpolate from first image plane.
Remove specialized version to create very first level from input image.
Remove Gauss filter tables for direct downscaling using absolute tables.
Removed deprecated scaling mode "OpenCV".
OpenCV was buggy when this code was written. It has improved since then.
Also downscaling by interpolation, which could not be called with any parameter, is removed.
Restructure the calling code for the last 2 pyramid building functions
Move host code for normalized source kernel into kernel's file.
Normalized source mode is only used for the input image. It uses the normalization feature of CUDA textures to scale the input image while creating the first octave.
Simplify the solution with absolute sources.
Return to a solution without shuffle and identical code structure for horizontal and vertical Gaussian filtering.
Host functions to call Gaussian filtering from point textures moved in kernels' code file.
Host functions to call Gaussian filtering from interpolated textures moved in kernels' code file.
Simplified and unified code for absolute source interpolated Gaussian filtering.
Use horiz_from_input_image exclusively for octave 0.
Direct downscaling is not only use for the input image. Note that initial blur is assumed for every input image, even when it is later interpreted as initially unblurred. That does make a difference, but is apparently recommended.
Extrema refinement modes have more intuitive names and are no longer tied to PopSift vs VLFeat.
(except that the command line parameters of the test code retains the old terms so far)
"loop is OpenCV-like horizontal scanning, computing only valid points, grid extracts only useful points but rounds them, iloop uses linear texture and rotated gradiant fetching. igrid is grid with linear interpolation. notile is like igrid but avoids redundant gradiant fetching.")
80
-
("popsift-mode", bool_switch()->notifier([&](bool b) { if(b) config.setMode(popsift::Config::PopSift); }),
80
+
("popsift-mode", bool_switch()->notifier([&](bool b) { if(b) config.setMode(popsift::Config::RefineInOctave); }),
81
81
"During the initial upscale, shift pixels by 1. In extrema refinement, steps up to 0.6, do not reject points when reaching max iterations, "
82
82
"first contrast threshold is .8 * peak thresh. Shift feature coords octave 0 back to original pos.")
83
-
("vlfeat-mode", bool_switch()->notifier([&](bool b) { if(b) config.setMode(popsift::Config::VLFeat); }),
83
+
("vlfeat-mode", bool_switch()->notifier([&](bool b) { if(b) config.setMode(popsift::Config::RefineInLevel); }),
84
84
"During the initial upscale, shift pixels by 1. That creates a sharper upscaled image. "
85
85
"In extrema refinement, steps up to 0.6, levels remain unchanged, "
86
86
"do not reject points when reaching max iterations, "
87
87
"first contrast threshold is .8 * peak thresh.")
88
-
("opencv-mode", bool_switch()->notifier([&](bool b) { if(b) config.setMode(popsift::Config::OpenCV); }),
89
-
"During the initial upscale, shift pixels by 0.5. "
90
-
"In extrema refinement, steps up to 0.5, "
91
-
"reject points when reaching max iterations, "
92
-
"first contrast threshold is floor(.5 * peak thresh). "
93
-
"Computed filter width are lower than VLFeat/PopSift")
94
-
("direct-scaling", bool_switch()->notifier([&](bool b) { if(b) config.setScalingMode(popsift::Config::ScaleDirect); }),
95
-
"Direct each octave from upscaled orig instead of blurred level.")
96
88
("norm-multi", value<int>()->notifier([&](int i) {config.setNormalizationMultiplier(i); }), "Multiply the descriptor by pow(2,<int>).")
"loop is OpenCV-like horizontal scanning, computing only valid points, grid extracts only useful points but rounds them, iloop uses linear texture and rotated gradiant fetching. igrid is grid with linear interpolation. notile is like igrid but avoids redundant gradiant fetching.")
78
-
("popsift-mode", bool_switch()->notifier([&](bool b) { if(b) config.setMode(popsift::Config::PopSift); }),
79
-
"During the initial upscale, shift pixels by 1. In extrema refinement, steps up to 0.6, do not reject points when reaching max iterations, "
80
-
"first contrast threshold is .8 * peak thresh. Shift feature coords octave 0 back to original pos.")
81
-
("vlfeat-mode", bool_switch()->notifier([&](bool b) { if(b) config.setMode(popsift::Config::VLFeat); }),
82
-
"During the initial upscale, shift pixels by 1. That creates a sharper upscaled image. "
83
-
"In extrema refinement, steps up to 0.6, levels remain unchanged, "
84
-
"do not reject points when reaching max iterations, "
85
-
"first contrast threshold is .8 * peak thresh.")
86
-
("opencv-mode", bool_switch()->notifier([&](bool b) { if(b) config.setMode(popsift::Config::OpenCV); }),
87
-
"During the initial upscale, shift pixels by 0.5. "
88
-
"In extrema refinement, steps up to 0.5, "
89
-
"reject points when reaching max iterations, "
90
-
"first contrast threshold is floor(.5 * peak thresh). "
91
-
"Computed filter width are lower than VLFeat/PopSift")
92
-
("direct-scaling", bool_switch()->notifier([&](bool b) { if(b) config.setScalingMode(popsift::Config::ScaleDirect); }),
93
-
"Direct each octave from upscaled orig instead of blurred level.")
94
-
("norm-multi", value<int>()->notifier([&](int i) {config.setNormalizationMultiplier(i); }), "Multiply the descriptor by pow(2,<int>).")
78
+
( "popsift-mode", bool_switch()->notifier([&](bool b) { if(b) config.setMode(popsift::Config::RefineInOctave); }),
79
+
"In extrema refinement, it is possible to move extrema within a level but also between the levels of an octave.")
80
+
( "vlfeat-mode", bool_switch()->notifier([&](bool b) { if(b) config.setMode(popsift::Config::RefineInLevel); }),
81
+
"In extrema refinement, it is possible to move extrema within a level only.")
82
+
( "norm-multi", value<int>()->notifier([&](int i) {config.setNormalizationMultiplier(i); }), "Multiply the descriptor by pow(2,<int>).")
0 commit comments