八叉树算法,提取图片主色调,颜色量化,聚类

(一)算法介绍

八叉树颜色量化方法,该算法最早见于文章最早是在1988, M. Gervautz 和 W. Purgathofer 发表的论文《A Simple Method for Color Quantization: Octree Quantization》,算法的最大优点是效率高,占用内存少(仅需要不超过(颜色数量+1)个节点,加上一些中间节点所占用的内存),选出的调色板最合理,显示效果最好。

八叉树算法是采用八叉树这种数据结构存储颜色值,通过建立八叉树、产生调色板、生成量化文件三个步骤来实现颜色量化,其中建立八叉树包含查找、插入和颜色归并三步,该算法具有效率相对较高、内存开销较小的特点,但也可能存在某些关键颜色丢失的问题。

主色调提取步骤

具体算法步骤为:
1)预设量化后的颜色种类数为K,建立一颗叶节点小于K的颜色八叉树,建树过程如下图1;
2)遍历1)中建好的八叉树,计算叶节点中R、G、B三分量的平均值,即为量化后K种颜色,保存颜色至调色板并在叶节点中记录颜色在调色板中的索引;
3)根据背景图像的R、G、B值,在调色板中查找出最相似的颜色索引,并进行颜色替换,即可得到颜色量化后的背景图像。
颜色八叉树建立示意图

(三)代码演示

用到的函数:
输入:
Image:一张待处理的图像
ColorOfNumber:最终需要量化的颜色种类
输出:
img:量化后的背景图像
ImgMap:索引图

function [img,ImgMap]=Octre(Image,ColorOfNumber) 
switch ColorOfNumber
    case 2
        Result=255;
    case 4
        Result=255;
    case 8
        Result=255;
    case 16
        Result
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值