[SciPy-user] Ignoring pixels with gaussian_filter
Zachary Pincus
zachary.pincus at yale.edu
Fri Apr 24 15:12:36 EDT 2009
Hi Thomas,
> Hello,
>
> I am currently using gaussian_filter to smooth an image stored in a
> numpy array. My problem is that some pixels have no defined value, and
> are set to NaN. If gaussian_filter stumbles upon a NaN value, it will
> set all pixels within a certain radius of that value to NaN.
...
> Of course, I can simply use
>
> a[np.where(np.isnan(a))] = 0.
>
> to reset all NaN pixels to zero, but then the result depends on the
> value I replace NaNs by.
>
> Is there a way to get gaussian_filter to simply ignore such pixels
> when smoothing? (apart from writing a gaussian filter algorithm from
> scratch!)
No simple way to get gaussian_filter to ignore nan pixels when doing
the convolution.
You could write your own convolution function in cython (not as bad as
it sounds, or you could fill in the missing data with something
reasonable (like the median of the neighbors) before gaussian
filtering. These should give pretty similar results.
You could check out an earlier thread on numpy-discussion titled "Help
with interpolating missing values from a 3D scanner" for some
discussion about filling in missing values.
Zach
More information about the SciPy-User
mailing list