I think ImageCorrespondingPoints
is a good use of what you need. You can improve the results by more preprocessing steps. You can also check ImageFeatureTrack
and FindGeometricTransform
.
img1 = Import["https://i.stack.imgur.com/laZeT.png"];
img2 = Import["https://i.stack.imgur.com/LAHyF.png"];
(*preprocess images*)
images = {DeleteSmallComponents@Binarize[img1, .2],
DeleteSmallComponents@Binarize[img2, .2]};
(*find matching points*)
matches =
ImageCorrespondingPoints[images[[1]], images[[2]],
"Transformation" -> "Translation"];
(*Show points on images*)
MapThread[
Show[#1, Graphics[{Cyan,
MapIndexed[Inset[#2[[1]], #1] & , #2]}]] &, {images, matches}]
{{{351.461, 337.156}}, {{501.884, 358.838}}}

Edit 1
You can also use the option "Transformation" -> "Similarity"
which adjusts translation, rotation, and scaling of the images.
images = {DeleteSmallComponents@Binarize[FillingTransform@img1, .2],
DeleteSmallComponents@Binarize[FillingTransform@img2, .2]};
matches =
ImageCorrespondingPoints[images[[1]], images[[2]],
"Transformation" -> "Similarity"]
Show[ImageAssemble[images],
Graphics[{Red, PointSize[.02],
MapThread[
If[#2 === Missing[], {Cyan, Point[#1]},
Arrow[{#1, #2 + {ImageDimensions[img1][[1]], 0}}]] &,
matches]}]]
{{{353.43, 359.493}, {377.258, 359.066}}, {{503.413,
375.665}, {523.788, 374.315}}}
