I would like to know how to calculate a Laplacian mask of an arbitrary odd size kernel (2nd derivative). For example, I know a 3x3 would be:
1 1 1
1 -8 1
1 1 1
And a 5x5 mask would be:
1 1 1 1 1
1 1 1 1 1
1 1 -24 1 1
1 1 1 1 1
1 1 1 1 1
However, this is all I know. I don't know how these were calculated. I believe that all 2nd derivative masks always have a different center number surrounded by 1s. My question is, how would I calculate the center number for nxn where n is odd? (e.g. 7x7, 15x15, etc.) I am planning on implementing this in Matlab. I appreciate any help I can get.
The Laplacian function looks like this:
and is described by:
σ
here determines the spread of the inverted bell. The digital mask is a discrete approximation of this function. And therefore for smaller values of window size (n
) and σ
, you get a large negative number surrounded by 1s all over. But as you increase the window size and σ
, that's not going to be the case.
To calculate the digital mask correctly, you should use the function given above. The center pixel of your odd sized square (nxn
) will be your origin.
For reference: http://homepages.inf.ed.ac.uk/rbf/HIPR2/log.htm
Here's a simple way:
function mask = LapMask(n)
mask = ones(n);
mask(ceil((n^2)/2)) = 1 - n^2;
end
I'll leave it to you to add the error checking making certain that n
is odd
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With