Waterpixels and Watervoxels



  • approach to simplify (large) images
  • is the reduction of the number of pixels (a.k.a image combinatorics) without the alteration of either of
    • pixel values (a.k.a spectral information or signature)
    • pixel organization (a.k.a pixel topology)
  • Practically it is difficult to satisfy the three constraints of
    • image size reduction
    • information preservation
    • structure non-alteration
  • Several superpixel paradigms exist:
    • waterpixels
      • an alternative to superpixel paradigms
      • are based on the watershed transformation
    • SLIC, Simple Linear Iterative Clustering
      • generates superpixels using k-means clustering


  • Cettour-Janet et al. 2019 (link) outlines their work on Watervoxels,
  • is an n-dimensional extension of the waterpixels, as defined in the article

The images below summarize the result of the application of watervoxels to a 2D image and a 3D MRI image.

Result of the watervoxel on the 2D image
Result of the watervoxel on the 3D MRI image

What are your thoughts on watervoxels? How do you make use of them in your field?


Pierre Cettour-Janet, Clément Cazorla, Vaia Machairas, Quentin Delannoy, Nathalie Bednarek, François Rousseau, Etienne Décencière, and Nicolas Passat, Watervoxels, Image Processing On Line, 9 (2019), pp. 317–328. https://doi.org/10.5201/ipol.2019.250

R. Achanta, A. Shaji, K. Smith, A. Lucchi, P. Fua and S. Süsstrunk, “SLIC Superpixels Compared to State-of-the-Art Superpixel Methods,” in IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 34, no. 11, pp. 2274-2282, Nov. 2012, doi: 10.1109/TPAMI.2012.120.

On Readable Python Code


Python is an very nice high-level programming language that provides the user with an easy way to write readable and clean code. It is often the case when someone is learning a new tool or language that they are not aware of small features that would greatly improve the readability of their code.

For example, when I was learning Python I learned to iterate over a list the way I keep seeing it when reading code of beginner Pythonists. Here is an example of how you could iterate over the list:

for ix in range(len(a_list)):

However, a better and Pythonic way is to use iterators:

for el in a_list:

This equally works for lists and strings:

for key in a_dictionary:

for char in a_string:

Handy Bash Commands


A few commands I use frequently but sometimes forget.

Concatenate mutliple PDF files

pdftk *.pdf cat output out.pdf

Convert a PDF page to an image

convert -density 150 input.pdf -quality 90 output.png

Batch resize images

mogrify -resize 640x480 *.{png|jpeg}

Crop an image

convert input.png -crop 0x4000 output.png

Create a GIF animation from images (10s delay, loop endlessly)

convert -delay 10 -loop 0 *.png animation.gif

Convolutional Neural Network for Oil Spill detection in Synthetic Aperture Radar Satellite Images




Intermediate and Advanced Software Carpentry

Problem Solving with Algorithms and Data Structures using Python