Sum two matrices shifted by a non integer number?

Suppose we have two matrices A and B, and I want to sum them shifted by a non-integer number of pixels. How can I do it?
For example for a 0.5 shift. We can enlarge them by a factor of 2, sum them shifted by 1 pixel and reduce it by a factor 2.
But this way can be very computational expensive, in particular for a low pixel shift.

 Akzeptierte Antwort

Matt J
Matt J am 26 Mär. 2023
Bearbeitet: Matt J am 26 Mär. 2023
Because of the linearity of interpolation, you should not interpolate each matrix. You should sum the matrices first, then interpolate the result, e.g,
C=imtranslate(A+B,[0.5,0]);
which will cut down the computation by half.

Weitere Antworten (1)

John D'Errico
John D'Errico am 26 Mär. 2023

0 Stimmen

There is no magic, whereby you can do things that take computational time, and do them instantly.
What you want to do is implicitly interpolate the images, at sub-pixel levels. You can use interp2 to interpolate one array at a shift of some fractional amount. Then add the results. But no matter what, you will need to perform an interpolation.

1 Kommentar

Yes I know, I was wondering if there was a faster way than my idea or interpolation

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Interpolation finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 26 Mär. 2023

Bearbeitet:

am 26 Mär. 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by