Two pixel values !!!

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

Two pixel values !!!

Sylvain Cantaloube
Hi,

I have a problem with my image files from DeltaVision (Managed with SoftWork)

Whan i open my file with ImageJ, pixel values appear like that : value=x (x+32768)

Thus, I have two pixel values :
- The normal pixel value
- This same value plus 32768

The problem is : for some operations (Threshold, B&C...) ImageJ takes in account the first value, for others (3D Object Counter plugin) it takes the second value.

I would like to delete the second value in my image files but i don’t know how...

I put an example at thes link :

http://xfer.curie.fr/get/0DPxW0CsPv8/20110712_3T3PAF_miNEG_72h_01_22_R3D.dv
http://xfer.curie.fr/get/uaonAwJffQV/20110712_3T3PAF_miNEG_72h_01_22_R3D.dv.log

If someone have a solution...

Best,

Sylvain Cantaloube
UMR 218 du CNRS
Reply | Threaded
Open this post in threaded view
|

Re: Two pixel values !!!

Michael Schmid
Hi Sylvain,

looks like your images have originally signed 16 bit values. ImageJ  
has no signed 16 bit data type, so it just takes them as unsigned and  
adds a calibration function to convert them to signed. Some plugins  
use that calibration function, some don't.

You can use Analyze>Calibrate and select function 'none' to remove  
that calibration, then you will always have values between 0 and 65535.

The other alternative is converting everything to float (32 bit),  
then you can have true signed numbers.

Michael
________________________________________________________________

On 18 Jul 2011, at 14:14, Sylvain Cantaloube wrote:

> Hi,
>
> I have a problem with my image files from DeltaVision (Managed with  
> SoftWork)
>
> Whan i open my file with ImageJ, pixel values appear like that :  
> value=x (x+32768)
>
> Thus, I have two pixel values :
> - The normal pixel value
> - This same value plus 32768
>
> The problem is : for some operations (Threshold, B&C...) ImageJ  
> takes in account the first value, for others (3D Object Counter  
> plugin) it takes the second value.
>
> I would like to delete the second value in my image files but i  
> don’t know how...
>
> I put an example at thes link :
>
> http://xfer.curie.fr/get/ 
> 0DPxW0CsPv8/20110712_3T3PAF_miNEG_72h_01_22_R3D.dv
> http://xfer.curie.fr/get/uaonAwJffQV/ 
> 20110712_3T3PAF_miNEG_72h_01_22_R3D.dv.log
>
> If someone have a solution...
>
> Best,
>
> Sylvain Cantaloube
> UMR 218 du CNRS
Reply | Threaded
Open this post in threaded view
|

Re: Two pixel values !!!

Olivier Burri
In reply to this post by Sylvain Cantaloube
Hi

> Whan i open my file with ImageJ, pixel values appear like that : value=x (x+32768)

Your Image is Calibrated. If you want to have only the first (Or second) value:
1. In Analyze -> Calibrate, Select "None"
2. Subtract 32768 from your image in Process -> Math -> Subtract

Best, and nice pics :)

Oli
Reply | Threaded
Open this post in threaded view
|

Re: Two pixel values !!!

Rasband, Wayne (NIH/NIMH) [E]
In reply to this post by Sylvain Cantaloube
On Jul 18, 2011, at 8:14 AM, Sylvain Cantaloube wrote:

> Hi,
>
> I have a problem with my image files from DeltaVision (Managed with SoftWork)
>
> Whan i open my file with ImageJ, pixel values appear like that : value=x (x+32768)
>
> Thus, I have two pixel values :
> - The normal pixel value
> - This same value plus 32768
>
> The problem is : for some operations (Threshold, B&C...) ImageJ takes in account the first value, for others (3D Object Counter plugin) it takes the second value.
>
> I would like to delete the second value in my image files but i don’t know how...
>
> I put an example at thes link :
>
> http://xfer.curie.fr/get/0DPxW0CsPv8/20110712_3T3PAF_miNEG_72h_01_22_R3D.dv
> http://xfer.curie.fr/get/uaonAwJffQV/20110712_3T3PAF_miNEG_72h_01_22_R3D.dv.log

Use the Plugins>Tools>Signed 16-bit to Unsigned script to make the images unsigned. This script, shown below, is included with ImageJ 1.44.

-wayne

  imp = IJ.getImage();
  stack = imp.getStack();
  if (stack.isVirtual())
     IJ.error("Non-virtual stack required");
  cal = imp.getCalibration();
  if (!cal.isSigned16Bit())
     IJ.error("Signed 16-bit image required");
  cal.disableDensityCalibration();
  ip = imp.getProcessor();
  min = ip.getMin();
  max = ip.getMax();
  stats = new StackStatistics(imp);
  minv = stats.min;
  for (i=1; i<=stack.getSize(); i++) {
     ip = stack.getProcessor(i);
     ip.add(-minv);
  }
  imp.setStack(stack);
  ip = imp.getProcessor();
  ip.setMinAndMax(min-minv, max-minv);
  imp.updateAndDraw();