OpenCV—python 颜色量化—(255*255*255 颜色量化转成 12*12*12)

这篇博客介绍了OpenCV中如何进行颜色量化,将16581375种颜色简化为1728种,以减少计算量。该过程包括统计图像颜色直方图,设置删除阈值以保留95%的像素颜色,然后计算并替换剩余5%像素的最邻近颜色。
摘要由CSDN通过智能技术生成

颜色量化

这里的颜色量化主要是用于显著性检测。将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
  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SongpingWang

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值