GeoFolki Co-registration Erroring out

Image dimensions: 18500*11400

Error thrown:

org.esa.snap.core.gpf.OperatorException: Error on coregistration processing (possibly too large images) : null
at org.esa.s2tbx.coregistration.CoregistrationOp.doExecute(CoregistrationOp.java:407)
at org.esa.s2tbx.coregistration.CoregistrationOp.initialize(CoregistrationOp.java:113)
at org.esa.snap.core.gpf.internal.OperatorContext.initializeOperator(OperatorContext.java:486)
at org.esa.snap.core.gpf.internal.OperatorContext.getTargetProduct(OperatorContext.java:273)
at org.esa.snap.core.gpf.Operator.getTargetProduct(Operator.java:387)
at org.esa.snap.core.gpf.GPF.createProductNS(GPF.java:318)
at org.esa.snap.core.gpf.GPF.createProduct(GPF.java:293)
at org.esa.snap.core.gpf.GPF.createProduct(GPF.java:272)
at org.esa.snap.core.gpf.ui.DefaultSingleTargetProductDialog.createTargetProduct(DefaultSingleTargetProductDialog.java:138)
[catch] at org.esa.snap.core.gpf.ui.SingleTargetProductDialog.onApply(SingleTargetProductDialog.java:131)
at org.esa.s2tbx.coregistration.CoregistrationTargetProductDialog.onApply(CoregistrationTargetProductDialog.java:73)
at org.esa.snap.ui.AbstractDialog.lambda$initUI$6(AbstractDialog.java:519)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Can you please help me through.

As it says on the first line your images might be too large. What are you trying to achieve?

Hello,
Can you perform a smaller subset and try on it?

Hi @mengdahl,
I have a pair of RGB images that I’m trying to align(they’re almost 30 odd pixels away from each other in the y direction). Also the GeoFolki coregistration operator isn’t allowing to select multiple bands (R, G&B) as slave.

Hi @oana_hogoiu
I did try it on a 5000*5000 image pair. Still throws an error


Did try it using different bands, the error persists.

Regards,
Puneeth

Hello,
I just performed a coregistration on 2 Sentinel-2 products, using a Band subset before (on both master and slave, I chose B5 band subset, which has 5486 * 5486) and no issue occurred.
Can you make a band subset on your products before using coregistration and let me know the result?
Best regards,
Oana

Greetings all, has anyone used the SNAP-based implementation of Gefolki coregistration lately? I found the SNAP implementation can potentially work for registering Optical (slave) to SAR (master) which would be awesome, however there is something not quite right: most likely I am doing something wrong. Wanted to check in and see how others are using it in case there is an opportunity to improve the code slightly to make it easier to use! Thanks in adv. for any ideas you may be able to share. Best regards

Hi @puneeth89 good to see you here! I think I got the “band already exists” error before, if I recall that one might be fixed by setting the output file to a new output file that doesn’t already exist.
Maybe you could help me with a different problem?

I think GeFolki successfully coregistered a SAR image (master) to an Optical image (slave) for me. Here is the glitch: supposing my Optical image had three bands: the output I get also has three bands. Although it looks like it’s coregistered fairly well, the frustrating part:

in the output product the three bands are all exactly the same. The result does look like it’s in the right place but I wanted the same transformation performed on all three slave bands (not three copies of one transformed band LOL). Thoughts? Cheers

Haven’t figured out to recompile the code yet but might have found the issue (hope this works):

1 Like

Hello,
Thank you for the report and suggestion.
Meanwhile, to solve your issue, you can perform a band subset on your 3 bands slave product, run GeFolki coregistration on each of them, and then regather the results with Band merge.
I will test this use case and review your PR.
Cheers

2 Likes

Dear @oana_hogoiu thank you so much for the prompt reply and thank you so much for considering the change request. Very much appreciated. Just a quick update on my experience with running on the 3 bands separately:

Since the geographical features or land-cover types are not equally reflected in all the bands, running the algorithm on separate bands, results in a different transformation for each band. Being able to apply the same transformation to all the bands, will meet requirements for the application :smile:

PS if it’s helpful I could post a small test chip here. Thanks again for looking at this