我有一个数字数组,我将其转换为百分比(值在[0 .. 1]范围内)。然后我将其转换为灰色。
示例:
percentage = nums/float(nums.max())
问题是,大多数值都是小数,几个大数。这将导致大部分%约为0.01。结果是这转换为~~白色,在绘制时变得不可见。顺便说一句,我必须保留所有值。
我试图缩小异常值的范围,但是即使这样也无济于事;(
colors[abs(colors - np.mean(colors)) > 2 * np.std(colors)] = colors.mean() + 2 * np.std(colors)
c = colors/float(colors.max()) #convert to percentage
这是将异常值缩小到均值的2std。
我认为我需要一种“逐步”功能,该功能将值进行分组以使它们均匀缩放在0 .. 1的范围内,以便每个点都可以看到可见的颜色,但仍保持一定的对比度,以便区分值。
PS>可能是范围必须从0.1到1!
考虑通常的照片编辑,这是一种降低某些价值的解决方案吗?然后,常规排序可能会有所帮助,例如
highlights=np.sort(nums)[-xyz:]
只需将这些值设置为下一个较小的值即可设置此白色。
当然,这可能是对数据的严格处理,但这就是您在调整颜色曲线时通常在GIMP或类似的照片处理软件中所做的事情。因此,如果这些离群值就像不稳定的像素,并且您实际上对中间的灰度值感兴趣,那么这可能会有所帮助。
希望我对你的兴趣不错,lepakk