Re: Blurring with mathematica
- To: mathgroup at smc.vnet.net
- Subject: [mg54866] Re: Blurring with mathematica
- From: "Steve Luttrell" <steve_usenet at _removemefirst_luttrell.org.uk>
- Date: Fri, 4 Mar 2005 05:08:02 -0500 (EST)
- References: <d060i3$ko6$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Your questions show that you are not having problems with Mathematica as such, but with basic mathematics itself. Maybe it would be a good idea to do some background reading. Here are the answers to your questions anyway: 1) If you want to normalise the blurring kernel then use (1/(2*Pi*sdev^2))*Exp[-((i^2 + j^2)/(2*sdev^2))] There is a factor of 1/Sqrt[2 Pi sdev^2] for each of the 2 dimensions. You can verify this is correct by integrating over the continuous-valued versions of i and j Integrate[(1/(2*Pi*sdev^2))*Exp[-((i^2 + j^2)/(2*sdev^2))], {i, -Infinity, Infinity}, {j, -Infinity, Infinity}, Assumptions -> Re[sdev^2] > 0] to obtain 1. However, the computations you want to do are over a discrete 2-dimensional grid, so if you want to normalise then you should make the appropriate changes (i.e use sums rather than integrals). Also have a look at my response to question (2) for the general approach to computing a normalisation factor. 2) The precise meaning of your question is not clear. However, it appears that you want to normalise a kernel so that its integral (or sum) over some domain is unity. The normalisation factor to put in the denominator is thus the integral (or sum) of the kernel that you started with, and which thus acts to cancel whatever (wrong) norm you had in the first place. Steve Luttrell <V.Marinakis at damtp.cam.ac.uk> wrote in message news:d060i3$ko6$1 at smc.vnet.net... > Dear all, > > I have some questions regarding the following email: > 1) Shouldn't it be the factor (1/Sqrt[2 Pi sdev^2]) in the kernel? > 2) What should I change in order to normalise the gaussian to an interval > of 1; > > Best, Vangelis Marinakis. > > > -------------------------------------------------------------------- > > Generate an image. > > image = Table[Random[], {128}, {128}]; > Show[Graphics[Raster[image]], AspectRatio -> 1]; > > Generate a Gaussian blurring kernel. > > halfwindow = 5; > sdev = 2; > kernel = Table[Exp[-((i^2 + j^2)/(2*sdev^2))], > {i, -halfwindow, halfwindow}, {j, -halfwindow, halfwindow}]; > Show[Graphics[Raster[kernel]], AspectRatio -> 1]; > > Blur the image. > > image2 = ListCorrelate[kernel, image]; > image2 /= Max[image2]; > Show[Graphics[Raster[image2]], AspectRatio -> 1]; > > If you want to blur with circular wraparound then use > > ListCorrelate[kernel, image, > {{halfwindow + 1, halfwindow + 1}, > {halfwindow + 1, halfwindow + 1}}]; > Steve Luttrell > > <V.Marinakis@[EMAIL PROTECTED] >> wrote in message > news:cvrqhi$p5c$1@[EMAIL PROTECTED] >> Hello everyone. >> >> I have an image which is stored as an 128 times 128 >> matrix and I want to add gaussian blurring. Does anyone >> know how can this be done with mathematica? >> >> Best, Vangelis Marinakis. >> > >