技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 算法 --> photoshop图像点运算算法揭秘

photoshop图像点运算算法揭秘

浏览:3093次  出处信息

   今天写一个直方图规定化的程序,为了得到一副和原来有所不同的bmp图片,我就使用photoshop 7.0对bmp图像进行了均衡化操作,并改了亮度和对比度。我那个直方图规定化程序要用到这个改变后的bmp图片的直方图,我使用这个ps过的Bmp图片进行实验,结果不正确。经过检测,我发现ps过的图片的直方图居然和没有ps过的图片的直方图是一样的,这个发现让我大吃一惊!

   bmp图片的格式我是了如指掌的,是不是ps以某种方式记录了它的更改操作呢?我比较了下ps前和ps后的图片的大小,结果发现ps后图片大小大了两个字节。用UltraEdit打开看了下十六进制的数据,发现原来是ps后的图片末尾被ps添加了两个字节的零。这两个字节的零不会对亮度和对比度起任何作用,那么到底什么改变了亮度和对比度呢?

   我继续对比十六进制数据,发现ps前后位图数据没有任何变化(直方图一样侧面验证了这个想法)。然后查看位图调色板(颜色表),终于发现了大的不同。ps后的图片的调色板里面的值不是常用的8bit位图的调色板里面的值,通常我们写8bit位图的时候调色板的值就是(0,0,0,0) (1,1,1,0) (2,2,2,0)…….但是ps过的图片的调色板并不是这样的。原来,ps里面对图像进行全局的点运算,比如直方图均衡化,调整亮度和对比度,等等全局的点运算,都是直接对调色板进行操作。ps高效运算的秘密就在这里,它只需要调整这256个调色板项目的值,而不需要对每一个像素进行操作,就能得到正确的结果。那么为什么我得到的直方图没有变化呢?原因就是我默认它的调色板是传统的调色板了。ps里面显示的直方图以及亮度对比度信息则是全新的值,因为它计算亮度对比度的时候用到了调色板的值。

   ps的这种算法给了我很大的启发,一个小小的变通,带来的是程序效率的大大提升。当然,如果改变了调色板的值,那么我们的读取和写入函数也要做相应的改变了,正确的读取和写入bmp图像的函数的写法必须考虑到调色板的内容。当然,对于24bit以及32bit的bmp的图像ps是不能用这种方法来高效的运算的。

建议继续学习:

  1. 谁说设计师不会写代码?—Photoshop脚本语言简介    (阅读:3360)
  2. 网页设计师应该知道的9个Photoshop小技巧    (阅读:2865)
  3. 将小型、现代的产品主页由psd转换成XHTML/CSS模板    (阅读:2598)
  4. 关于Fireworks 和Photoshop两者之间图片优化的比较    (阅读:2352)
  5. Photoshop图标(icon)设计分享    (阅读:2102)
  6. 用Photoshop设计一个小型、现代的产品主页    (阅读:1979)
  7. 如何用photoshop绘画真实足球鞋    (阅读:1814)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1