## Workaround for the norminv function in statistics toolbox

on 19 Jul 2013

### Wayne King (view profile)

I am working on some image processing software and to get rid of the background noise in the pictures I am working with, it was suggested I use the following code. I found that it worked, however the computer I want to process these images on does not have the statistics toolbox which contains the norminv function. I was wondering if there is a way to work around using that particular function

Here is what my code currently looks like:

im=rgb2gray(imread(input('What picture would you like to input: ','s')));

fmt=fspecial('gaussian',2*ceil(-norminv((1e-1)/2,0,4))+1,4.0);

im2=(double(im)-imfilter(double(im),fmt))./(sqrt(imfilter((double(im)-imfilter(double(im),fmt)).^2,fmt)));

im3=filter2(fspecial('average',10),im2);

im4=...

Any suggestions?

## Products

No products are associated with this question.

### Wayne King (view profile)

on 19 Jul 2013
Edited by Wayne King

### Wayne King (view profile)

on 19 Jul 2013

You can use the inverse complementary error function. You'll have to convert from a nonstandard normal distribution, but that should not be hard.

If you are dealing with the standard normal, N(0,1), then

```p = 0.9;
norminv(p)
```

is equal to

`   -sqrt(2)*erfcinv(2*p)`

If you have a Gaussian distribution other than the standard normal

```    mu = 1;
sigma = 4;
p = 0.9;
norminv(0.9,1,4)```

equals

```sigma.*(-sqrt(2)*erfcinv(2*p))+mu
```

Kyle Bryenton

### Kyle Bryenton (view profile)

on 19 Jul 2013

Thank you I will give it a try :)

#### Join the 15-year community celebration.

Play games and win prizes!

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi