skimage.filter.rank.percentile usage question

Josh Warner silvertrumpet999 at gmail.com
Thu May 9 19:24:50 EDT 2013



Looks like the relevant _crank8 function for filter.rank.percentile doesn't 
use p1 at all. 


cdef inline dtype_t kernel_percentile(Py_ssize_t * histo, float pop,
                                      dtype_t g, float p0, float p1,
                                      Py_ssize_t s0, Py_ssize_t s1):
    cdef int i
    cdef float sum = 0.

    if pop:
        for i in range(256):
            sum += histo[i]
            if sum >= p0 * pop:
                break

        return <dtype_t>(i)
    else:
        return <dtype_t>(0)

That said, some of the other `percentile_*` functions do in fact use both 
`p0` and `p1`. At minimum, there is room for docstring clarification here.


On Wednesday, May 8, 2013 9:59:45 PM UTC-5, Juan Nunez-Iglesias wrote:

Hey guys,
>
> I'm wanting to use the rank filter module in skimage, but I'm not sure 
> about the usage of percentile(). My intuition of how a percentile filter 
> should work is:
>
> for each pixel:
>     grab all the values in the structuring element centred at that pixel
>     sort them
>     find the requested percentile; interpolate if necessary
>     replace pixel with that value
>
> However, the function doesn't require one percentile but two, p0 and p1. 
> The docstring says "Only levels between percentiles [p0, p1] are used", but 
> I don't understand what this means. What if three different values fall 
> between p0 and p1? What if no values fall between them?
>  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scikit-image/attachments/20130509/7f3e67a4/attachment.html>


More information about the scikit-image mailing list