Apply segmentation to a large binary image

Juan Nunez-Iglesias jni.soma at gmail.com
Sat Mar 14 21:18:16 EDT 2015


Josh, you might be thinking of morphology.remove_small_objects, but that is O(image.size), rather than O(sum(image == label)), which is what you are after. In fact we would need a flood-fill algorithm, which we don't have... That would be a fantastic addition.

On Sun, Mar 15, 2015 at 10:24 AM, Josh Warner <silvertrumpet999 at gmail.com>
wrote:

> Would it be possible to generalize / refactor `clear_border` to a function 
> which removes all points connected to a specific pixel/voxel? That would 
> greatly simplify the work needed here.
> I thought we had some sort of `remove_object` functionality like this, but 
> I don't see it.
> Josh
> On Friday, March 13, 2015 at 9:04:12 PM UTC-5, Juan Nunez-Iglesias wrote:
>>
>> Hey Yuta,
>>
>> You'll need to do some stitching out-of-core. That's a really tricky 
>> problem and I don't have any ready-made solutions for you. The solution 
>> will depend on the nature of your segments. The only thing I would 
>> recommend is that you use a format such as HDF5 (you can use the excellent 
>> h5py library) that allows random access into the underlying disk data.
>>
>> Other than that, as I said, to my knowledge you'll have to develop your 
>> own stitching: segment *overlapping* tiles independently in memory, and 
>> when it comes time to write to disk, load the tile and overlapping tiles 
>> that have already been segmented, and resolve label mapping then...
>>
>> Generally, think of it this way: tile i has already been segmented and 
>> written out. We now want to write out tile j, which overlaps tile i. Labels 
>> from tile i that intersect labels from tile j in the overlap region should 
>> be matched. labels in tile j that *don't* intersect tile i should be 
>> relabelled to ensure they are unique with respect to tile i.
>>
>> Of course this gets a bit more complicated in 2D or 3D...
>>
>> Juan.
>>
>>
>>
>>
>> On Fri, Mar 13, 2015 at 7:20 PM, Yuta Sato <yutaxsato at gmail.com> wrote:
>>
>>>  Dear SKIMAGE Developers and Users:
>>>
>>> I want to use the following algorithm in a large binary image that does 
>>> not fit into my PC memory. So, I am thinking to split my large image into 
>>> tiles and apply algorithm one by one. However, the original border 
>>> definition change when I do it in parts. I need the result as applied in 
>>> original full image. How can I do it efficiently?
>>>
>>> skimage.segmentation.clear_border(image, buffer_size=0, bgval=0)
>>>
>>> Thanks for your ideas.
>>>  
>>> -- 
>>> 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.
>>> 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.
> 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/20150314/2ef277b0/attachment.html>


More information about the scikit-image mailing list