关于颜色模型的考虑
2007-12-19 19:45
302 查看
在整理功能时,突然意识到了 GDI+ 的一个重大限制:它仅仅支持 RGB 颜色模型。而平面绘图软件,至少应当是支持 RGB 和 CMYK 色彩空间的,GDI+ 由于仅仅用于屏幕绘图,仅需要与显示设备打交道,此根本没有考虑过 RGB 之外的色彩模型。这对于我们的 OpenPainter 来说,是一个很大的限制。
Photoshop 支持位图、灰度、RGB、CMYK、HSB、Lab、多通道及索引模式这几种颜色模式,对于灰度、RGB、CMYK、HSB、Lab及多通道这几种模式来说,还分 8 位、16 位、32 位三种色彩深度。我总是希望能够尽可能地利用 GDI+ 的既有功能,因此开始分析这些不同的模式。虽然说 RGB、CMYK、HSB、Lab 这些颜色空间的运算法则完全不同,但有一点是相同的,即它们都是由多个互相独立的通道组成。事实上,如果不考虑将图片显示出来的话,仅仅是绘图操作与保存,不同的颜色模式之间没有任何区别——无非是将每个像素根据通道数拆分成几个子像素,每个子像素根据所属通道的不同具有自己的取值范围而已。基于这个结论,我们可以将任何一种以通道为基础的颜色空间视为 n 个大小相同的灰度图像的组合。例如 RGB-8bits 图像即是由三个同尺寸的 8 位灰度图像合成的,分别代表 R、G、B 三个通道的亮度;而 CMYK-16bits 图像即是由四个同尺寸的 16 位灰度图像合成的,分别代表 C、M、Y、K 四个通道的颜色深度等等。
这么做其实可以很好地解决任何一种通道色彩模型,但限制很快又出现了,GDI+ 并不支持 8 位的灰度图像,而 8 位颜色深度是目前最为常用的。这使得我们几乎无法用刚才的方式来模拟通道色彩模型,而且每个通道单独绘制,也需要反复进行子像素亮度提取与绘制操作。无论是光栅位置的计算还是色彩混合操作次数都成倍增长,使 GDI+ 原本就不好的性能损失更大。
由于无法解决色彩模型这一根本限制,我们不得抛弃 GDI+,考虑基于 GDI 开发自己的图形库。这将意味着我们必须自己实现形状绘制、文本绘制、反走样、色彩混合、图像变换等基本的图形处理功能。鉴于这将是一个巨大的工程,我们可能在第一个公开预览版本中只支持 RGB-8bits 模式,继续使用 GDI+ 作为图形库。并在软件成型的基础上,逐步将其替换出来。
Photoshop 支持位图、灰度、RGB、CMYK、HSB、Lab、多通道及索引模式这几种颜色模式,对于灰度、RGB、CMYK、HSB、Lab及多通道这几种模式来说,还分 8 位、16 位、32 位三种色彩深度。我总是希望能够尽可能地利用 GDI+ 的既有功能,因此开始分析这些不同的模式。虽然说 RGB、CMYK、HSB、Lab 这些颜色空间的运算法则完全不同,但有一点是相同的,即它们都是由多个互相独立的通道组成。事实上,如果不考虑将图片显示出来的话,仅仅是绘图操作与保存,不同的颜色模式之间没有任何区别——无非是将每个像素根据通道数拆分成几个子像素,每个子像素根据所属通道的不同具有自己的取值范围而已。基于这个结论,我们可以将任何一种以通道为基础的颜色空间视为 n 个大小相同的灰度图像的组合。例如 RGB-8bits 图像即是由三个同尺寸的 8 位灰度图像合成的,分别代表 R、G、B 三个通道的亮度;而 CMYK-16bits 图像即是由四个同尺寸的 16 位灰度图像合成的,分别代表 C、M、Y、K 四个通道的颜色深度等等。
这么做其实可以很好地解决任何一种通道色彩模型,但限制很快又出现了,GDI+ 并不支持 8 位的灰度图像,而 8 位颜色深度是目前最为常用的。这使得我们几乎无法用刚才的方式来模拟通道色彩模型,而且每个通道单独绘制,也需要反复进行子像素亮度提取与绘制操作。无论是光栅位置的计算还是色彩混合操作次数都成倍增长,使 GDI+ 原本就不好的性能损失更大。
由于无法解决色彩模型这一根本限制,我们不得抛弃 GDI+,考虑基于 GDI 开发自己的图形库。这将意味着我们必须自己实现形状绘制、文本绘制、反走样、色彩混合、图像变换等基本的图形处理功能。鉴于这将是一个巨大的工程,我们可能在第一个公开预览版本中只支持 RGB-8bits 模式,继续使用 GDI+ 作为图形库。并在软件成型的基础上,逐步将其替换出来。
相关文章推荐
- 关于arcgis用GP服务模型 生成等直面没有跟地图一致,颜色区设置及数据接收问题的解决方法!
- 关于opencv中的颜色模型转换之CV_BGR2HSV
- 13-1盒模型代码简写关于颜色的css样式也是可以缩写的,当你设置的颜色是16进制的色彩值时,如果每两位的值相同,可以缩写一半。 例子1: p{color:#000000;} 可以缩写为: p{
- 写代码时候关于数据结构的考虑与算法效率的问题
- 关于 状态栏隐藏或着改变颜色
- 关于MFC下改变buntton按下、弹起时按钮的背景颜色的问题
- 关于DPM(Deformable Part Model)算法中模型可视化的解释
- Linux下C语言编程入门-17关于服务器模型
- Head First HTML & CSS chapter 8 ,9,10 :开始学习CSS, 字体和颜色设置, 盒模型
- 关于ios颜色渐进的总结
- ASP.NET 2.0 Beta2 关于页面编译模型变化的两篇文章
- echart 关于颜色渐变
- 关于O/R Mapping,在很久以前我就考虑过,这才是数据库的终极应用!
- 关于颜色、纹理和分层的目标检测(object detect)相关论文
- 背景建模算法(一)-------颜色背景模型 推荐
- 关于UI设计设计的颜色位数、UI缩放、透明的说明
- 关于Tensorflow 利用模型预测测试集结果的思路
- laravel学习笔记---关于模型
- 关于人脸识别的两大模型的比较
- 关于文档对象模型DOM的知识点