This is a Matlab implementation for the forwards additive version of the ECC image alignment algorithm based on the paper "G.D. Evangelidis, E.Z. Psarakis, Parametric Image Alignment using Enhanced Correlation Coefficient Maximization", IEEE Trans. on PAMI, vol. 30, no. 10, 2008. ECC algorithm is a direct (gradient-based) image registration algorithm. Due to gradient information, it achieves high accuracy in parameter estimation (i.e. subpixel accuracy). Its performance is invariant to global illumination changes in images since it considers the correlation coefficient (zero-mean normalized cross correlation) as an objective function.
The algorithm takes as input two unregistered images (input image, template image) and estimates the 2D geometric transformation, that, applied to the input image, provides a warped image registered to the template one. The current implementation includes a pyramid-based framework thus compensating large displacements. For even larger displacements or strong geometric distortions, ECC may need an appropriate initialization. This can be done either by feature matching or through an exhaustive search scheme for a coarse alignment.
The user can enable the pyramid-based implementation as well as choose the type of transformation (translation, euclidean, affine, homography), the number of iteration per level and the initialization transformation (optional). In order to see an example, run the demos. For more details take a look at the help of ecc.m and/or at the above mentioned paper.
Inverse-compositional version of ECC can be found at the Image Alignment Toolbox (https://sites.google.com/site/imagealignment/)
Thanks for this outstanding algorithm!
I see the same problem as rhat. The implementation differs from the paper in the calculation of the enhanced correlation coefficient (see formula (5)), also in the iatool implementation. This is implemented as in the paper in the opencv implementation.
Also, in the paper always (e.g. formulas (19), (20), (21)) the normalized version of the zero-mean reference vector is used. But the implementation only uses the zero-mean reference vector (tempzm) without normalization. This also differs in the opencv implementation.
Is this implemented differently on purpose?
Thank you for the tool. I have a question about ecc.m. In the line where you calculate enhanced correlation coefficient ' results(nol,i).rho = dot(temp(:),wim(:)) / norm(tempzm(:)) / norm(wim(:));', why do you use temp instead of temzm for the dot product?
o, I'm sorry, there is a problem,how could i run the ic-ecc algorithm?and when solve the parameter delta_p only with the formula 19, and not with 20 in the paper,if you forgot udgment？
thanks vrey much.I downloaded from this page ，but is this the latest version or not ?Showing ver1.4, 12/2/2013
thanks very much for sharing this. i have a question. how could i run the ic-ecc algorithm?
Thanks for sharing this! The demo is very helpful and well document!!
Image Alignment Toolbox link has been updated
Inverse-compositional ECC algorithm is available
a bug in pamam_update function is fixed
1) The code is updated and deals better with partially overlapped images.
ECC deals with Euclidean transformation (rotation+translation). The user can enable any of the following transformations: translation, euclidean, affine, homography
Bugs in demo file have been fixed.
1) The algorithm deals with translation transform as well
2) Some compatibility problems with recent versions of Matlab have been resolved
1) The main function also accepts color (RGB) images. 2) minor bugs are fixed
Some minor bugs have been resolved. Note that in this updated version,
Create scripts with code, output, and formatted text in a single executable document.