zoukankan      html  css  js  c++  java
  • 如何将真彩色图转换为各种灰度图

    http://blog.sina.com.cn/s/blog_48e122970100g06s.html

    首先来看一下彩色图和灰度图的特点。

    在计算机中使用最多的 RGB 彩色空间,分别对应红、绿、蓝三种颜色;通过调配三个分量的比例来组成各种颜色。一般可以使用 1 、 2 、 4 、 8 、 16 、 24、 32 位来存储这三颜色,不过现在一个分量最大是用 8 位来表示,最大值是 255 ,对于 32 位的颜色,高 8 位是用来表示通明度(alpha tunnel)的,即RGBA四通道。彩色图一般指 16 位以上的图。灰度图有一个特殊之处就是组成颜色的三个分量相等;而一般灰度图是 8 位以下。

    在彩色电视机系统中,通常使用一种叫 YUV 的色彩空间,其中 Y 表示亮度信号;也就是这个 YUV 空间解决了彩色电视机和黑白电视机的兼容问题。

    对于人眼来说,亮度信号是最敏感的,如果将彩色图像转换为灰度图像,仅仅需要转换保存亮度信号就可以。

    从 RGB 到 YUV 空间的 Y 转换公式为:

    Y = 0.299R+0.587G+0.114B

     在 WINDOWS 中,表示 16 位以上的图和以下的图有点不同; 16 位以下的图使用一个调色板来表示选择具体的颜色,调色板的每个单元是 4 个字节,其中一个透明度;而具体的像素值存储的是索引,分别是 1 、 2 、 4 、 8 位。 16 位以上的图直接使用像素表示颜色。

    那么如何将彩色图转换为灰度图呢?

    灰度图中有调色板,首先需要确定调色板的具体颜色取值。我们前面提到了,灰度图的三个分量相等。

    当转换为 8 位的时候,调色板中有 256 个颜色,每个正好从 0  255 个,三个分量都相等。

    当转换为 4 位的时候,调色板中 16 个颜色,等间隔平分 255 个颜色值,三个分量都相等。

    当转换为 2 位的时候,调色板中 4 个颜色,等间隔平分 255 个颜色,三个分量相等。

    当转换为 1 位的时候,调色板中两个颜色,是 0  255 ,表示黑和白。

    任何颜色都有红、绿、蓝三原色组成,假如原来某点的颜色为RGB(R,G,B),那么,我们可以通过下面几种方法,将其转换为灰度: 
      1.浮点算法:Gray=R*0.3+G*0.59+B*0.11 
      2.整数方法:Gray=(R*30+G*59+B*11)/100 
      3.移位方法:Gray =(R*28+G*151+B*77)>>8; 
      4.平均值法:Gray=(R+G+B)/3; 
      5.仅取绿色:Gray=G; 
      通过上述任一种方法求得Gray后,将原来的RGB(R,G,B)中的R,G,B统一用Gray替换,形成新的颜色RGB(Gray,Gray,Gray),用它替换原来的RGB(R,G,B)就是灰度图了。

    灰度和亮度差不多,灰度的黑白就如同亮度的明暗,在“色相无关性”方面两者也是一致的,因此灰度也常被用来表示亮度。那么,将图像转为灰度,就可以看出图像中像素的亮度分布。比如使用去色命令【图像>调整>去色】〖CTRL SHIFT U〗,就可以将图像转为灰度。注意这句话:“将图像转为灰度”。这其实是不严谨的,因为去色命令并不能针对所有图层有效。所以应该说“将图层转为灰度”。事实上色彩调整命令都只能针对单个图层,即使有图层链接或图层组存在也是一样

  • 相关阅读:
    linux 命令——48 watch (转)
    linux 命令——47 iostat (转)
    linux 命令——46 vmstat(转)
    linux 命令——45 free(转)
    linux 命令——44 top (转)
    linux 命令——43 killall(转)
    linux 命令——42 kill (转)
    linux 命令——41 ps(转)
    linux 命令——40 wc (转)
    Java for LeetCode 068 Text Justification
  • 原文地址:https://www.cnblogs.com/zkwarrior/p/4957496.html
Copyright © 2011-2022 走看看