我想写做图像过滤的代码。我使用简单的3x3内核,然后使用scipy.ndimage.filters.convolve()
函数。过滤后,取值范围为-1.27到1.12。过滤后如何对数据进行归一化?我需要裁剪值(小于零的值设置为零,大于1的值设置为1),还是使用线性归一化?过滤后的值是否大于范围0,1
发布于 2016-08-12 10:14:39
>>> import numpy as np
>>> x = np.random.randn(10)
>>> x
array([-0.15827641, -0.90237627, 0.74738448, 0.80802178, 0.48720684,
0.56213483, -0.34239788, 1.75621007, 0.63168393, 0.99192999])
您可以剪裁掉您的范围之外的值,尽管您会丢失该信息:
>>> np.clip(x,0,1)
array([ 0. , 0. , 0.74738448, 0.80802178, 0.48720684,
0.56213483, 0. , 1. , 0.63168393, 0.99192999])
为了保持缩放,可以线性地重新规格化到0到1的范围内:
>>> (x - np.min(x))/(np.max(x) - np.min(x))
array([ 0.27988553, 0. , 0.6205406 , 0.64334869, 0.52267744,
0.55086084, 0.21063013, 1. , 0.57702102, 0.71252388])
过滤后的值大于0,1是否可以?
这实际上取决于您对已过滤图像的用例。
https://stackoverflow.com/questions/38907731
复制