[英]Image filtering in Python (image normalization)
我想编写执行图像过滤的代码。 我使用简单的3x3内核,然后使用scipy.ndimage.filters.convolve()
函数。 过滤后,值的范围是-1.27至1.12。 过滤后如何规范化数据? 我是否需要裁剪值(小于零的值设置为零,大于1的值设置为1),或使用线性归一化? 如果过滤后的值大于范围[0,1],可以吗?
>>> 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],可以吗?
这实际上取决于过滤图像的用例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.