Prisma image - Matrix is numerically singular

Hi
I’m working with Prisma Satellite Image.
I produced a tiff with 230 bands and I tried to do a Unsupervised Classification EM Cluster Analisys.
After hours, I received this error message:

java.lang.ArithmeticException: Matrix is numerically singular.
at org.esa.snap.cluster.MultinormalDistribution.(MultinormalDistribution.java:52)
at org.esa.snap.cluster.EMClusterer.iterate(EMClusterer.java:226)
at org.esa.snap.cluster.EMClusterOp.performClustering(EMClusterOp.java:281)
Caused: org.esa.snap.core.gpf.OperatorException: Matrix is numerically singular.
at org.esa.snap.cluster.EMClusterOp.performClustering(EMClusterOp.java:310)
at org.esa.snap.cluster.EMClusterOp.computeTileStack(EMClusterOp.java:203)
at org.esa.snap.core.gpf.internal.OperatorImageTileStack.computeRect(OperatorImageTileStack.java:116)
at org.esa.snap.core.gpf.internal.OperatorImageTileStack.computeTile(OperatorImageTileStack.java:85)
at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904)
Caused: org.esa.snap.core.gpf.OperatorException: Matrix is numerically singular.
at org.esa.snap.core.gpf.internal.OperatorExecutor$GPFImagingListener.errorOccurred(OperatorExecutor.java:376)
at com.sun.media.jai.util.SunTileScheduler.sendExceptionToListener(SunTileScheduler.java:1646)
at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:921)
at javax.media.jai.OpImage.getTile(OpImage.java:1129)
at javax.media.jai.PlanarImage.getData(PlanarImage.java:2085)
at com.bc.ceres.glevel.MultiLevelImage.getData(MultiLevelImage.java:64)
at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile(OperatorContext.java:407)
at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile(OperatorContext.java:393)
at org.esa.snap.core.gpf.internal.OperatorImage.computeRect(OperatorImage.java:73)
at javax.media.jai.SourcelessOpImage.computeTile(SourcelessOpImage.java:137)
at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904)
at javax.media.jai.OpImage.getTile(OpImage.java:1129)
at com.sun.media.jai.util.RequestJob.compute(SunTileScheduler.java:247)
[catch] at com.sun.media.jai.util.WorkerThread.run(SunTileScheduler.java:468)

Could someone help me understand where the error could be?
Thanks In advance

I have the same problem, have you found the solution yet?

EDIT: I am using Sentinel-2’s atmospherically-corrected using Polymer, reprojected, then processed using depth invariance index processor for band 2 and 3 when this happened.

Somehow I solved this, perhaps your image has pixels with NULL values/ invalid pixels, can be seen as blacked out pixels as a result from previous prcocesses, in my case, it was blacked out land pixels, to overcome this, use the masking tool to apply mask which covers all pixels containin non-NULL values, and in the EM Cluster Analysis window pick the final mask you’ve made in ROI mask.

1 Like