Clustering of an image by taking into account the spatial context of each pixel (besides its intensity)

Juan Nunez-Iglesias jni.soma at gmail.com
Tue Nov 24 19:29:42 EST 2015


Cool idea!

On Wed, Nov 25, 2015 at 10:47 AM, Michael Aye <kmichael.aye at gmail.com>
wrote:

> As SLIC uses K-means where one has to provide a number of clusters, I
> wonder what a SLIC implementation with DBSCAN could do, considering that it
> is free from the burden of defining the number of clusters. One would have
> to come up with a method of constraining `eps` and `min_samples`, but maybe
> that could be quite powerful.
>
>
> On Monday, November 23, 2015 at 6:11:45 PM UTC-7, Juan Nunez-Iglesias
> wrote:
>>
>> Incidentally, it seems you are just doing SLIC on a non-RGB image...
>> Which SLIC supports. (skimage.segmentation.slic). The "compactness"
>> parameter changes the weighting of intensity and space.
>>
>> On Tue, Nov 24, 2015 at 11:19 AM, Hakim Benoudjit <h.ben... at gmail.com>
>> wrote:
>>
>>> Hi Jonas,
>>>
>>> Thanks for your response.
>>> That's exactly what I've tried this week-end, by adding the (x, y) to
>>> gray-level intensity and giving the matrix of 3-components vector as input
>>> to k-means.
>>> As for the normalization, I applied this formula to each column
>>> (intensity, x, y): (value - mean) / std_dev.
>>> But, even with this normalization step, adding the (x, y) coordinates
>>> will influence the pixels on the left (resp. right) to be grouped together
>>> (See http://imgur.com/HxfkRig and original image taken from
>>> http://uk.mathworks.com/help/images/texture-segmentation-using-gabor-filters.html?refresh=true
>>> ).
>>>
>>> Maybe I will need to find another normalization to apply of the
>>> (intensity, x, y) space.
>>>
>>> Le lundi 23 novembre 2015 23:53:34 UTC, Jonas Wulff a écrit :
>>>>
>>>> Hi Hakim,
>>>>
>>>> Have you tried just adding the coordinates of a pixel to its features?
>>>> For each pixel, the features would then be R,G,B,X,Y. From your
>>>> description, that seems what you're looking for.
>>>>
>>>> So if you have an RGB image I (so that I.shape = (height,width,3)), you
>>>> can do:
>>>>
>>>> y,x = np.mgrid[:height,:width]
>>>> I_stacked = np.dstack((I,x,y))
>>>> data = I_stacked.reshape((-1,5))
>>>>
>>>> ... and then use "data" as input to your clustering algorithm.
>>>>
>>>> You might want to scale / normalize the coordinates to fit the general
>>>> range of your color values -- but in general, this should do what I think
>>>> you're looking for.
>>>>
>>>> Cheers,
>>>> -Jonas
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Sat, Nov 21, 2015 at 2:23 AM, Hakim Benoudjit <h.ben... at gmail.com>
>>>> wrote:
>>>>
>>>>> Hi Juan,
>>>>>
>>>>> Thanks for your answer, this seems to be a nice algorithm for the
>>>>> denoising of speckle.
>>>>> But actually I'm looking for an image clustering (segmentation)
>>>>> technique instead (that would take into consideration the spatial context
>>>>> of pixels).
>>>>>
>>>>> Le samedi 21 novembre 2015 00:47:21 UTC, Juan Nunez-Iglesias a écrit :
>>>>>>
>>>>>> Hey Hakim,
>>>>>>
>>>>>> The right answer here depends on your ultimate goal. If you're after
>>>>>> denoising, non-local means denoising (recently added to skimage) sounds
>>>>>> like exactly what you're after.
>>>>>>
>>>>>> Juan.
>>>>>>
>>>>>> On Sat, Nov 21, 2015 at 11:28 AM, Hakim Benoudjit <h.ben... at gmail.com
>>>>>> > wrote:
>>>>>>
>>>>>>> Hi Stéfan,
>>>>>>>
>>>>>>> Thanks for your reponse.
>>>>>>> What I'm looking for is a *spatial criteria* that encourages the *clustering
>>>>>>> algorithm* (K-means or others) to group together similar *neighbouring
>>>>>>> pixels* inside the same cluster. This will help avoid having
>>>>>>> persistent noise inside a cluster.
>>>>>>>
>>>>>>> Le vendredi 20 novembre 2015 13:20:15 UTC, Hakim Benoudjit a écrit :
>>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> Is there a clustering algorithm implemented in *scikit-image *that
>>>>>>>> perform the image clustering by taking into account the *spatial
>>>>>>>> context *of the clustered pixel (its neighbourhood), besides its *pixel
>>>>>>>> brightness*?
>>>>>>>>
>>>>>>>> For the time being, I'm clustering images by reshaping them as
>>>>>>>> vectors of pixels intensities distributions, and then performing the *K-means
>>>>>>>> *or *Gaussian mixture models* implemented in *scikit-learn*. But,
>>>>>>>> I'm looking for a image clustering technique implemented (or could be
>>>>>>>> implemented) in *scikit-image *that would consider the
>>>>>>>> neighbourhood of a pixel when classifying it.
>>>>>>>>
>>>>>>>> Thanks.
>>>>>>>>
>>>>>>> --
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "scikit-image" group.
>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>> send an email to scikit-image... at googlegroups.com.
>>>>>>> To post to this group, send email to scikit... at googlegroups.com.
>>>>>>> To view this discussion on the web, visit
>>>>>>> https://groups.google.com/d/msgid/scikit-image/0aad2045-b9da-442c-97bc-06c596b0469e%40googlegroups.com
>>>>>>> <https://groups.google.com/d/msgid/scikit-image/0aad2045-b9da-442c-97bc-06c596b0469e%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>>
>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>
>>>>>>
>>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "scikit-image" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to scikit-image... at googlegroups.com.
>>>>> To post to this group, send email to scikit... at googlegroups.com.
>>>>> To view this discussion on the web, visit
>>>>> https://groups.google.com/d/msgid/scikit-image/a2895510-2490-4ccf-a70a-20d67c74d2cd%40googlegroups.com
>>>>> <https://groups.google.com/d/msgid/scikit-image/a2895510-2490-4ccf-a70a-20d67c74d2cd%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "scikit-image" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to scikit-image... at googlegroups.com.
>>> To post to this group, send email to scikit... at googlegroups.com.
>>> To view this discussion on the web, visit
>>> https://groups.google.com/d/msgid/scikit-image/5e41ffef-c3a3-421f-b6e4-d5566b5c37c0%40googlegroups.com
>>> <https://groups.google.com/d/msgid/scikit-image/5e41ffef-c3a3-421f-b6e4-d5566b5c37c0%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>> --
> You received this message because you are subscribed to the Google Groups
> "scikit-image" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to scikit-image+unsubscribe at googlegroups.com.
> To post to this group, send email to scikit-image at googlegroups.com.
> To view this discussion on the web, visit
> https://groups.google.com/d/msgid/scikit-image/cb5869d3-0b93-421b-969d-45a1db088f36%40googlegroups.com
> <https://groups.google.com/d/msgid/scikit-image/cb5869d3-0b93-421b-969d-45a1db088f36%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scikit-image/attachments/20151125/d2b5aa95/attachment.html>


More information about the scikit-image mailing list