将BW图像转换为矩阵

时间:2017-11-04 19:42:50

标签: image matlab matrix type-conversion data-conversion

使用im2bw(x)将图像imfilter转换为黑白图像后,imfilter仅返回黑白图像。如何将此黑白图像转换为普通矩阵,以便>> k = [0.3 0.3; 0 0.3]; >> x = [0.9 0.3; 0.4 0.2]; >> y = im2bw(x) y = 1 0 0 0 >> imfilter(y, k) ans = 1 0 0 0 >> imfilter([1 0; 0 0], k) ans = 0.30000 0.00000 0.00000 0.00000 >> 可以返回实数矩阵?演示:

imfilter

如您所见,while((i<a.length) && ! found) 在应用于二进制图像时对结果进行舍入。我想阻止这个。如何在保持其值的同时将二进制图像转换为常规矩阵?

1 个答案:

答案 0 :(得分:2)

查看imfilter的文档,

  

结果B的大小和类别与A相同。

由于im2bw的输出是逻辑数组,因此imfilter的输出也是如此。为了从imfilter获得浮点输出,您需要将阈值图像转换为浮点类型:

y = double(y);   % or, y = single(y);

结果:

>> k = [0.3 0.3; 0   0.3];
>> x = [0.9 0.3; 0.4 0.2];
>> y = im2bw(x)
y =

  1  0
  0  0

>> y = double(y)
y =

   1   0
   0   0

>> imfilter(y, k)
ans =

   0.30000   0.00000
   0.00000   0.00000