gpt4 book ai didi

python - 谁能解释为什么 `skimage.measure.perimeter(img)` 返回这个结果?

转载 作者:行者123 更新时间:2023-12-01 05:55:10 25 4
gpt4 key购买 nike

当我测试 scikit-image 方法时,我遇到了 skimage.measure.perimeter(image) 但无法解释该函数的输出。

import numpy as np  
image=np.zeros((100,100))
image[10:30,10:30]=1 # this creates a white square
from skimage.measure import perimeter
x=perimeter(image)
print x #Should be (20+20+20+20) = 80
76.0 <<<<<<<<<< it returns this value

我是否误解了这个函数应该返回什么?我知道周界是围绕一个区域的路径。
注意:-
(1) 计算出来的周长和返回的周长之间的差异并不总是4,有时可能是6,无论是正方形、长方形还是任何其他多边形。
更新:=
(1)The function page

最佳答案

您使用的是哪个版本的skimage?版本 0.6 和 github sources没有 skimage.measure.perimeter 函数。

此外,我认为您的意思是第 3 行:image[10:30, 10:30] = 1

编辑

好的,我想我明白了。从 0.7.1 版本开始,该函数在 _regionprops.py 中定义。结果76实际上是正确的。它计算形状 (20, 20) 的白色正方形的周长。

你认为每边占 20 个像素,总共 80 个像素。但通过这样做,你可以计算两倍的角像素。删除角像素,最终周长为 76 像素。

对于其他形状,差异可能不是 4 个像素。

编辑2

查看源代码和文档:

  • regionprops 的文档说周长是周长的近似值:

Perimeter of object which approximates the contour as a line through the centers of border pixels using a 4-connectivity.

  • 该代码计算一个 border_image,它由图像减去其侵 eclipse 组成。这个数组对应于我在第一次编辑中的周长想法。

  • 然后,它通过对边界图像应用卷积和加权和来计算周长。我认为这样做是为了计算穿过边界像素中心的线的长度,如文档中所述。

如果您想了解更多详细信息,您应该询问其中一位开发人员。这是包中的一个非常新的功能。

关于python - 谁能解释为什么 `skimage.measure.perimeter(img)` 返回这个结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12934156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com