颜色量化
这里的颜色量化主要是用于显著性检测。将255*255*255=16581375 颜色量化转成 12*12*12=1728。以此来减少计算量。
若是查看显著性检测代码,请点击查看原博客:https://blog.csdn.net/wsp_1138886114/article/details/102560328。
整个流程:
首先统计图像的颜色直方图
然后设置删除最大元素阈值:通过选择高频颜色并且保证这些颜色覆盖图像像素不低于95%
最后计算像素距离:剩下的像素颜色,包含不高于5%的图像像素,这部分颜色被直方图中最邻近的颜色替代。(也就是计算后5%的图像像素与前覆盖图像95%的像素之间的距离,这部分颜色被前覆盖图像95%的像素直方图中最邻近的颜色替代)
import cv2
import numpy as np
import time
def Quantize(img3f,ratio=0.95,colorNums=(12,12,12)):
clrTmp = [colorNums[0]-0.0001, colorNums[1]-0.0001, colorNums[2]-0.0001]
w = [colorNums[1] * colorNums[2], colorNums[2], 1]
height,width = img3f.shape[:2]
img3f_0,img3f_1,img3f_2 = cv2.split(img3f)
idx_img3f_0 = (img3f_0 * clrTmp[0] ).astype(np.int32)* w[0]
idx_img3f_1 = (img3f_1 * clrTmp[1] ).astype(np.int32)* w