Hello, all. I just tried something in IJ 1.39q that had been working previously, but is now not working. To summarize, my plugin is supposed to draw on top of an image, and has been working until I upgraded, but now shifts the drawing to the top left corner of the image. It could be my code, as I have not even looked at it yet, but I was just wondering if this is a known thing with the latest version and if there is an explanation of what is going on.
Thanks, Audrey |
Hi list,
I really like the "Dynamic Profiler" plugin, I wonder if there is already something similar to a "Dynamic Measure" plugin? The idea is to have measurements similar to the measue window, but the numbers are immediately updated if the image contents changes or the ROI is moved/resized. Has anybody done that before? I already started to work on a simple version, for the very first version I only need the Mean value and probably Min and Max of a ROI/the active ROIs. You should also be able to define and again remove a "reference" ROI that is taken as "zero". The location of the ref. ROI is shown as an image overlay and you can go back and forth between the measurement and reference ROI and change them. It should later be relatively easy to add further properties as in the "Measure" command. Any comments/suggestions? Mit freundlichen Grüßen / Best regards Joachim Wesner ______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email ______________________________________________________________________ |
Hi list,
while working on my "Dynamic Measuring" plugin I noticed that probably something should be added to the ImageJ core: There is an ImageListener with the appropriate events, but no such event that fires when the ROI is changed. For example the "Dynamic Profiler" goes greats lengths to capture all appropriate Mouse and Keyboard events to catch a probable ROI change, however, with the new capabilities that the ROI manager adds, it will still fail when the ROI is switched from there. I would request some extension, at best an extra event in ImageListener, that fires when the ROI is changed. Or is there already a way to do this efficiently? Sincerely Joachim Wesner Leica Microsystems CMS GmbH | GmbH mit Sitz in Wetzlar | Amtsgericht Wetzlar HRB 2432 Geschäftsführer: Dr. Stefan Traeger | Dr. Wolf-Otto Reuter | Dr. David Roy Martyr | Colin Davis ______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email ______________________________________________________________________ |
Hi Joachim,
What about the following? Not very elegant, but it might work: Register your plugin as a listener of the ROI Manager on the "java.awt.Component" level So register by addMouseListener and addMouseWheelListener of the ROI manager itself. Probably you also have to do a loop over all components of the ROI manager, for (i=0; i<roiManager.getComponentCount(); i++) for the buttons: roiManager.getComponent(i).addActionListener To get a handle to the ROI manager, I guess that RoiMangager roiManager = (RoiManager) WindowManager.getFrame("ROI Manager"); should work. Of course, always checking whether a roi manager exists, or whether there is a new roi manager (closed and opened) and then de-registering to the old one and registering with the new one is not a very elegant solution. Also, changes to a roi done in a macro won't trigger an event unless we have something like a RoiListener. A pity that one can't simply add a new roiChanged() method to ImageListener without breaking compatibility with existing plugins. Michael ________________________________________________________________ On 11 Feb 2008, at 10:13, Joachim Wesner wrote: > Hi list, > > while working on my "Dynamic Measuring" plugin I noticed that probably > something should be added to the ImageJ core: > > There is an ImageListener with the appropriate events, but no such > event > that fires when the ROI is changed. > For example the "Dynamic Profiler" goes greats lengths to capture all > appropriate Mouse and Keyboard events to catch a probable ROI change, > however, with the new capabilities that the ROI manager adds, it > will still > fail when the ROI is switched from there. > > I would request some extension, at best an extra event in > ImageListener, > that fires when the ROI is changed. > > Or is there already a way to do this efficiently? > > Sincerely > > Joachim Wesner > > > Leica Microsystems CMS GmbH | GmbH mit Sitz in Wetzlar | Amtsgericht > Wetzlar HRB 2432 > Geschäftsführer: Dr. Stefan Traeger | Dr. Wolf-Otto Reuter | Dr. > David Roy > Martyr | Colin Davis > > > ______________________________________________________________________ > This email has been scanned by the MessageLabs Email Security System. > For more information please visit http://www.messagelabs.com/email > ______________________________________________________________________ |
Hi Michael,
sounds interesting, I did not think along those lines, listening to the ROI manager components is a new concept I did not consider yet. I will give it a try. That a ROI Listener might be also useful together with a macro is another good argument to have one! Hint!? Thanx alot Mit freundlichen Grüßen / Best regards Joachim Wesner Michael Schmid <[hidden email] N.AC.AT> An Gesendet von: [hidden email] ImageJ Interest Kopie Group <[hidden email]. Thema GOV> Re: ROI Listener? 11.02.2008 10:59 Bitte antworten an ImageJ Interest Group <[hidden email]. GOV> Hi Joachim, What about the following? Not very elegant, but it might work: Register your plugin as a listener of the ROI Manager on the "java.awt.Component" level So register by addMouseListener and addMouseWheelListener of the ROI manager itself. Probably you also have to do a loop over all components of the ROI manager, for (i=0; i<roiManager.getComponentCount(); i++) for the buttons: roiManager.getComponent(i).addActionListener To get a handle to the ROI manager, I guess that RoiMangager roiManager = (RoiManager) WindowManager.getFrame("ROI Manager"); should work. Of course, always checking whether a roi manager exists, or whether there is a new roi manager (closed and opened) and then de-registering to the old one and registering with the new one is not a very elegant solution. Also, changes to a roi done in a macro won't trigger an event unless we have something like a RoiListener. A pity that one can't simply add a new roiChanged() method to ImageListener without breaking compatibility with existing plugins. Michael ________________________________________________________________ On 11 Feb 2008, at 10:13, Joachim Wesner wrote: > Hi list, > > while working on my "Dynamic Measuring" plugin I noticed that probably > something should be added to the ImageJ core: > > There is an ImageListener with the appropriate events, but no such > event > that fires when the ROI is changed. > For example the "Dynamic Profiler" goes greats lengths to capture all > appropriate Mouse and Keyboard events to catch a probable ROI change, > however, with the new capabilities that the ROI manager adds, it > will still > fail when the ROI is switched from there. > > I would request some extension, at best an extra event in > ImageListener, > that fires when the ROI is changed. > > Or is there already a way to do this efficiently? > > Sincerely > > Joachim Wesner > > > Leica Microsystems CMS GmbH | GmbH mit Sitz in Wetzlar | Amtsgericht > Wetzlar HRB 2432 > Geschäftsführer: Dr. Stefan Traeger | Dr. Wolf-Otto Reuter | Dr. > David Roy > Martyr | Colin Davis > > > ______________________________________________________________________ > This email has been scanned by the MessageLabs Email Security System. > For more information please visit http://www.messagelabs.com/email > ______________________________________________________________________ ______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email ______________________________________________________________________ |
In reply to this post by Michael Schmid
Hi Michael,
ImageJ Interest Group <[hidden email]> schrieb am 11.02.2008 10:59:09: > Hi Joachim, > > What about the following? Not very elegant, but it might work: > Register your plugin as a listener of the ROI Manager > on the "java.awt.Component" level > > So register by addMouseListener and addMouseWheelListener > of the ROI manager itself. > Probably you also have to do a loop over all components of the > ROI manager, > for (i=0; i<roiManager.getComponentCount(); i++) > for the buttons: > roiManager.getComponent(i).addActionListener > > To get a handle to the ROI manager, I guess that > RoiMangager roiManager = (RoiManager) WindowManager.getFrame("ROI > Manager"); > should work. > > Of course, always checking whether a roi manager exists, or > whether there is a new roi manager (closed and opened) and then > de-registering to the old one and registering with the new one > is not a very elegant solution. > Also, changes to a roi done in a macro won't trigger an event > unless we have something like a RoiListener. > > A pity that one can't simply add a new roiChanged() method > to ImageListener without breaking compatibility with existing > plugins. > > Michael I would rather/also consider using some "polling" by a background thread (say a few times/sec) to see if the ROI information of an ImagePlus has changed. This poses the question how to do an efficient "deep" compare of ROIs, i.e. the main idea is to update the probably computationally a bit expensive "Dynamic info" only if it is really necessary, otherwise a ROI is a complex object, how deep would one need to compare to see if it really changed? Which changes only update data fields (likely with rectangular/oval ROIs), which changes create new "subobjects" (likely Polygo ROI/shape ROI) nand could be detected comparing references only? I fear I have to go back to "the source"! BTW, working on this I discovered/it seems (What I already mentioned in another thread) that "wide" reps. "thick" line selections are not yet handled correctly in some place, i.e. you cannot combine those in the ROI manager. I assume this is still based on the idea that a single line selection cannot have an area (but it can, I alaways prefer using "wide" lines with the profiler) Sincerely Mit freundlichen Grüßen / Best regards Joachim Wesner Leica Microsystems CMS GmbH | GmbH mit Sitz in Wetzlar | Amtsgericht Wetzlar HRB 2432 Geschäftsführer: Dr. Stefan Traeger | Dr. Wolf-Otto Reuter | Dr. David Roy Martyr | Colin Davis ______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email ______________________________________________________________________ |
Hi Joachim,
Concerning the question of how to compare Rois: My suggestion would be comparing first the outline Rectangle (java.awt.Rectangle has an equals method). Then compare the mask (getMask) unless it and the previous mask are null. This can be done simply with "==", i.e. checking that it is the same object. ImageJ caches the mask of a roi, so it should remain unchanged if the roi remains unchanged. Creating a mask won't cause additional computing time since the various statistics like FloatStatistics need a mask anyhow. The only significant cost of this procedure would be additional memory demand since the old mask can't be garbage collected while there is a reference to it for comparing it with the new one. But I think that one can live with it. --- Area rois for thick lines - that would be an advantage in many cases, but it could be a disadvantage in others: I also like thick lines to eliminate noise in profiles. Making thick lines an area roi would make filters operate on this area only. E.g., if I use the dynamic profiler together with preview of a filter to see how the filter would affect the profile (e.g. edge conservation, overshoot, ...) I do not want the filter operation to be restricted to the line. So, what I would prefer is some way to convert a line roi to an area roi. Maybe there is one and I am not aware of it? Michael ________________________________________________________________ On 12 Feb 2008, at 09:54, Joachim Wesner wrote: > Hi Michael, > > ImageJ Interest Group <[hidden email]> schrieb am 11.02.2008 > 10:59:09: > >> Hi Joachim, >> >> What about the following? Not very elegant, but it might work: >> Register your plugin as a listener of the ROI Manager >> on the "java.awt.Component" level >> >> So register by addMouseListener and addMouseWheelListener >> of the ROI manager itself. >> Probably you also have to do a loop over all components of the >> ROI manager, >> for (i=0; i<roiManager.getComponentCount(); i++) >> for the buttons: >> roiManager.getComponent(i).addActionListener >> >> To get a handle to the ROI manager, I guess that >> RoiMangager roiManager = (RoiManager) WindowManager.getFrame("ROI >> Manager"); >> should work. >> >> Of course, always checking whether a roi manager exists, or >> whether there is a new roi manager (closed and opened) and then >> de-registering to the old one and registering with the new one >> is not a very elegant solution. >> Also, changes to a roi done in a macro won't trigger an event >> unless we have something like a RoiListener. >> >> A pity that one can't simply add a new roiChanged() method >> to ImageListener without breaking compatibility with existing >> plugins. >> >> Michael > > I would rather/also consider using some "polling" by a background > thread > (say a few times/sec) to see > if the ROI information of an ImagePlus has changed. > > This poses the question how to do an efficient "deep" compare of > ROIs, i.e. > the main idea is to > update the probably computationally a bit expensive "Dynamic info" > only if > it is really necessary, > otherwise a ROI is a complex object, how deep would one need to > compare to > see if it really changed? > Which changes only update data fields (likely with rectangular/oval > ROIs), > which changes create new "subobjects" > (likely Polygo ROI/shape ROI) nand could be detected comparing > references > only? I fear I have to go back to "the source"! > > BTW, working on this I discovered/it seems (What I already > mentioned in > another thread) that "wide" reps. "thick" line > selections are not yet handled correctly in some place, i.e. you > cannot > combine those in the ROI manager. I assume this is > still based on the idea that a single line selection cannot have an > area > (but it can, I alaways prefer using "wide" lines > with the profiler) > > Sincerely > > Mit freundlichen Grüßen / Best regards > > Joachim Wesner > |
In reply to this post by Joachim Wesner
Hi,
On Mon, 11 Feb 2008, Joachim Wesner wrote: > while working on my "Dynamic Measuring" plugin I noticed that probably > something should be added to the ImageJ core: > > There is an ImageListener with the appropriate events, but no such event > that fires when the ROI is changed. How about the patch below? NOTENOTENOTE: this will break all existing ImageListeners, as ImageListener is an interface, not a class. So if you have a compiled plugin implementing an ImageListener, ImageJ+this patch will try to call the roiChanged() method on that class, and fail with an exception that the method was not found. Wayne, how about making ImageListener a class, not an interface, with ellipses for all methods? Then it would be extensible in a safe (read: backwards-compatible) manner... Unfortunately, the ImageListener is an (unchanged) interface already since 1.35l (9 January 2006), so making it a class would also break quite a few plugins, I guess. Ciao, Dscho P.S.: if you want to download a snapshot of ImageJA with this patch, just download the source from: http://repo.or.cz/w/imageja.git?a=snapshot;h=roi-changed;sf=tgz -- snipsnap -- [PATCH] ImageListener: add roiChanged() method Whenever a ROI is changed, this method is called with the ImagePlus whose ROI was changed. Note: This method is not called when a ROI is "killed". Signed-off-by: Johannes Schindelin <[hidden email]> --- ij/ImageListener.java | 1 + ij/ImagePlus.java | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletions(-) diff --git a/ij/ImageListener.java b/ij/ImageListener.java index 4edda9f..3f43162 100644 --- a/ij/ImageListener.java +++ b/ij/ImageListener.java @@ -10,4 +10,5 @@ package ij; public void imageUpdated(ImagePlus imp); + public void roiChanged(ImagePlus imp); } diff --git a/ij/ImagePlus.java b/ij/ImagePlus.java index bfe13e1..7a0780b 100644 --- a/ij/ImagePlus.java +++ b/ij/ImagePlus.java @@ -58,7 +58,8 @@ public class ImagePlus implements ImageObserver, Measurements { protected ImageWindow win; protected Roi roi; protected int currentSlice; - protected static final int OPENED=0, CLOSED=1, UPDATED=2; + protected static final int OPENED=0, CLOSED=1, UPDATED=2, + ROI_CHANGED=3; protected boolean compositeImage; protected int width; protected int height; @@ -1119,6 +1120,7 @@ public class ImagePlus implements ImageObserver, Measurements { ip.resetRoi(); } roi.setImage(this); + notifyListeners(ROI_CHANGED); draw(); } @@ -1168,6 +1170,7 @@ public class ImagePlus implements ImageObserver, Measurements { } break; } + notifyListeners(ROI_CHANGED); } /** Deletes the current region of interest. Makes a copy @@ -1205,6 +1208,7 @@ public class ImagePlus implements ImageObserver, Measurements { roi.setLocation((width-r.width)/2, (height-r.height)/2); else if (r.width==width && r.height==height) // is it the same size as the image roi.setLocation(0, 0); + notifyListeners(ROI_CHANGED); draw(); } } @@ -1674,6 +1678,9 @@ public class ImagePlus implements ImageObserver, Measurements { case UPDATED: listener.imageUpdated(this); break; + case ROI_CHANGED: + listener.roiChanged(this); + break; } } } -- 1.5.4.1.1276.g92036 |
Hi,
I've encountered a similar issue watching for changes when an ROI is altered ( e.g. handle dragged, addPoints, grow). I would avoid using an abstract class, because then you have to inhereit from it if you want to listen to the changes. If you had a plugin that wants to listen to a ROI change, you would have to inherit from PlugIn, so you couldn't inherit from ROIListener, and would have to create a member variable for it and relay the event, it gets really messy. So I would say stick with an interface. I see three possibilities: 1) One quick and dirty but minimal changes way to do it is simply override imageUpdate (since really the image IS getting updated). Add notifyListeners(UPDATED) where Johannes indicated. Then your ImageListener simply stores a pointer to the roi, and test it against the imp.roi when the event is fired to see if indeed the ROI changed, or if the update was fired from the existing places. This *does* mean existing plugins will get extra update messages when the ROI changes, but I can't imagine how it would effect them negatively. 2) create a ROIListener. But think about future expansions and make it generic. Most interfaces pass a hint or parameter to indicate exactly what happened. i.e. my ROIListener looks like this: public interface ROIListener { //hints that tell what fired the update (in 1.5+ this would be an enum) public static int SETLOCATION = 1; public static int GROW = 2; public static int NUDGE = 3; public static int MOVEHANDLE = 4; etc... public void ROIUpdated(ImagePlus imp, ROI roi, int hint, Object roiUpdateArgs ); } That way in the future, I can add more triggers as needed by adding more static ints, but I don't have to change the interface at all. It also allows for me to create any struct roiUpdateArgs and stuff it with info, such as the previous position (or pass null). A good example is Sun's ImageObserver: http://java.sun.com/j2se/1.3/docs/api/java/awt/image/ImageObserver.html 3) Change the current ImageListener. But if this is done, I would add the hints and args as above so that it doesn't need to change in the future. Just my 2 cents. On 2/12/08, Johannes Schindelin <[hidden email]> wrote: > > Hi, > > On Mon, 11 Feb 2008, Joachim Wesner wrote: > > > while working on my "Dynamic Measuring" plugin I noticed that probably > > something should be added to the ImageJ core: > > > > There is an ImageListener with the appropriate events, but no such event > > that fires when the ROI is changed. > > How about the patch below? > > NOTENOTENOTE: this will break all existing ImageListeners, as > ImageListener is an interface, not a class. So if you have a compiled > plugin implementing an ImageListener, ImageJ+this patch will try to call > the roiChanged() method on that class, and fail with an exception that the > method was not found. > > Wayne, how about making ImageListener a class, not an interface, with > ellipses for all methods? Then it would be extensible in a safe (read: > backwards-compatible) manner... > > Unfortunately, the ImageListener is an (unchanged) interface already since > 1.35l (9 January 2006), so making it a class would also break quite a few > plugins, I guess. > > Ciao, > Dscho > > P.S.: if you want to download a snapshot of ImageJA with this patch, just > download the source from: > > http://repo.or.cz/w/imageja.git?a=snapshot;h=roi-changed;sf=tgz > > -- snipsnap -- > [PATCH] ImageListener: add roiChanged() method > > Whenever a ROI is changed, this method is called with the ImagePlus > whose ROI was changed. > > Note: This method is not called when a ROI is "killed". > > Signed-off-by: Johannes Schindelin <[hidden email]> > --- > ij/ImageListener.java | 1 + > ij/ImagePlus.java | 9 ++++++++- > 2 files changed, 9 insertions(+), 1 deletions(-) > > diff --git a/ij/ImageListener.java b/ij/ImageListener.java > index 4edda9f..3f43162 100644 > --- a/ij/ImageListener.java > +++ b/ij/ImageListener.java > @@ -10,4 +10,5 @@ package ij; > > public void imageUpdated(ImagePlus imp); > > + public void roiChanged(ImagePlus imp); > } > diff --git a/ij/ImagePlus.java b/ij/ImagePlus.java > index bfe13e1..7a0780b 100644 > --- a/ij/ImagePlus.java > +++ b/ij/ImagePlus.java > @@ -58,7 +58,8 @@ public class ImagePlus implements ImageObserver, > Measurements { > protected ImageWindow win; > protected Roi roi; > protected int currentSlice; > - protected static final int OPENED=0, CLOSED=1, UPDATED=2; > + protected static final int OPENED=0, CLOSED=1, UPDATED=2, > + ROI_CHANGED=3; > protected boolean compositeImage; > protected int width; > protected int height; > @@ -1119,6 +1120,7 @@ public class ImagePlus implements ImageObserver, > Measurements { > ip.resetRoi(); > } > roi.setImage(this); > + notifyListeners(ROI_CHANGED); > draw(); > } > > @@ -1168,6 +1170,7 @@ public class ImagePlus implements ImageObserver, > Measurements { > } > break; > } > + notifyListeners(ROI_CHANGED); > } > > /** Deletes the current region of interest. Makes a copy > @@ -1205,6 +1208,7 @@ public class ImagePlus implements ImageObserver, > Measurements { > roi.setLocation((width-r.width)/2, > (height-r.height)/2); > else if (r.width==width && r.height==height) > // is it the same size as the image > roi.setLocation(0, 0); > + notifyListeners(ROI_CHANGED); > draw(); > } > } > @@ -1674,6 +1678,9 @@ public class ImagePlus implements ImageObserver, > Measurements { > case UPDATED: > listener.imageUpdated > (this); > break; > + case ROI_CHANGED: > + listener.roiChanged(this); > + break; > } > } > } > -- > 1.5.4.1.1276.g92036 > |
In reply to this post by Joachim Wesner
Hi Joachim,
i've just posted a macro tool that does this. It also displays a live histogram of the selected ROI using a standard plot window. You can find this macro at : http://rsb.info.nih.gov/ij/macros/tools/Dynamic_Stats_and_Histo.txt Thanks to Wayne for improving it. Note that Gilles Carpentier also suggested another method for having a custom live histogram window earlier this year in his timelaspe macro set http://rsb.info.nih.gov/ij/macros/TimeLapseVideoMacros.txt Jerome On Sun, Feb 10, 2008 at 1:07 PM, Joachim Wesner < [hidden email]> wrote: > Hi list, > > I really like the "Dynamic Profiler" plugin, I wonder if there is already > something similar to a "Dynamic Measure" plugin? > > The idea is to have measurements similar to the measue window, but the > numbers are immediately updated if the image contents changes or the ROI > is > moved/resized. > Has anybody done that before? > > I already started to work on a simple version, for the very first version > I > only need the Mean value and probably Min and Max of a ROI/the active > ROIs. > You should also be able to define and again remove a "reference" ROI that > is taken as "zero". The location of the ref. ROI is shown as an image > overlay > and you can go back and forth between the measurement and reference ROI > and > change them. > > It should later be relatively easy to add further properties as in the > "Measure" command. Any comments/suggestions? > > > Mit freundlichen Grüßen / Best regards > > Joachim Wesner > > > ______________________________________________________________________ > This email has been scanned by the MessageLabs Email Security System. > For more information please visit http://www.messagelabs.com/email > ______________________________________________________________________ > |
In reply to this post by Joachim Wesner
Hi Jerome,
Thanks for the very nice dynamic histogram & stats macro tool set. However, I noticed that it doesn't work correctly for 16 bit images. Would that be a quick fix for you to do? -- Harry Parker Senior Systems Engineer Digital Imaging Systems, Inc. ----- Original Message ---- From: Jerome Mutterer <[hidden email]> To: [hidden email] Sent: Thursday, February 14, 2008 10:54:22 AM Subject: Re: Dynamic measure plugin Hi Joachim, i've just posted a macro tool that does this. It also displays a live histogram of the selected ROI using a standard plot window. You can find this macro at : http://rsb.info.nih.gov/ij/macros/tools/Dynamic_Stats_and_Histo.txt Thanks to Wayne for improving it. Note that Gilles Carpentier also suggested another method for having a custom live histogram window earlier this year in his timelaspe macro set http://rsb.info.nih.gov/ij/macros/TimeLapseVideoMacros.txt Jerome On Sun, Feb 10, 2008 at 1:07 PM, Joachim Wesner < [hidden email]> wrote: > Hi list, > > I really like the "Dynamic Profiler" plugin, I wonder if there is already > something similar to a "Dynamic Measure" plugin? > > The idea is to have measurements similar to the measue window, but the > numbers are immediately updated if the image contents changes or the ROI > is > moved/resized. > Has anybody done that before? > > I already started to work on a simple version, for the very first version > I > only need the Mean value and probably Min and Max of a ROI/the active > ROIs. > You should also be able to define and again remove a "reference" ROI that > is taken as "zero". The location of the ref. ROI is shown as an image > overlay > and you can go back and forth between the measurement and reference ROI > and > change them. > > It should later be relatively easy to add further properties as in the > "Measure" command. Any comments/suggestions? > > > Mit freundlichen Grüßen / Best regards > > Joachim Wesner > > > ______________________________________________________________________ > This has been scanned by the MessageLabs Security System. > For more information please visit http://www.messagelabs.com/email > ______________________________________________________________________ > ____________________________________________________________________________________ Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ |
In reply to this post by jmutterer
ImageJ Interest Group <[hidden email]> schrieb am 14.02.2008 16:54:22:
> Hi Joachim, > i've just posted a macro tool that does this. It also displays a live > histogram of the selected ROI using a standard plot window. > You can find this macro at : > http://rsb.info.nih.gov/ij/macros/tools/Dynamic_Stats_and_Histo.txt > Thanks to Wayne for improving it. > > > Jerome > Hi Jerome, the plugin did not work for me as is (IJ 1.39q/Win), as I seem to have no toString(arg, n) function, only a toString(arg) function in the macro language!? Very nice plugin/macro, but I would wish that you still can resize the selection while it´s active. However using the built-in statistics is a nice idea I wil try to use for my plugin too. Thanx Joachim ______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email ______________________________________________________________________ |
Free forum by Nabble | Edit this page |