[英]numpy adaptive threshold formula
我正在尝试基于灰度图像(点值为0到255的numpy 2D数组)计算阈值。
公式如下:
其中w,h是我的图像S的宽度和高度,而S(i,j)是该点的值。
我的实现如下:
h,w = sMap.shape
adapTresh = np.sum(sMap)*2/(w*h)
但是对于我的某些图像来说,总数返回> 255,所以我认为某处存在问题,我是否再次使用numpy错误?
我对Python不熟悉,我是2天前开始的,所以如果这是一个愚蠢的问题,请原谅我。
print w,h
>> 411,410
print 2/(w*h), np.sum(sMap), adapTresh
>> 0 22461727 266
矩阵中所有单元的平均值为:
avg = np.sum(sMap) / (w * h)
在极端情况下,所有像元等于255,这样
avg = 255
例如
In [8]: M = 255 * np.ones(4).reshape((2,2))
In [12]: M
Out[12]:
array([[ 255., 255.],
[ 255., 255.]])
In [9]: M.sum() * (2.0 / sum(M.shape))
Out[9]: 510.0
因此,我认为您的自适应阈值函数只是错误的。 你可能打算
In [11]: M.sum() / sum(M.shape)
Out[11]: 255.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.