如题,生成图片指纹过程中为了压缩信息量需要对像素值进行量化,比如一个像素的原始 rgb 取值范围是 0-255 ,希望将其压缩到 0-16 的取值范围里,即处理过程中 0-16 统一标记为 0 ,16-32 统一标记为 1 ,32-48 统一标记为 2 以此类推,类似这种转换有什么内建的写法吗?还是说要自己写 16 次 if 判断。。
另外还有一种情况是,量化可能不按照线性量化,根据像素的分布概率也有可能按对数坐标量化,感觉更麻烦了。。
1
liprais 2022-05-19 14:17:13 +08:00
sklearn 里面有
|
2
volvo007 2022-05-19 15:48:44 +08:00
如 LS 所说 sklearn 里面有, 找缩放的部分
这个要手写也简单, 主要分为两部分 1. rgb 转为灰度图, 这个有公式 2. 转完之后是一个 0 - 255 的小数, // 16 即可 |
3
ipwx 2022-05-19 15:53:04 +08:00 1
1)
import numpy as np im = np.array([0,1,15,16]) np.asarray(im / 16, dtype=int) # array([0, 0, 0, 1]) 2) 随便运算,最后取整。 |
4
tinytoadd 2022-05-19 16:44:52 +08:00
```
import numpy as np def compress(val): return val//16 vcomp = np.vectorize(compress) pic = (np.random.rand(100,100,1) * 255).astype('uint8') print(pic) pic[...,0]=vcomp(pic[...,0]) print(pic) ``` |