ij-plugins / ijp-color

Plugins for ImageJ - color space conversions and color calibration
GNU Lesser General Public License v2.1
23 stars 2 forks source link

Error running Color Calibrator in Image J #51

Closed rsporsche closed 3 years ago

rsporsche commented 3 years ago

I downloaded the latest ImageJ and ijp-color. I can run the Color chart tool but if I try the Color calibrator I get an error message 'Unknown Error' with this output:

java.security.PrivilegedActionException: javafx.fxml.LoadException: file:/C:/Users/ADMINI~1/Desktop/ImageJ/plugins/ij-plugins/ijp-color-ui_2.13-0.9.0.jar!/net/sf/ij_plugins/color/ui/calibration/ColorCalibrator.fxml:29

at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) at java.lang.Thread.run(Thread.java:745) Caused by: javafx.fxml.LoadException: file:/C:/Users/ADMINI~1/Desktop/ImageJ/plugins/ij-plugins/ijp-color-ui_2.13-0.9.0.jar!/net/sf/ij_plugins/color/ui/calibration/ColorCalibrator.fxml:29

at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601) at javafx.fxml.FXMLLoader.access$700(FXMLLoader.java:103) at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:922) at javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(FXMLLoader.java:971) at javafx.fxml.FXMLLoader$Element.processStartElement(FXMLLoader.java:220) at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:744) at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2707) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2527) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441) at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409) at scalafxml.core.FXMLView$.apply(FXMLView.scala:19) at org.scalafx.extras.mvcfx.MVCfx.createFXMLView(MVCfx.scala:129) at org.scalafx.extras.mvcfx.MVCfx.view$lzycompute(MVCfx.scala:71) at org.scalafx.extras.mvcfx.MVCfx.view(MVCfx.scala:70) at net.sf.ij_plugins.color.ui.calibration.ColorCalibratorPlugin.$anonfun$run$1(ColorCalibratorPlugin.scala:99) at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) at scalafx.application.Platform$$anon$1.run(Platform.scala:148) at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) ... 6 more Caused by: java.lang.ClassNotFoundException: net.sf.ij_plugins.color.ui.calibration.ColorCalibratorUIController at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:920) ... 21 more

I've tried this on Windows 7, Windows 10, Windows Server 2012 R2 and also tried a number of older ImageJ and ijp-color releases but no luck with any of these combinations.

If I try to run the Color calculator I get an error message "Invalid URL" with this output:

java.lang.IllegalArgumentException: Invalid URL: Invalid URL or resource not found at javafx.scene.image.Image.validateUrl(Image.java:1118) at javafx.scene.image.Image.(Image.java:620) at javafx.scene.image.ImageView.(ImageView.java:166) at scalafx.scene.image.ImageView.(ImageView.scala:55) at net.sf.ij_plugins.color.ui.util.IJPUtils$.createHeaderNode(IJPUtils.scala:146) at net.sf.ij_plugins.color.ui.converter.ColorConverterView.createGidPane(ColorConverterView.scala:137) at net.sf.ij_plugins.color.ui.converter.ColorConverterView.pane$lzycompute(ColorConverterView.scala:60) at net.sf.ij_plugins.color.ui.converter.ColorConverterView.pane(ColorConverterView.scala:60) at net.sf.ij_plugins.color.ui.converter.ColorConverterPlugin$$anon$1$$anon$2.(ColorConverterPlugin.scala:76) at net.sf.ij_plugins.color.ui.converter.ColorConverterPlugin$$anon$1.(ColorConverterPlugin.scala:73) at net.sf.ij_plugins.color.ui.converter.ColorConverterPlugin.$anonfun$run$1(ColorConverterPlugin.scala:71) at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) at scalafx.application.Platform$$anon$1.run(Platform.scala:148) at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.IllegalArgumentException: Invalid URL or resource not found at javafx.scene.image.Image.validateUrl(Image.java:1110) ... 19 more

jpsacha commented 3 years ago

What version of ijp-color did you download? The latest release is v.0.10.2. The error indicates that you are using v.0.9.0. Maybe you have both versions installed at the some time. Can you check content of your ImageJ/plugins/ij-plugins?

rsporsche commented 3 years ago

Sorry, the previous exception stack trace was with 0.9.0. Pretty much the same with 0.10.2 though:

java.security.PrivilegedActionException: javafx.fxml.LoadException: file:/C:/Users/Robert/Desktop/ImageJ/plugins/ij-plugins/ijp-color-ui_2.13-0.10.2.jar!/ij_plugins/color/ui/calibration/ColorCalibrator.fxml:29

at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177) at java.lang.Thread.run(Thread.java:748) Caused by: javafx.fxml.LoadException: file:/C:/Users/Robert/Desktop/ImageJ/plugins/ij-plugins/ijp-color-ui_2.13-0.10.2.jar!/ij_plugins/color/ui/calibration/ColorCalibrator.fxml:29

at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601) at javafx.fxml.FXMLLoader.access$700(FXMLLoader.java:103) at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:922) at javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(FXMLLoader.java:971) at javafx.fxml.FXMLLoader$Element.processStartElement(FXMLLoader.java:220) at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:744) at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2707) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2527) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441) at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409) at scalafxml.core.FXMLView$.apply(FXMLView.scala:19) at org.scalafx.extras.mvcfx.MVCfx.createFXMLView(MVCfx.scala:129) at org.scalafx.extras.mvcfx.MVCfx.view$lzycompute(MVCfx.scala:71) at org.scalafx.extras.mvcfx.MVCfx.view(MVCfx.scala:70) at ij_plugins.color.ui.calibration.ColorCalibratorPlugin.$anonfun$run$1(ColorCalibratorPlugin.scala:99) at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) at scalafx.application.Platform$$anon$1.run(Platform.scala:148) at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295) ... 6 more Caused by: java.lang.ClassNotFoundException: ij_plugins.color.ui.calibration.ColorCalibratorUIController at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:920) ... 21 more

jpsacha commented 3 years ago

Which version of Java are you running?

I can preproduce the problem when running Java 8 ("official" ImageJ distribution). If JRE is switched to Java 11 it works fine (imagej.exe also needs to be replaced with new version).

If you ware able to switch to Java 11 let me know, otherwise I will need to workout some simple instructions how to set it up with Java 11 and new imagej.exe (from FIJI) - there my be something on FIJI website on updating Java to newer version.

rsporsche commented 3 years ago

I got it working now by installing FIJI and then adding the IJ-Plugins update site.

Not sure which Java version I have because to be honest the Java versioning is confusing, I think it's 8 anyway.

Btw, this is getting off topic but is there any way to get the matrix that's used for the color correction? I actually want to compute a CCM for an image sensor that I have connected to a Raspberry pi.

jpsacha commented 3 years ago

Yes you can get the "matrix". If you select "Show Extra Info" here will a result table "* Regression Coefficients". Those are coefficient for a polynomial used to compute color correction (from original image to corrected). You can ignore higher order terms, if you do not use them, they will be 0 anyway. Most likely you need to select sRGB as a Reference to get a regular color image.

rsporsche commented 3 years ago

Thanks, that works, is there any way to disable the intercepts so I can get a 3x3 matrix instead of 4x3 though?

jpsacha commented 3 years ago

Adding option to use method without offset is possible (easy computationally), but it will snowball into several changed due to current naming convention. Currently "Linear" is used as having offset. Some understand "Linear" for operation without "offset". Not clear how to update the names ("Linear", "Quadratic", "Cubic") to accommodate no offset. Suggestions?

Anyway this should go into a new issue. Can you add one?

rsporsche commented 3 years ago

Ok, will do