【问题标题】:merge two binary images using Matlab使用 Matlab 合并两个二进制图像
【发布时间】:2012-10-06 23:35:27
【问题描述】:

我需要使用 Matlab 创建两个不同的黑色二进制矩形,以覆盖两者的一部分并提取插入。

如何叠加两张二值图像?

-------|----------|
|      |     2    |
|    1 |----|-----|
|           |
|-----------|

我使用false(X, Y) Matlab 函数创建了我的两个二进制图像。

我不知道如何生成两个图像的合并和提取插入。

【问题讨论】:

  • 插入是什么意思?你是说十字路口吗?此外,该函数不会产生“图像”,它只会产生矩阵。
  • 插入..两个矩阵重叠的地方..你可以做一个imshow,它会输出一个图像(false(x,y))。

标签: image matlab


【解决方案1】:

在你翻译它们之前制作一个可以包含两个矩形的背景矩阵,并将背景矩阵的值分配给你的矩形所在的区域。这样你就有了两个大小相同的矩阵,你可以在它们上进行逻辑或算术运算。如果您为每个矩形和背景使用不同的值,则总和之类的内容将以不同的颜色显示。这是一个演示的文本版本:

octave:11> bga = bgb = ones(10,10)
bga =

   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1

octave:12> bgb
bgb =

   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1

octave:13> a=false(3,4)
a =

   0   0   0   0
   0   0   0   0
   0   0   0   0

octave:14> b=false(5,5)
b =

   0   0   0   0   0
   0   0   0   0   0
   0   0   0   0   0
   0   0   0   0   0
   0   0   0   0   0

octave:15> bga(3:5,4:7) = a
bga =

   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   0   0   0   0   1   1   1
   1   1   1   0   0   0   0   1   1   1
   1   1   1   0   0   0   0   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1

octave:16> bgb(1:5,1:5) = b
bgb =

   0   0   0   0   0   1   1   1   1   1
   0   0   0   0   0   1   1   1   1   1
   0   0   0   0   0   1   1   1   1   1
   0   0   0   0   0   1   1   1   1   1
   0   0   0   0   0   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1

octave:17> bga | bgb
ans =

   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   0   0   1   1   1   1   1
   1   1   1   0   0   1   1   1   1   1
   1   1   1   0   0   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1
   1   1   1   1   1   1   1   1   1   1

【讨论】:

  • “在你翻译它们之前制作一个可以包含两个矩形的背景矩阵”。输出实际上是包含两个矩形的矩阵!
  • 我不明白,你的问题有没有回答?
  • 最后是 AND 运算符,但你的答案很好。谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-11-01
  • 2011-02-22
  • 2023-04-04
  • 2011-05-21
  • 2020-09-14
  • 1970-01-01
  • 2016-08-11
  • 1970-01-01
相关资源
最近更新 更多