11

As suggested above, the Matlab Canny edge detector calculates the gradient using a "derivative of a Gaussian filter" (as stated in the documentation). In other words, Matlab does a Gaussian blur of the image and then finds the gradient of that smoothed image... all using a single fancy filter. [If you want to know the details, just type in edit edge as ...


6

Intuition for parameters of HoughCircles: image: 8-bit, single channel image. If working with a color image, convert to grayscale first. method: Defines the method to detect circles in images. Currently, the only implemented method is cv2.HOUGH_GRADIENT, which corresponds to the Yuen et al. paper. dp: Resolution of the accumulator array. Votes cast are ...


6

The usual approach to change detection is the CUSUM algorithm. I've done an implementation that just addresses the level (mean) change issue. It's included (in R) below. The black line is the noise-free data, the red line is the noisy data and the blue bars are the detected breaks (for this realization). This just addresses the level change; to address ...


6

Non-linearity A linear filter is mathematically described by the convolution sum (for discrete signals) and the convolution integral for continuous signals. The median cannot be found using a linear function except in the trivial case where you have a discrete filter of size 1, which is why the median filter is non-linear. Edge Preserving Properties. ...


6

A first rationale is to be very short, as there was a time when computing on images was expensive. Then, a contour or an edge often present a fast variation in image intensities, that can be enhanced by derivatives. Sobel filters emulate such derivatives in one direction, and slightly average pixels in the complementary direction, to smooth small variations ...


5

That depends on the definition of high-pass filter. If you define a high-pass filter as a filter that has high response in the high frequencies in frequency domain, then the easiest way is to take a look at the magnitude of Fourier transform, (by definition). Applying Fourier transform (in Matlab) A = fftshift(abs(fft2(padarray([-1 -1 -1; 0 0 0; 1 1 1],[...


5

They are both highpass type filters, but used with very different intentions. One should immediately observe the fundamental difference that the output of unsharp masking filter is an enhanced image to be viewed by humans, whereas the output of the Sobel (edge detector) filter is not an image to be viewed by humans, but rather a description of the edges to ...


4

The dilation operator with a structuring element is not the way to go. "Stroking" the contour is not the way to go. The distance transform, on the other hand, is exactly the method used by Photoshop. A thresholded distance transform is the equivalent of dilation of a binary image. But how do we dilate a grayscale image? This is how Photoshop does it: ...


4

For this operation to work, you need to imagine that your image is reshaped as a vector. Then, this vector is multiplied on its left by the convolution matrix in order to obtain the blurred image. Note that the result is also a vector the same size as the input, i.e., an image of the same size. Each row of the convolution matrix corresponds to one pixel in ...


4

If you have an idea what size circles you are looking for, then it would be best to set min_radius and max_radius accordingly. Otherwise, it will return anything circular of any size. Parameters 1 and 2 don't affect accuracy as such, more reliability. Param 1 will set the sensitivity; how strong the edges of the circles need to be. Too high and it won't ...


4

If you assume the Edge Detection is SNR driven operation, one could find a Mathematical justification for this. First, the variance of Additive White Noise with Variance $ {\sigma}_{n}^{2} $ at the output of a Linear System given by $ g $ is $ {\sigma}_{n}^{2} {\left\| g \right\|}_{2}^{2} $. Let's look on an Image filtered by a derivative approximating ...


4

In general, the time derivative property of the Fourier Transform is given as $$\mathscr{F}[\frac{d}{dt}x(t)] = j\omega X(j\omega) $$ Notice that we can simply multiply by the frequency index in the Fourier Transform result. For the 2D FT result: $$\mathscr{F}[f(x,y)]= F(u,v)$$ Using the same property results in: $$\mathscr{F}[\frac{d}{dx}f(x,y)]= uF(u,...


4

The answer is simple, the Sobel Filter is a composition of Lows Pass Filter (LPF) and High Pass Filter (HPF). The composition is done by convolution. Now, indeed the LPF presented above $ {\left[ 1, 2, 1 \right]}^{T} $ has amplification in the DC value (Its sum is 4 so the amplification is 4). Yet it is convolved with an HPF filter which rejects the DC ...


3

Note that once you obtain the skeleton, it is very hard to reverse back to separate the connected components that should not be connected. The problem is that your original image contrast is too low. I would operate an open morphological operation on your raw image to remove the background, hence increase the contrast of hair. Your raw image (reverse each ...


3

Finding edges in a color image can be done by decomposing the image into its channels, finding the gradients separately and fusing them somehow. However, such approach doesn't incorporate the color components in a joint model. Luckily, there is a better way to do this, which is the structure tensor representation. The color structure tensor describes the ...


3

I think you would use a 2D Matched Filter. You would convolve your image with a series of rectangles. The peaks in the resulting images would be the location of your books. You could do this quickly in by Fourier transforming your image and using the known function for a rectange in 2D Fourier space (its two sinc functions, multiplied).


3

Despite its age, Canny Edge Detection is still a state of the art filter. The results produced by this algorithm make for it always being included in image editing software. Solid and descriptive edges that are often overly represented by other filters. It lacks the simplicity of, say, the Boolean Edge Detection, included in the paper, "Edge Detection ...


3

The point descriptor usually requires samples at some specific locations from around the detected point. If you have point location refined and orientation assigned, you just shift and rotate the locations before computing point descriptor. Some simple descriptors require samples at discrete locations (e.g. 15x15 pixel image patch) and applying shift+...


3

The $\sigma$ decides the scale of objects being simplified. This is explained here: The size of the Gaussian filter: the smoothing filter used in the first stage directly affects the results of the Canny algorithm. Smaller filters cause less blurring, and allow detection of small, sharp lines. A larger filter causes more blurring, smearing out the value ...


3

Suppose that the noise is a random vector $X$ with normal zero-mean components of variance $\sigma_i$, mutually independent, then for the linear combination (the $g_i$ being for instance coefficients of a FIR filter): $$ Y = \sum_i g_i X_i\,,$$ the variance of $Y$ will be: $$ V(Y) =\sum_i g_i^2 \sigma_i^2\,, $$ which boils down to $$\|g\|_2^2 \sigma_2^2\,$$ ...


3

Indeed, it adds smoothing in the $y$ direction. The Sobel filter is the separable combination of the centered derivative $[−1,\;0,\;1]$ along $x$, and the $3$-point binomial smoother $[1,\;2,\;1]$ along $y$.


3

You need to ask yourself why do we use the difference of Gaussians from the first place? The reason is because the difference will give us a measurement for the change in value around the point we apply it to as a function of the variances of the Gaussians. If we have a big change the difference between the Gaussians it means that we have some frequencies ...


3

A median filter changes the value of one given pixel by the median value of a patch of pixels (most often around the given pixel). Generally, the patch contains an odd number of pixels. I will details three basic scenarii: clean edge (1D vision): suppose that the image is all black on the left ($0$ value), white on the right ($255$ value), a clear vertical ...


3

Edges are not the best defined features in images. However, they can be associated, locally, at a certain scale, with relative variations in intensity along a first direction, combined with a relative smoothness in a complementary (for instance orthogonal) second direction. When looking along the first direction, the 1D intensity profile exhibit variations,...


3

The two most obvious things you can try are: Fitting a Gaussian to your data and then clustering their parameters Estimate the similarity of waveforms directly and then try to cluster that Since you know that the return waveform conforms to a Gaussian, it is better to use a method that takes this into account. So, basically, for every pixel time course, ...


3

I don't know if this is a corner case or the norm in your dataset but it is a relatively easy situation to deal with. It would be much more difficult to detect trees in an urban environment, for example, where you would probably be looking at more pattern-recognition type of solutions. The basic idea behind this solution is surface fitting, whether to ...


3

Well, look at your original picture: it's constant for all points but the edges, which means your derivative is zero for all points but these edges. By applying a "rounding, smoothing" filter to it, you "smear" the edges enough to make the derivative be non-zero for multiple pixels, in every direction.


3

Unless mentioned otherwise withing the context the classic interpretation of Second Derivative Gaussian Filter is indeed (a) in your question: $$ L \left( x, y, \theta \right) = \cos \left( \theta \right) {g}_{xx} \left( x, y \right) + \sin \left( \theta \right) {g}_{yy} \left( x, y \right) $$


3

In the classic framework both the Smoothing and the Difference Filter are applied using Convolution. Since it is done using convolution it implies the operation is Linear Spatially Invariant (LSI). LSI operators can be applied in any order and the result will be the same. This is also a result of the commutativity property of the convolution operator. Let's ...


2

You can try the following: Efficient Graph-Based Image Segmentation: http://www.cs.brown.edu/~pff/segment/ (code available) GraphCut-based Segmentation: http://www.csd.uwo.ca/~olga/OldCode.html (code available) Denoise the image first using sparse methods: http://spams-devel.gforge.inria.fr/ (code available)


Only top voted, non community-wiki answers of a minimum length are eligible