From: Ian S. <ian...@st...> - 2002-05-31 18:20:18
|
The mask creation in vipl_gaussian_convolution doesn't look correct to me. For a start, Purify is complaining about a bounds error on line 69 http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/vxl/vxl/tbl/vipl/vipl_gaussia n_convolution.txx?annotate=HEAD#69 I think the for condition on the previous line should probably by x<size However, slightly more of a problem is the mask maths. It currently just samples points on a Gaussian curve. By doing this, it assumes a delta function sampling model of images. i.e. a pixel is single point. I understood that the more usual (and more accurate) assumption is that the pixel value is the average signal intensity over the rectangular pixel. In this case the mask values should be the integrals of the Gaussian over each pixel. To give an idea of the difference this makes, The following are the tap values for a 5 half-filter ( Gaussian is symmetric) for the existing code, and what I believe is the more accurate case, for a sigma of 1. existing delta mask 0.3989 0.2420 0.0540 0.0044 0.0001 alternative integral mask 0.4420 0.1331 0.0709 0.0448 0.0302 As you can see the integral mask gives a stronger centre and longer tail. Does anyone have any comments/corrections? I might see about fixing the code. I would need to use mbl_erf(). Ian. |
From: Peter V. <Pet...@es...> - 2002-06-01 00:14:50
|
> existing delta mask 0.3989 0.2420 0.0540 0.0044 0.0001 > alternative integral mask 0.4420 0.1331 0.0709 0.0448 0.0302 I agree with your remark: values should indeed be integrals of the Gauss curve between x-0.5 and x+0.5 (for x=0,1,2...) But I don't agree with your numbers: I believe the correct values (for sigma=1) should be: 0.38292 0.24173 0.06060 0.005977 0.000229 which are: $\int_{-0.5}^{0.5} exp(-x*x/2) dx$, $\int_{0.5}^{1.5} ...$ or: erf(0.5/sqrt(2)), 0.5*(erf(1.5/sqrt(2))-erf(0.5/sqrt(2)), ... I have now (for the time being) replaced the implementation by using a 16-piece trapezoid appoximation of the integral between x-0.5 and x+0.5. The obtained values are very close to the ones above. Peter. |