关于scikit-image中corner_fast返回浮点数组而非布尔值的疑问
关于scikit-image中corner_fast返回浮点数组的解释
嘿,我来帮你理清这个疑问~
你观察得特别准:咱们平时看到的FAST算法解释里,大多说它会返回布尔值标记哪些是角点,但scikit-image实现的corner_fast确实会返回一个浮点型的响应数组——你猜的没错,这些数值就是每个位置的“角点程度”,代表该像素符合FAST角点特征的强度。
为什么会有这个差异?
scikit-image的这个实现没有直接给出二值化的角点标记,而是保留了FAST算法计算过程中的原始响应值:
- 对每个像素,它会统计周围圆周上,与中心像素灰度差超过阈值的点的数量
- 返回的浮点值就是这个统计结果(或经过微调后的数值),数值越高,说明该点越像角点
怎么得到布尔型的角点标记?
如果想要和标准FAST描述一致的布尔结果,你可以自己对响应数组做阈值筛选,举个例子:
import numpy as np from skimage.feature import corner_fast np.random.seed(2018) img = np.random.normal(size=(20, 20)) img_response = corner_fast(img, n=12, threshold=0.0) # 设定阈值,比如保留响应值大于12的点(对应你设置的n参数) is_corner = img_response > 12
这样得到的is_corner就是布尔数组,每个元素标记对应像素是否为角点,和你了解的标准FAST输出完全匹配啦。
内容的提问来源于stack exchange,提问作者Brenlla
相关产品推荐
相关产品推荐

