【问题标题】:How to align images based on a pixel in Matlab?如何在 Matlab 中根据像素对齐图像?
【发布时间】:2012-07-06 23:55:00
【问题描述】:

我有两张相似的图片:[A] 和 [B](请看图片)。它们在 X 和 Y 中偏移。如何使用 A 中的像素作为参考将 A 对齐到 B?换句话说,就是将A点指示的像素点定位到B点上,使A点和B点集中在这个点点​​上。 谢谢。

手动制作最终结果

【问题讨论】:

  • 这些图片看起来不相似;您的中心像素位于 A 中五边形的角上; B中没有匹配点。
  • 看起来主干是相似的,沿着每个图像的水平路径找到 OP 想要检测的点是 6 元环的右下角。但是,我不确定图像处理解决方案是否真的是最好的解决方案。
  • @Prof. Cleiton 我不确定我是否理解这个问题,你想要一个算法来为你重叠图像吗?
  • @OliCharlesworth:图像(化学上)相似。右侧是相同的结构,直到中心的酰胺键(C=O 连接到Ns。“匹配”点是化学差异的开始,可能是因为合成步骤. 我怀疑 OP 可能想要对齐图像以进行发布。
  • @sfstewman:好的,我明白了。好吧,我不认为将这些视为图像将是算法“对齐”它们的最有效方法。

标签: image matlab image-processing alignment


【解决方案1】:

您可以手动完成:

img1 = 255-mean(imread('a1.png'),3);
img2 = 255-mean(imread('a2.png'),3);

subplot(221);imagesc(img1);axis image
[x1 y1] = ginput(1);
subplot(222);imagesc(img2);axis image
[x2 y2] = ginput(1);



x = x1-x2;
y = y1-y2;

T = maketform('affine',[1 0 x;0 1 y; 0 0 1]');
img2N = imtransform(img2,T,'xdata',[1 size(img1,2)],'ydata',[1 size(img1,1)]);

subplot(2,2,[3 4]);
imagesc(max(img1,img2N));axis image

要自动执行,您可以这样做::

%size(img2) <= size(img1)
img1 = 255-mean(imread('a1.png'),3);
img2 = 255-mean(imread('a2.png'),3);
subplot(221);imagesc(img1);axis image
subplot(222);imagesc(img2);axis image
colormap(gray(256))
c = normxcorr2(img2,img1);
[y x] = find(c==max(c(:)));
y = y-size(img2,1);
x = x-size(img2,2);

T = maketform('affine',[1 0 x;0 1 y; 0 0 1]');
img2N = imtransform(img2,T,'xdata',[1 size(img1,2)],'ydata',[1 size(img1,1)]);
subplot(2,2,[3 4]);
imagesc(max(img1,img2N));axis image

【讨论】:

    【解决方案2】:

    您需要微调“XData”和“YData”属性,但您可以这样做...

    rgbA = imread('A.jpg'):
    rgbB = imread('B.jpg');
    alpha(.2)
    image(rgbA,'XData',2)
    alpha(.2)
    hold on
    image(rgbB,'XData',2)
    alpha(.2)
    

    【讨论】:

      【解决方案3】:

      我认为您想要的是图像配准,在您的情况下,这需要至少 2 个控制点,因为它是没有反射的仿射变换。鉴于这两张图片的相似性,我认为很容易找到另一个推荐点。之后,您可以使用imtransform 或直接使用cp2tform 进行注册。

      【讨论】:

      • 我认为注册的作用是对齐和重叠。
      猜你喜欢
      • 2011-08-11
      • 2012-11-23
      • 2011-02-28
      • 2016-10-27
      • 2017-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多