八度无效的im2bw关键字

问题描述 投票:0回答:1

使用im2bw进行图像阈值处理时遇到问题

im2bw:阈值必须为[0 1]范围内的字符串或标量错误:从

调用
MO = imread('test.jpg'); 
M = rgb2gray (MO);

M3 = im2bw(M,127);
imshow(M3);
octave
1个回答
0
投票

摘自im2bw(重点是我的文档):

输入图像IMG可以是灰度图像或RGB图像。 在在后一种情况下,IMG首先使用'rgb2gray'转换为灰度。输入也可以是索引图像X,在这种情况下颜色图需要指定CMAP。THRESHOLD的值应独立在[0,1]范围内属于IMG。 其他类的值可以转换为使用'im2double'的正确值:bw = im2bw(img_of_class_uint8,im2double(thresh_of_uint8_class));

灰度图像可以具有在[0,1]范围内的类double的像素值,或在[0,255]范围内的类uint8的值。

rgb2gray函数返回第一种(即[0,1]范围内的值)。

因此您需要在该范围内定义阈值。

如上面的文档所建议,您可以使用im2double函数将“ 127”的uint8阈值转换为两倍。

换句话说,您的代码应该看起来像这样:

MO = imread('test.jpg'); 
M  = rgb2gray (MO);
M3 = im2bw(M, im2double( uint8(127) ) ); % or simply im2bw(M, 0.5)
imshow(M3);
© www.soinside.com 2019 - 2024. All rights reserved.