Comments (2)
Hi @pengbohua, great question! In the original paper (https://www.cs.ubc.ca/~lowe/papers/ijcv04.pdf) on page 7, note this sentence in the middle of the page:
"Once a complete octave has been
processed, we resample the Gaussian image that has twice the initial value of σ (it will be 2
images from the top of the stack) by taking every second pixel in each row and column."
2 images from the top of the stack -- in order words, the third to last image.
One octave here actually covers more than the doubling of the initial sigma value. We divide the octave into s intervals, so let's say for s = 2, we would get 3 images:
The original image
The original image blurred by 2 ^ (1 / s) = 2 ^ (1 / 2)
The original image blurred by 2 ^ (2 / s) = 2 ^ (2 / 2) = 2, in other words double blur
However, we're going to do difference-of-Gaussians later, so we need an image one interval below the original image, and one image one interval above the doubled image.
In total, we have s + 3 = 2 + 3 = 5 images. This is where Lowe gets the s + 3 expression from.
Note that this is different from the order in which we actually compute the intervals. Instead of starting the octave at blur factor 2 ^ (-1 / s) and ending the octave with 2 ^ (3 / s), we instead just start with the original image, and end with blur factor 2 ^ (4 / s). Lowe does this just because it makes the code look a little cleaner.
from pythonsift.
I hope this explanation is sufficient. I'm going to close this issue, but feel free to reopen it if you feel your question has not been answered.
from pythonsift.
Related Issues (20)
- Error - input array HOT 3
- Trouble getting installed and working HOT 4
- How to find the coordinates of the corresponding points among the matching points of two graphs HOT 3
- edgeThreshold HOT 2
- computeNumberOfOctaves function always returns 1 HOT 1
- Deprecated implementation HOT 1
- question on smooth_histogram HOT 3
- Strange results when using on non grayscale images
- Possible bug with pip instalation HOT 1
- Question generateBaseImage() HOT 2
- Have a problem about the scale of Shape HOT 2
- About alberto98fx's "Error-input array" HOT 2
- Why using same gaussian_kernels to generate GaussianImages? HOT 2
- Problem in 'localizeExtremumViaQuadraticFit'. HOT 2
- TypeError: src1 data type = 17 is not supported HOT 2
- Calculation of number of Octaves HOT 2
- Question on localizeExtremumViaQuadraticFit() HOT 1
- Question about keypoint.octave HOT 2
- FindScaleSpaceExtrema error HOT 1
- Nothing left
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pythonsift.