关于PhotoShop Act文件颜色提取算法以及图像减色算法

耳朵最威风 2010-06-30 12:16:44
PhotoShop里面有一个Act文件就是调色板文件格式,对于这个文件的生成顺序里面有一个未排序,实在是不知道这个未排序是按什么样的顺序生成的颜色表呢?如果原图片是一个16位BMP图。那么怎么生成这个16位的BMP图的act文件呢。
目前,我自己做了一种笨方法。
1。统计出现过的每种颜色的出现次数。
2。按照出现次数从大到小排序颜色。
3。如果颜色个数大于256种,需要去掉N种颜色,那么从去掉序列中出现次数较少N种颜色。
4。方法为在保留的256种颜色中,找到一种与需要去掉的颜色最相近的颜色。替换之。
完成减色的目的。
但是这种方法效率实在是太低下了。
希望各位达人能够参加讨论,或者提出更好的意见。。多谢指教!!
...全文
782 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
stonewater 2010-06-30
  • 打赏
  • 举报
回复
学 习
laviewpbt 2010-06-30
  • 打赏
  • 举报
回复
早期的Photoshop的开发文档 File Formats Specification 中有对ACT格式进行简单的说明:



这个文档对于现在的ACT来说有些不正确了,因为这个文件的大小有两个可能的值,一个是768,一个是772,当调色板中有透明像素(PS中调色板只可以有一个透明像素)或者调色板有效的数字量小于256时,就为772字节。第770个字节说明了调色板的数量,772个字节指明透明像素的位置。

你问题的后面描述很是不清楚,因为1:16位图像没有调色板的概念,也学你说的是16色图像(16色图像对应4位)。2、ACT中的调色板没有什么排序的概念。
耳朵最威风 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 laviewpbt 的回复:]
PS转换为低位色你不管他用什么算法,我们自己做的话一般就是通过8叉树得到最优化的颜色表,这个表就可以看成是PS中的未排序的结果,所谓按色相排序就是对未排序的颜色按照各颜色色相大小从小到大排序,按明度类似,按普及度排序就是按每个颜色的使用次数排序,因为8叉树的结果并不一定是按照使用频率排序的。
[/Quote]
多谢大侠!!兄弟先去研究一下8叉树。。
laviewpbt 2010-06-30
  • 打赏
  • 举报
回复
PS转换为低位色你不管他用什么算法,我们自己做的话一般就是通过8叉树得到最优化的颜色表,这个表就可以看成是PS中的未排序的结果,所谓按色相排序就是对未排序的颜色按照各颜色色相大小从小到大排序,按明度类似,按普及度排序就是按每个颜色的使用次数排序,因为8叉树的结果并不一定是按照使用频率排序的。
laviewpbt 2010-06-30
  • 打赏
  • 举报
回复
8叉树。
耳朵最威风 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 laviewpbt 的回复:]
早期的Photoshop的开发文档 File Formats Specification 中有对ACT格式进行简单的说明:



这个文档对于现在的ACT来说有些不正确了,因为这个文件的大小有两个可能的值,一个是768,一个是772,当调色板中有透明像素(PS中调色板只可以有一个透明像素)或者调色板有效的数字量小于256时,就为772字节。第770个字节说明了调色板的数量,772个字节指明……
[/Quote]
多谢。
关于第2个问题我当时写得确实不是很清楚。我觉得应该是2个问题
一个是BMP图转换成PNG-8的问题。
PNG-8只可以有256种颜色,但是位图却可以有很多很多,比如3000种颜色。这势必就涉及到了一个问题,那就是减色。怎么样把一张3000种颜色的BMP图,转换成一张只有256种颜色的PNG-8的图呢?这就是我上面说的那个特别笨的办法。目的确实达到了,但是绝对不是个好方法。
另一个就是PhotoShop的早期版本中(可能现在版本中也有)的一个功能,就是“存储为Web格式”.[Quote=引用 1 楼 laviewpbt 的回复:]
早期的Photoshop的开发文档 File Formats Specification 中有对ACT格式进行简单的说明:



这个文档对于现在的ACT来说有些不正确了,因为这个文件的大小有两个可能的值,一个是768,一个是772,当调色板中有透明像素(PS中调色板只可以有一个透明像素)或者调色板有效的数字量小于256时,就为772字节。第770个字节说明了调色板的数量,772个字节指明……
[/Quote]
多谢。
关于第2个问题我当时写得确实不是很清楚。我觉得应该是2个问题
一个是BMP图转换成PNG-8的问题。
PNG-8只可以有256种颜色,但是位图却可以有很多很多,比如3000种颜色。这势必就涉及到了一个问题,那就是减色。怎么样把一张3000种颜色的BMP图,转换成一张只有256种颜色的PNG-8的图呢?这就是我上面说的那个特别笨的办法。目的确实达到了,但是绝对不是个好方法。
另一个就是PhotoShop的早期版本中(可能现在版本中也有)的一个功能,就是“存储为Web格式”.

里面有存储颜色表这项,上面有排序方式。不知道这些排序的方法有没有公开的算法出来,尤其是那个未排序。实在不知道是个什么算法。

19,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧