【问题标题】:matlab add images of different widthsmatlab添加不同宽度的图片
【发布时间】:2014-05-07 21:52:10
【问题描述】:

如何在 matlab 中添加两个不同宽度的图像? (将它们缝合在一起)。

Img3 = imadd(Img1, Img2_new);

不起作用。它需要相同数量的行和列..

B 图像比 A 图像宽。 这是我想要得到的结果:

如果我可以更改图像 A 的边界框的大小(添加更多黑色部分)然后 imadd 将起作用

谢谢

【问题讨论】:

  • 想要发生什么?如果你有一个小圆圈图像和一个大房子图像,你希望最终图像是一个圆圈中的房子吗?房子的图像大小?还是圆圈图像的大小?你想在房子形象的角落里做一个小圆圈吗?居中?了解为什么 Matlab 不允许您“仅”将两个不同大小的图像相加吗?它读不懂你的心思。更仔细地指定,我们可以为您提供帮助。还是您的意思是“缝合”,因为它们并排放置?后者只是image3 = [img1 img2_new]; - 水平串联。
  • @Floris 你几乎猜对了,我可以看到那里的一些建筑物!

标签: matlab image-processing


【解决方案1】:

不清楚您所说的“缝合”是什么意思。通常这意味着连接 - 水平或垂直。如果图像大小不同,如何连接不是很明显。

最简单的做法是将两个图像 (A,B) 重新缩放为相同大小 - 下面是一个这样做的示例(使 B 成为 A 的大小,然后添加):

Br = imresize(B,size(A));
C = imadd(A,Br);

如果你的意思是“连接”,那么你会使用

C = [A Br];

将图像大小并排放置,或

C = [A; Br];

把A放在B上面

编辑现在你展示了你真正想要的东西!解决办法是

C=B;
r=size(A,1); c=size(A,2);
C(1:r,1:c) = C(1:r,1:c)+A;

或者如果你想使用imadd:

Ab = zeros(size(B));
r=size(A,1); c=size(A,2);
Ab(1:r,1:c) = Ab(1:r,1:c)+A;
C=imadd(Ab,B);

【讨论】:

  • 我不想缩放图像。连接也不是我的情况。因为图像有重叠部分。在帖子中查看我的编辑。谢谢
  • 非常感谢!有效。只有一件事:我写了 'C(1:r, 1:c, 1:3) = C(1:r, 1:c, 1:3) + A(1:r, 1:c, 1:3 )';保持颜色信息正确。否则非重叠部分的颜色错误(颜色仍然来自图像 B,但应该来自 A)
  • 啊 - 你有彩色图像。图片表明它是灰度的……很高兴它起作用了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多