为什么imsubtract()的输出加倍?

时间:2013-06-28 14:28:50

标签: image matlab

当我收到此错误时,我正在对图像进行一些形态学操作:

  

函数imlincomb期望它的数组输入参数(A1,A2,...)   拥有相同的课程。

它是在imsubtract()函数中给出的,其中一个输入是另一个减法的输出。我查看了Matlab文档并找到了Z = imsubtract(X,Y)的解释:(强调是我的)

  

返回的数组Z与X 具有相同的大小和类别,除非X是逻辑的,在这种情况下Z是double。

为什么在逻辑输入X的情况下,输出为 double ?!

根本没有意义。特别是,当2个输入参数都是 logical 时,考虑到这个函数主要(如果不是总是)用于图像。

1 个答案:

答案 0 :(得分:3)

有3个可能的值(布尔值只能捕获2个值):

  • 0 (true-true, false-false)
  • 1 (true-false)
  • -1 (false-true)

要看到这一点,请尝试:

>> imsubtract([true,true,false,false],[true,false,true,false])

ans =

     0     1    -1     0

如果您想要进一步进行逻辑处理,请调用boolean:

>> boolean(imsubtract([true,true,false,false],[true,false,true,false]))

ans =

     0     1     1     0