MATLAB: How to align images together automatically: Round 1

image alignment

Hello!
Project changed, so I'm now trying to get these images aligned automatically. I currently have my script to make the image into a binary image, and then select the largest object with a bounding box. I want to get the coordinates of the selected object for the following images to align to it like a reference, but I don't know how.
Thank you!
-Frank
Note: These images are extremely similar to each other, but they show this line moving slightly to the right. (very slightly)
Images:
Code:
A = imread('343A #1.png')
background = imopen(A,strel('rectangle',[258 64]));
A2 = A - background;
A3 = imadjust(A2);
levelA = graythresh(A3);
bw = im2bw(A3, levelA);
bw = im2bw(A3, levelA);
bw = bwareaopen(bw,50);
ccA = bwconncomp(bw, 4);
ccA.NumObjects;
labeledA = labelmatrix(ccA);
whos labeledA;
RGB_labelA = label2rgb(labeledA, @autumn, 'c', 'shuffle');
imagedataA = regionprops(ccA, 'basic');
imagedataA(1).Area;
image_areasA = [imagedataA.Area];
[max_area, idx] = max(image_areasA);
imageA = false(size(bw));
imageA(ccA.PixelIdxList{idx}) = true;
figure, imshow(imageA)
regionprops(ccA, 'boundingbox', 'Centroid');
B = imread('343A #2.png')
background = imopen(B, strel('rectangle',[258 64]));
B2 = B - background;
B3 = imadjust(B2);
levelB = graythresh(B3)
bw = im2bw(B3, levelB);
bw = im2bw(B3, levelB);
bw = bwareaopen(bw,50);
ccB = bwconncomp(bw, 4);
ccB.NumObjects
labeledB = labelmatrix(ccB);
whos labeledB
RGB_labelB = label2rgb(labeledB, @spring, 'c', 'shuffle');
imagedataB = regionprops(ccB, 'basic');
imagedataB(1).Area
image_areasB = [imagedataB.Area];
[max_area, idx] = max(image_areasB);
imageB = false(size(bw));
imageB(ccB.PixelIdxList{idx}) = true;
figure, imshow(imageB)
regionprops(ccB, 'boundingbox');
regionprops(ccB, 'centroid')
regionprops(ccA, 'centroid')
p.s. if you know a better way, please share 🙂 I'm really new to MatLab

Best Answer

Once you know the displacement vector, use my imtranslate function