Fwd: Problem with setCalibration() and getCalibration

Posted by Dawid Krzempek on
URL: http://imagej.273.s1.nabble.com/Problem-with-setCalibration-and-getCalibration-tp5010425p5010428.html

Thanks for your reply. Now I understand, but it's not the end of my
problems. :)

As you can see from my code, I try to calibrate image using values (table),
not by function - my function is different than any of available in ImageJ.

But when I calibrate like this, image after display it is not calibrated. I
use *calib *in setCalibration() or setGlobalCalibration() - both are not
working.
When Global calibration is using, there are some "tracks" of calibration.
For example, when I am trying to open another Image, I get:
"The calibration of this image conflicts with the current global
calibration...."
But in fact image is not calibrated. Information about pixel doesn't seem
like that:
x=0, y=10 value=650 (6500)
It seems like that:
x=0, y=10 value=6500
So I don't have any information about calibrated value.
I have no idea, what I am doing wrong.
Maybe the function is obligatory to make ImageProcessor calibration
possible?
Thanks in advance
David

2014-11-13 18:32 GMT+01:00 Michael Schmid <[hidden email]>:

> Hi Wayne, David,
>
> looks like an unintended behavior in Calibration, currently calibrated()
> only checks for a function, not for a table (line 283...):
>
>     /** Returns true if this image is density calibrated. */
>     public boolean calibrated() {
>         return function!=NONE;
>     }
>
>
> I think that it should be
> ...
>         return function!=NONE || cTable != null;
>
>
> Best regards,
>
> Michael
> ________________________________________________________________
> Michael Schmid                    email: [hidden email]
> Institut für Angewandte Physik, Technische Universität Wien
> Wiedner Hauptstr. 8-10/E134, A 1040 Wien, Austria
> Tel. +43 1 58801-13452 or -13453, Fax +43 1 58801 13499
> ________________________________________________________________
>
> On Nov 13, 2014, at 18:10, Dawid Krzempek wrote:
>
> > Hello,
> > I am writing some Imagej plugin and have few problems with value
> calibration.
> > I am not experienced in writing programs like this one, so the solution
> can be very simple.
> >
> > I try to calibrate ImagePlus. There is my code (img1 is ImagePlus object)
> >
> >                float [] param={146494f,3.55146f,2079.82f};
> >                float cTable[]=new float[65536];
> >                Calibration calibr=new Calibration();
> >                float a=param[0];
> >                float b=param[1];
> >                float c=param[2];
> >                for (int i=0;i<65536;i++){
> >                    float value=-b+a/(i-c);
> >                    if (value>10) cTable[i]=10;
> >                    else if (value<0) cTable[i]=0;
> >                    else cTable[i]=value;
> >                }
> >                calibr.setCTable(cTable,"Gy");
> >                System.out.println(calibr.calibrated());
> >                img1.setCalibration(calibr);;
> >                System.out.println(img1.getCalibration().calibrated());
> >
> > The output then:
> >
> > true
> > false
> >
> > setCalibration() seems not working. Image is not calibrated after using
> this method. I was expected "true true" output Could somebody tell me,
> where is my mistake?
> > The goal of calibration is working on calibrated (Gy) values, not on
> signal values. Is there any other way to achieve it?
> > Thanks for your help
> > David
> >
> > --
> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
>

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