一种基于色彩退化的有限调色板生成方法
技术领域
本发明涉及基于色彩退化的有限调色板生成方法。
背景技术
目前图像显示领域最常用的色彩空间是RGB色彩空间,不同的图片存储格式有不同的颜色表示方法,对于真彩图像每一个字节表示一个颜色通道,对于256色图像会有一个256种颜色的调色板,而图像的每个像素则用一个字节来表示调色板的索引,这可以大大节省空间,带来的代价是图片显示的效果会比真彩色差。
随着计算机内存容量的不断提升,许多领域完全不用调色板了,然而在许多嵌入式领域,由于内存资源的限制256色图像格式依然使用广泛,甚至在一些低端的芯片上所有的图片共用一个调色板,在图片的色彩空间相差很大而且需要比较好的显示效果的场合,调色板的生成就尤为重要,一个好的调色板可以利用尽可能少的空间实现尽可能好的图片显示效果,这对有限调色板场合非常有用。
然而,目前还没有好的调色板生成方法来解决这类有限调色板生成,尤其是多张图片共用同一个调色板的调色板生成方法,使用传统的调色板生成算法生成的调色板是所有图片综合考虑的平均结果,然而这在图片显示权重有差异的情况下,图片显示效果差,它不能根据图片的显示权值对调色板生成算法进行调整,这使得一些并不重要的图片占据了多余的调色板空间而一些重要的图片却由于调色板空间限制不能实现更好的显示效果,
综上所述,现有技术由于调色板数目的限制导致图片的显示效果差以及由于大量图片导致图片的显示效果差,所以提出一种基于色彩退化的有限调色板生成方法是十分必要的。
发明内容
本发明的目的是为了解决现有图片的显示效果差的问题,而提出了一种基于色彩退化的有限调色板生成方法。
上述的发明目的是通过以下技术方案实现的:
步骤一、利用改进的八叉树色彩退化算法实现指定数量的调色板生成算法;
步骤二、利用指定数量的调色板生成算法结合图片的显示权值生成所有图片共用的有限调色板。
发明效果
采用本发明的一种基于色彩退化的有限调色板生成方法,
1.改进的色彩退化算法充分考虑了图片的颜色统计特性,使得每次被缩减的颜色代价最小,即颜色值的损失最小,每个图片设置显示权值,不仅可以综合考虑所有图片的颜色特性,还可以指定不同的图片具有不同的显示优先级,对于需要色彩丰富的图片使用多的调色板,而对于色彩相对少的图片使用少的调色板,解决了生成调色板的过程中图片的显示效果不会由于调色板数目的限制导致图片的显示效果差的问题。
2.使用带索引的最小堆来实现颜色的退化算法,保证了算法的执行时间短,对大量图片进行调色板生成调试时是非常有帮助的,解决了在生成调色板的过程中图片的显示效果由于大量图片导致图片的显示效果差的问题。
本发明解决了以往有限调色板图片显示效果差的问题,利用带索引的最小堆保证算法的执行效率高,有限调试板生成效果可认为调整,使得在显示权重偏差比较大的场景图片显示效果比以往的技术显示效果提高30%-50%,算法的运行时间和以前是相同的。
总而言之,本方法使得有限调色板生成在应对不同图片具有不同显示优先级的情况也具有良好的显示效果,不会因为由于综合考虑所有图片而导致某些细腻的图片显示效果差的问题。
附图说明
图1为利用改进的八叉树色彩退化算法实现指定数量的调色板生成算法的流程图;
图2为利用指定数量的调色板生成算法结合图片的权值生成所有图片共用的有限调色板的流程图;
图3为实施例一中利用改进的八叉树色彩退化算法在不同数量调色板下的算法执行效果图,a为测试图片的原图,b为测试图片在调试板数量为256个的算法执行效果图,c为测试图片在调试板数量为128个的算法执行效果图,d为测试图片在调试板数量为64个的算法执行效果图,e为测试图片在调试板数量为32个的算法执行效果图,f为测试图片在调试板数量为16个的算法执行效果图;
图4为实施例二中的原始图像,a为0.bmp的图像效果图,b为1.bmp的图像效果图,c为2.bmp的图像效果图,d为3.bmp的图像效果图,e为4.bmp的图像效果图,f为5.bmp的图像效果图,g为6.bmp的图像效果图,h为7.bmp的图像效果图;
图5为不利用本方法对图四进行生成调色板生成后形成的效果图像,a为0.bmp的图像效果图,b为1.bmp的图像效果图,c为2.bmp的图像效果图,d为3.bmp的图像效果图,e为4.bmp的图像效果图,f为5.bmp的图像效果图,g为6.bmp的图像效果图,h为7.bmp的图像效果图;
图6为实施例二中利用本方法对图4进行生成调色板后形成的效果图像,a为0.bmp的图像效果图,b为1.bmp的图像效果图,c为2.bmp的图像效果图,d为3.bmp的图像效果图,e为4.bmp的图像效果图,f为5.bmp的图像效果图,g为6.bmp的图像效果图,h为7.bmp的图像效果图。
具体实施方式
具体实施方式一:一种基于色彩退化的有限调色板生成方法,其特征在于,一种基于色彩退化的有限调色板生成方法具体是按以下步骤进行的:
步骤一、利用改进的八叉树色彩退化算法实现指定数量的调色板生成算法;
步骤二、利用指定数量的调色板生成算法结合图片的显示权值生成所有图片共用的有限调色板。
具体实施方式二:结合图1说明本实施方式,本实施方式与具体实施方式一不同的是,所述步骤一中利用改进的八叉树色彩退化算法实现指定数量的调色板生成算法;具体过程为:
改进的八叉树色彩退化算法按如下步骤实现:
步骤一一、选择图片的一个像素记为pixeli,i为第几个像素,其RGB值记为pr,pg,pb,pr,pg,pb为RGB的三个颜色通道,每个颜色通道有8位,1,2,3,4,5,6,7,8,即每个颜色通道位的索引位置为j(1≤j≤8),j为第几位,每一位对应一层子树节点,最后一位加一层叶子节点,即每个颜色通道有8+1层节点,对应树的深度为8+1,记录颜色值,每一位有0,1两种选择,由于RGB有三个颜色通道,所以每一位有2^3=8种选择,每一种选择对应一个子树节点,即每一位对应八个子树节点,构成了八叉树,全局的最大调色板数量为C;
其中,所述C为正整数,pr为像素的红色分量值,pg为像素的绿色分量值,pb为像素的蓝色分量值;
比如一个像素:
R:10001111 G:01001111 B:00101111
第一个节点:1<<2+0<<1+0=4,所以子树在八叉树的4叉上。进入这个子树
第二个节点:0<<2+1<<1+0=2,子树在2叉上,进入这个子树
第三个节点:0<<2+0<<1+1=1子树在1叉上,同理遍历8个位,就构建好了8个子树,最后一个是叶子节点,他会记录rgb值。当然有可能有些子树已经构建好了,就计数加一,还有可能叶子节点(最后的调试版)超过了最大值,就需要合并;
步骤一二、遍历颜色通道位的索引位置,若index=(pr[j]<<3)|(pg[j]<<2)|pb[j]节点为子树节点或空节点,则创建新的index=(pr[j]<<3)|(pg[j]<<2)|pb[j]节点,
若index=(pr[j]<<3)|(pg[j]<<2)|pb[j]节点为叶子节点,则将该叶子节点的计数加1,若超过了全局的最大调色板数量C,则进行步骤一四,否则进行步骤一三;
步骤一三、执行步骤一一,直到图片的所有像素均被遍历,即获得了指定数量的调色板生成算法;
步骤一四、在所有子树节点中选择叶子节点计数和最小的叶子节点或者空节点,将该子树节点中叶子节点合并成一个叶子节点,执行步骤一二;
在计算使用频率最低的节点时使用了带索引的最小堆,使得本算法比其他色彩退化算法具有更好的执行效率。
其它步骤及参数与具体实施方式一相同。
具体实施方式三:结合图2说明本实施方式,本实施方式与具体实施方式一或二不同的是,所述步骤二中利用指定数量的调色板生成算法结合图片的显示权值生成所有图片共用的有限调色板;具体过程为:
步骤二一、将需要进行色彩退化的N张图片记为pk(1≤k≤N),k表示第几张图片,pk(1≤k≤N)对应的显示权值为wp,p的取值为1≤p≤k,N为正整数,p1为需要进行色彩退化的N张图片中的第一张,PN为需要进行色彩退化的N张图片中的第N张;
步骤二二、根据图片显示权值对图片按照权值降序顺序进行排序,排序后的图片记为p'k;
步骤二三、选择一张排序后的图片,将图片的调色板的最大数量设置为ck,根据指定数量的调色板生成算法生成图片的调色板;
步骤二四、遍历所有图片即可生成所有图片共用的有限调色板。
实施例1:
下面以一张图片例,在给定不同数量的调色板的情况下,结合图3a、3b、3c、3d、3e和3f具体说明本发明的技术方案,图3中a为测试图片的原图,b为测试图片在调试板数量为256个的算法执行效果图,c为测试图片在调试板数量为128个的算法执行效果图,d为测试图片在调试板数量为64个的算法执行效果图,e为测试图片在调试板数量为32个的算法执行效果图,f为测试图片在调试板数量为16个的算法执行效果图;
步骤一、利用改进的八叉树色彩退化算法实现指定数量的调色板生成算法;
步骤一一、选择图片的一个像素记为pixeli,其RGB值记为pr,pg,pb,将RGB个颜色通道大小设为一个字节,最大调色板个数依次为C1=256,C2=128,C3=64,C4=32,C5=16
步骤一二、记当前图片像素的颜色通道位的索引位置为j(1≤j≤8),遍历索引位置,如果由index=(pr[j]<<3)|(pg[j]<<2)|pb[j]为子树索引的节点为空节点,则创建新节点,如果是叶子节点则将该叶子节点的计数加1,如果叶子节点数超过了给定的最大调色板数量Ci,则进行步骤一四,否则进行步骤一三。
步骤一三、执行步骤一二,直到图片的所有像素均被遍历。
步骤一四、选择所有子树均为叶子节点或者空节点的一个节点,确保该节点是所有同类节点中叶子节点计数和最小的节点,即为使用频率最低的节点,将该节点合并成一个叶子节点;进行步骤一二;
步骤二、利用指定数量的调色板生成算法结合图片的显示权值生成所有图片共用的有限调色板。
下面以七张图片例,在给定每张图片不同的显示权值的情况下,结合图4-6具体说明本发明的技术方案;
步骤二一、需要进行色彩退化的8张图片以及各显示权值如下表所示
|
图片名称 |
图片显示权值 |
1 |
0.bmp |
0.1 |
2 |
1.bmp |
0.1 |
3 |
2.bmp |
0.3 |
4 |
3.bmp |
0.1 |
5 |
4.bmp |
0.3 |
6 |
5.bmp |
0.03 |
7 |
6.bmp |
0.03 |
8 |
7.bmp |
0.04 |
步骤二二、按照图片显示权值对图片顺序进行排序,对应的调色板总数量如下表
步骤二三、选择一张图片,将最大调色板个数设置为对应的调色板数量,按照改进的八叉树色彩退化算法实现指定数量的调色板生成算法生成调色板。
步骤二四、遍历所有图片即可生成调色板,效果如图6显示。