The following sections present details of the steps discussed above, and also provide information about implementation choices made. Section 2 describes the scale-space generation using iterative Gaussian blurring. Section 3 elaborates the use of Laplacian filtering to detect step-like features across scale-space. Section 4 goes into detail about local maxima detection of the Laplacian response across scale-space. The next two sections (5 & 6) provide results on the given test images and discuss some of the issues that arise from my implementation. The report concludes with a brief discussion of the implementation and goals for the rest of the semester.
The easiest way to implement such a filtering scheme is to generate a unique Gaussian kernel for each level of the scale-space. However, such a brute force approach is slow and wasteful in terms of resources. A slight modification allows us to successively convolve images at various scales with a constant Gaussian kernel. This approach, though slightly faster is euqally bad in terms of resource utilization.
The associative nature of the Gaussian kernel provides us with an elegant way to implement the scale-space representation. Taking advantage of the fact that convolving two Gaussians results in a Gaussian with sigma equal to the square root of the sum of squares of the input sigmas, we can compute the sigma-step required to compute the next logarithmic-level of the scale-space in a single convolution operation. We make use of the following relationship:
where σstep is the quantity we need to determine using the relationship between sigmas at level i and (i+1). This is the approach implemented in this project.
The following figure shows successive scale-space representations of the image with a single blob.
![]() original |
![]() t = 0.0 |
![]() t = 0.5 |
![]() t = 1.0 |
![]() t = 1.5 |
![]() t = 2.0 |
| 1 | 1 | 1 |
| 1 | -8 | 1 |
| 1 | 1 | 1 |
It is important to scale the output of the Laplacian filter proportional to the scale at which we are operating. This is due to the fact that Gaussian blurring dampens the signal proportional to σ2. Thus, we use the same multiplicative factor to scale the response of the Laplacian filter at each scale.
Once a local maxima is found, the size (radius) of the corresponding blob can be determined by looking at the expression for the Laplacian as the second derivative of the Gaussian kernel. We have a term of the form 2σ2. This is exactly the normalization factor that relates distances in the Laplacian filter output to the σ used to generate the image at the current scale. (edit: this was discussed again in class today !). The radius of the corresponding blob is given in terms of the scale as
Another heuristic to improve the speed of the implementation involves restricting the search for local maxima to very high intensity levels in the Laplacian response. This helps in discarding a large chunk of the response and speeds up the search for the local maxima.
Finally, the localized blob is depicted as a bright circle. Please note that the output images are re-scaled to better visualize the detected blob, and hence appear darker than the input images.
| |
|
|
|
|
|
| |
|
|
![]() |
|
|
| |
|
|
Another problem is due to non-circular blobs. These produce responses at various scales that are just spurious ! Some examples can be seen again the the two sunflower examples.
However, these problems do not undermine the strength of the algorithm, which can be tuned further (based on the application) to generate better results.