Image Classification Limits Part 2

Recently i released the first 64-bit versions of Bio7 bundled with a 64-bit Java Virtual Machine.

I’m always curious how far i can go using both applications together to do image analysis (especially classification) with huge images coming e.g. from satellites.
The transfer of the images in Bio7 is realized with a combination of ImageJ and R connected with Rserve. The disadvantage of this approach is that in both applications some more or less image data is present.

In one of my last posts i was able to classify RGB images with R of size ~7000*7000 with a special Mac Bio7 port.

Cluster Analysis (clara) with R: Max 7000*6157*3(RGB) -> 6 centers: 168sec. (byte transfer!) Mac OSX 10.6, 2.93 GHz, 4GB RAM

With a Linux 64-bit OS (8GB) at hand i was now able to classify even bigger images:

1. Cluster Analysis (clara) with R: Max 9000*9000*3(RGB) -> 6 centers: 181sec. (byte transfer!) Linux Ubuntu 10.04, 2* 2.27 GHz, 8GB RAM
JRE
initial heap size=5Gb, maximum heap size=5Gb

2. Cluster Analysis (clara) with R: Max 10000*10000*3(RGB) -> 6 centers: 338sec. (byte transfer!) Linux Ubuntu 10.04, 2* 2.27 GHz, 8GB RAM
JRE
initial heap size=5Gb, maximum heap size=5Gb

The huge difference between the first and the second time result are because of the memory limitation of the OS (which has to allocate RAM for the images twice – in the JRE and for the image vectors in R) and the resulting garbage collection to free up space. Because of the integer indexing limitation of R and Java the theoretical limit (of a pure image transfer) will be an image of size 2^31 (Java only supports signed integers) if using both applications together. However it is nice to see that it is possible to analyze huge images practically with R and ImageJ and that this works together very well.

Leave a Comment

*