(一)算法介绍
八叉树颜色量化方法,该算法最早见于文章最早是在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