Now I start seeing things!

Remember me talking about using the makeContiguous() feature of the reworked UnionFind structure? Nevermind. It turns out that I cannot use this feature - it violates the consistency requirement. But I have better news than that.

The newly created branch lazycc contains a workflow dedicated to show the advances in the lazy connected components business. This could actually be the first time that I see labeled images coming out of my operator. Rather satisfying, one might think. That’s what the connected components applet looks like:

snake{.aligncenter .size-medium .wp-image-136 width=”300” height=”225”}

Yes, this frame is indeed taken from a snake game. I thought that it might be a good example of a global connected components run. The snake starts as 2 squares, and moves to one adjacent square on each time step. Everytime the snake eats snake food, or whatever these balls might be, it grows by one square. I conclude that all frames must be connected. And this is what the algorithm returns for a labeling:

snake1{.aligncenter .size-medium .wp-image-138 width=”300” height=”225”}

No! Why does it look like the children escorting soccer players to their world cup matches? All the unit tests passed, right? It seems like volumina found a problem with my code. In volumina, volumes are shown in a tiled fashion, and each tile spawns its own request for data. In my case, this means at least 3 requests (one for each of the x/y/z views), but probably up to 12. And the algorithm seems to have problems with this, although there are some locks and stuff in there. Luckily I was able to reproduce this in a non-GUI test case, so I don’t have to run ilastik every time I think I’ve fixed it. Back to coding, I guess.


The new UnionFind arrived

A few days ago Ulli merged a huge piece of code into the vigra master. I don’t know much about most of the contents, but one thing will be rather helpful: the UnionFind data structure was reworked. Before these changes you could only use the makeContiguous method once. After that, the structure was only a hash table and could not be used for labeling any more. With the changes however it should be possible to generate contiguous labelings whenever needed without breaking the structure itself. This could be really hepful, because I am using a rather hacky way right now (see this entry point). I’m gonna try this out and see if it works for me.