       Re: blurry ellipse

• To: mathgroup at smc.vnet.net
• Subject: [mg92072] Re: blurry ellipse
• From: dh <dh at metrohm.ch>
• Date: Fri, 19 Sep 2008 05:16:20 -0400 (EDT)
• References: <gat9g4\$ec5\$1@smc.vnet.net>

```
Hi Joshua,

you can blurry any picture by a convolution with a suitable kernel. Here

is an example. We first create a picture of an ellips. Then we

increasingly blurry it  three times. Note that we must keep the numbers

between 0..1 because of "Raster":

n=100;

pict=Table[0,{n},{n}];

Scan[(pict[[Round[n/2+n/5  Sin[#]],Round[n/2+2

n/5Cos[#]]]]=1)&,Range[0,2Pi,0.01]];

Graphics[Raster[pict]]

kernel={{1,1},{1,1}}; pict=ListConvolve[kernel,pict];pict=pict/Max[pict];

Graphics[Raster[pict]]

kernel={{1,1,1},{1,1,1},{1,1,1}};

pict=ListConvolve[kernel,pict];pict=pict/Max[pict];

Graphics[Raster[pict]]

kernel={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};

pict=ListConvolve[kernel,pict];pict=pict/Max[pict];

Graphics[Raster[pict]]

Note that you may instead of using a larger kernel, repeat the operation.

hope this helps, Daniel

Solomon, Joshua wrote:

> NB: This is a mathematical problem, not necessarily a Mathematica problem.

>

> I need a rasterized, blurry ellipse, i.e. an ellipse convolved with a

> Gaussian. I already know how to make a blurry circle. You take the Fourier

> transform of a circle (i.e. a Bessel function), the Fourier transform of a

> Guassian, multiply them, and transform them back. No problem. Since an

> ellipse is just a circle that has been squashed in one dimension, I figured

> I could make a blurry one the same way as I make blurry circles. I just

> needed to squash the Bessel function first. And I was right. The code below

> works just fine, *except* the intensity varies as you go around the elipse.

> If anyone could tell me how to fix that problem, I'd be very grateful!

>

> BlurryEllipse[sizePix_, radiusPix_, sigmaPix_,stretchFactors_: {1, 1}] :=

>

>     Module[{half = sizePix/2, x, y, f, r, a, pr2},

>

>         pr2 = -2 (Pi*sigmaPix/sizePix)^2;

>

>         RotateRight[

>

>             Abs[

>                 Chop[

>

>                     InverseFourier[

>

>                         RotateRight[

>

>                             Table[r1=

>                                     Abs[stretchFactors[]*x+

>                                         stretchFactors[]*I*y];

>                                  r2 = Abs[x + I*y];

>                                  BesselJ[0, f*r1] Exp[pr2 (r2^2)],

>                                 {y, -half, half-1} , {x, -half, half-1}],

>                             {half, half}]]]], {half,half}]]

>

> size = 64; rad = 24; scale = 3;

> tmp = BlurryEllipse[size, rad, scale, {1, .5}];

> Show[Graphics[Raster[tmp/Max[Max[tmp]]]], ImageSize -> 400]

>

> Intensity varies around the elipse. We can compare amplitude (or power)

> ratios between major and minor axes:

>

> In[]:=Max[tmp[]]/Max[Transpose[tmp][]]

>

>

> Out[]=1.93009

>

>

> In[]:= Sqrt[Total[tmp[]^2]/Total[Transpose[tmp][]^2]]

>

> Out[]= 1.98887

>

>

>

> I was surprised these numbers weren't closer to 2. How can we make intensity

> invariant around the ellipse?

>

>

--

Daniel Huber

Metrohm Ltd.

Oberdorfstr. 68

CH-9100 Herisau

Tel. +41 71 353 8585, Fax +41 71 353 8907

E-Mail:<mailto:dh at metrohm.com>

Internet:<http://www.metrohm.com>

```

• Prev by Date: Re: Real and Complex Roots presented in a single plot
• Next by Date: Re: Apparent error integrating product of DiracDelta's
• Previous by thread: Re: blurry ellipse
• Next by thread: Re: blurry ellipse