JuliaHCI/SubpixelRegistration.jl

Output results depends on absolute image scaling

Closed this issue · 2 comments

Hi!

again thanks for that package!

However, I noticed that the output results depends on the overall scaling of the image (which it should not).

The reason might be that line:

@. image_product /= max(abs(image_product), 100 * eps(T))

So it divides image_product element-wise with either the element itself or the eps values of the datatype.

If that's a phase normalization, wouldn't it make more sense to calculate

    image_product ./= maximum(abs.(image_product))

So that divides image_product elementwise by the same value, which is the maximum abs value of all entries.

But more critical is probably the 100 * eps(T)? If the absolute scaling is very low, the 100 * eps(T) is simply larger than the entry, and there will be a strange mismatch in the scalings.

I would be happy to hear your thoughts! I guess, the phase scaling can be arbitrarily defined and each of them might have strengths or weaknesses.

Best,

Felix

CC: @RainerHeintzmann

Wow, sorry, this issue has flown completely under my radar! Let me take a look at the implementations in python and the original paper and see how they compare. I'll get back to you!

I think the issue really is the 100 eps(T) .
It would be better to reference to the maximum or the minimum of the array to be in the right magnitude.

But thanks :))