ImageStack unexpected behaviour

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

ImageStack unexpected behaviour

Seamus Holden
Hi there

I am trying to preallocate a stack and then write some data to it
(specifically images from a microscope in micromanager).

Every time I try to write images to the preallocated stack, the first
image is always blank. I have no idea why!
Specifically, the script below gives a blank first frame, all other
frames have a white diagonal as expected.

Can anyone see where I am going wrong?

Thanks in advance for your help.
Regards,
Seamus

[test script]

import ij.*;
import ij.gui.*;

int numImages=10;
int w = 16;
int h = 16;

ImagePlus acqIm = NewImage.createShortImage("test", w, h, numImages,
NewImage.FILL_BLACK);
ImageStack acqStack = acqIm.getStack();

int nn = 1;
for (int i = 0; i < numImages; i++) {
   short[] pixels = new short[w * h]; // zero-filled
   for (int j = 0; j < w && j < h; j++) { // set diagonal to nonzero
     pixels[j + w * j] = (short)15000;
   }

   acqStack.setPixels(pixels, nn);
   nn++;
}
acqIm.show();

[end of test script]



--
Dr Seamus Holden
Post-doctoral Fellow
Bâtiment des Sciences Physiques
École Polytechnique Fédérale de Lausanne
CH-1015 Lausanne, Switzerland

Phone: +41-(0)21-693-0557

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: ImageStack unexpected behaviour

Arne Seitz
Hi Seamus,

I can't explain why your script is not working but with slight modifications the first Image is no longer blank.

Cheers
Arne


                int numImages=10;
                int w = 16;
                int h = 16;

// ImagePlus acqIm = NewImage.createShortImage("test", w, h, numImages, NewImage.FILL_BLACK);
                ImageStack acqStack=new ImageStack(w,h,numImages);
// ImageStack acqStack = acqIm.getStack();

                int nn = 1;
                for (int i = 0; i < numImages; i++) {
                   short[] pixels = new short[w * h]; // zero-filled
                   for (int j = 0; j < w && j < h; j++) { // set diagonal to nonzero
                     pixels[j + w * j] = (short)15000;
                   }

                   acqStack.setPixels(pixels, nn);
                   nn++;
                }
                ImagePlus acqIm=new ImagePlus("test",acqStack);
                acqIm.show();

> -----Original Message-----
> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of
> Seamus Holden
> Sent: lundi 29 juillet 2013 15:42
> To: [hidden email]
> Subject: ImageStack unexpected behaviour
>
> Hi there
>
> I am trying to preallocate a stack and then write some data to it (specifically
> images from a microscope in micromanager).
>
> Every time I try to write images to the preallocated stack, the first image is
> always blank. I have no idea why!
> Specifically, the script below gives a blank first frame, all other frames have a
> white diagonal as expected.
>
> Can anyone see where I am going wrong?
>
> Thanks in advance for your help.
> Regards,
> Seamus
>
> [test script]
>
> import ij.*;
> import ij.gui.*;
>
> int numImages=10;
> int w = 16;
> int h = 16;
>
> ImagePlus acqIm = NewImage.createShortImage("test", w, h, numImages,
> NewImage.FILL_BLACK); ImageStack acqStack = acqIm.getStack();
>
> int nn = 1;
> for (int i = 0; i < numImages; i++) {
>    short[] pixels = new short[w * h]; // zero-filled
>    for (int j = 0; j < w && j < h; j++) { // set diagonal to nonzero
>      pixels[j + w * j] = (short)15000;
>    }
>
>    acqStack.setPixels(pixels, nn);
>    nn++;
> }
> acqIm.show();
>
> [end of test script]
>
>
>
> --
> Dr Seamus Holden
> Post-doctoral Fellow
> Bâtiment des Sciences Physiques
> École Polytechnique Fédérale de Lausanne
> CH-1015 Lausanne, Switzerland
>
> Phone: +41-(0)21-693-0557
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html