This discussion is archived
2 Replies Latest reply: Nov 4, 2011 4:23 AM by 897927 RSS

How to auto adjust images in imageJ?

897927 Newbie
Currently Being Moderated
Hello,

I would like to know How can I adjust the contrast and brightness in imageJ using a Java application?
imageJ has
 ContrastAdjuster.java 
and inside it an
 autoAdjust 
function which is not public, so I cannot call it? any one has experience with this?

Best Regards,
  • 1. Re: How to auto adjust images in imageJ?
    896874 Newbie
    Currently Being Moderated
    Your calling class needs to be at that access modifier allowance ,
    since your caller probably isn't,
    you can make a small class with that access level(no specifier - is between protected and private) to join it that you can reference with your caller package level,
    or probably better, a nested class of that access level in your caller class with global scope instantiation in your caller.

    *// not all syntax is here - This just to give you a guide of the type of access specifier shuffling and reprocessing to obtain the methods variables at the same level as obtaining the ability to call the method , it may be more practical to target the class in imageJ that instantiates the ContrastAdjuster class and simply obtain its reference to ContrastAdjuster*
    *//ContrastAdjuster adj - should be passed from wherever it is instantiated , presumably its in a higher level class frame in the application*

    public class IwasCalling{
    CallAutoAdjuster callAUTContraster;

    public IwasCalling(ContrastAdjuster adj){
    callAUTContraster = new CallAutoAdjuster();


    }


    //start nested class
    class CallAutoAdjuster{

    void callAutoAdjuster(){

    autoAdjust(imp,ip); // ImagePlus imp , ImageProcessor ip

    }//end method

    }//end nested

    }//end iwascalling

    Edited by: 893871 on Nov 3, 2011 6:53 PM

    After taking a good look at the .java files
    --i find the doAutoAdjust variable requires to be set in the public class ContrastAdjuster and call notify()--
    ..and i have no idea how i lost the plot there... it was the contrast slider value you wanted
    so a method would be from some class you create
    // contr is the reference to the ij plugin frame extended from JFrame that ContrastAdjuster.java extends from
    //
    
    public int adJustContrast(int slideVal){ // this listener method sets an int in  ContrastAdjuster public synchronized void adjustmentValueChanged(AdjustmentEvent e)
    // with the line contrastValue = contrastSlider.getValue();
    // int sliderRange = 256; this global int is divided by two appears to be the Max for contrast and the or a scrollbar appears to be a make-shift slider value changer
    contr.contrastValue = slideVal; // global accessible int in ContrastAdjuster
    return contr.contrastValue;
    }
    
    public boolean adjAuto(){
    contr.doAutoAdjust = true;
    return contr.doAutoAdjust;
    }
    
    public void updateNotifyComm(){ // now update the app
    contr.notify();
    }
    
    
    //............... so you would call from somewhere to do it by this after making those methods
    adJustContrast(contr.contrastSlider.getValue());
    updateNotifyComm(); // or just running code of contr.notify();
    // i have no idea how that became boolean  doAutoAdjust in my mind
    
    // for auto adjust
    adjAuto();
    updateNotifyComm();
    Edited by: 893871 on Nov 3, 2011 8:15 PM

    Edited by: 893871 on Nov 3, 2011 8:17 PM

    Edited by: 893871 on Nov 3, 2011 8:23 PM
  • 2. Re: How to auto adjust images in imageJ?
    897927 Newbie
    Currently Being Moderated
    Thank you for your assistance,

    I was able to find a simpler way to do that, thanks to imageJ
    developer Wayne Rasband,
    Recording a macro will generate the java code which can be used in the java application:
    IJ.run(imPlus, "Enhance Contrast", "saturated=0.35");
    Best Regards,

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points