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

Michael Aye kmichael.aye at gmail.com
Tue Nov 24 18:47:22 EST 2015


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 
> <javascript:>> 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 <javascript:>.
>> To post to this group, send email to scikit... at googlegroups.com 
>> <javascript:>.
>> 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.
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scikit-image/attachments/20151124/ec5bd1cf/attachment.html>


More information about the scikit-image mailing list