Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 为什么imsubtract()的输出是双精度的?_Image_Matlab - Fatal编程技术网

Image 为什么imsubtract()的输出是双精度的?

Image 为什么imsubtract()的输出是双精度的?,image,matlab,Image,Matlab,当我遇到这个错误时,我正在对图像进行形态学操作: 函数imlincomb期望其数组输入参数(A1、A2、…)为 上同一节课 它在imsubtract()函数中给出,其中一个输入是另一个减法的输出。我查看了Matlab文档,找到了关于Z=imsubtract(X,Y):(重点是我的) 返回的数组Z与X具有相同的大小和类别,除非X是逻辑的,在这种情况下Z是双精度的。 为什么在逻辑输入X的情况下,输出应该是双倍的 这毫无意义。特别是,当两个输入参数都是逻辑参数并且考虑到此函数主要(如果不总是)用于图像

当我遇到这个错误时,我正在对图像进行形态学操作:

函数imlincomb期望其数组输入参数(A1、A2、…)为 上同一节课

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

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

为什么在逻辑输入X的情况下,输出应该是双倍的


这毫无意义。特别是,当两个输入参数都是逻辑参数并且考虑到此函数主要(如果不总是)用于图像时。

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

  • 0(真-真,假-假)
  • 1(真-假)
  • -1(假-真)
要了解这一点,请尝试:

>> 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

所以基本上你是说双输出是因为负值吗?@Mahm00d我是说你需要3个状态的事实排除了布尔输出。他们选择了双人。但是您必须决定如何处理
true-false
false-true
。matlab的做法是,它保留期望值(true=1,false=0),而不丢失信息(如果它们在
false-true
的情况下为true,您将无法区分
false-true
true-false
)我的问题是为什么
false-true
不应该是
false
(因此不需要第三种状态)? 这在处理图像时很有意义,有趣的是,在
uint8
的情况下,Matlab的这个函数示例清楚地说明:“减去两个uint8数组。请注意,负结果四舍五入为0。”如果
false-true
为false,则您特别查找的是案例
true-false=true,其他一切都是假的
,您可以按
x-y>0