繁体   English   中英

Python中的图像过滤(图像规范化)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM