使用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)
在应用于二进制图像时对结果进行舍入。我想阻止这个。如何在保持其值的同时将二进制图像转换为常规矩阵?
答案 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