青年强大主义

学习是没有放弃治疗的最好标准!
图像处理---基础
转自:http://www.cnblogs.com/a-toad/archive/2008/10/20/1315268.html

 1.类
    GDI+提供了两个类可以用于表示图像:Bitmap类和Metafile类,这两个类都继承自Image类.
    Image类: 为 Bitmap 和 Metafile 的类提供功能的抽象基类。因此不能直接创建Image对象,
                    只能创建继承自它的Bitmap和Metafile类的实例.
    Bitmap类:封装 GDI+ 位图,提供了处理位图的功能。允许控制基于光栅的位图的基本特性,
                    如大小、分辨率、颜色深度、是否包含Alpha信息、是否使用颜色地图等。
    Metafile类:定义图形图元文件。图元文件包含描述一系列图形操作的记录,这些操作可以被
                    记录(构造)和被回放(显示)。此类不能继承。(MSDN)
                    提供了处理矢量图像的功能。

2.位图图像的颜色
        图像像素颜色由三种基本颜色有机组合而成,即红-R、绿-G、蓝-B称为三原色。
        每种基色可取0~255的值。每种颜色都有对应的R、G、B值。

3.图像颜色值的获取
        通过Bitmap类的GetPixel()方法获取图像上指定像素的颜色值。
        Color color = new Color();
        color = bitmap.GetPixel(i,j);
        以上bitmap表示Bitmap类的一个实例,(i,j)表示取得图像颜色的坐标位置。

4.位图颜色值分解
       像素颜色值是一个长整型的数值,占4个字节,分别代表A、B、G、R。
       从Color中分解R、G、B可直接使用:
       int r,g,b;
       Color color = new Color();
       r = color.R;
       g = color.G;
       b = color.B;

5.图像的RGB和亮度、色差信号间值得关系
     | Y  |       | 0.31    0.59    0.11   |    | R |
     | I   |  =   |0.60    -0.28   -0.32  |    | G |
     | Q  |       |0.21    -0.52   -0.31  |    | B |
    这样,亮度Y为:Y=0.31R + 0.59G + 0.11B   

6.图像像素颜色的设定
      设置像素使用Bitmapl类的SetPixel()方法:
        bitmap.SetPixel(i,j,Color.FromArgb(r,g,b));
        bitmap为Bitmap类的实例,i、j为图像的坐标点,r、g、b为图像的R、G、B值。

7.LockBits处理图像像素
      GetPixel()、SetPixel()处理图像像素比较方便,然而面对大量的图像像素数据时,程序会很慢。
      C#提供了一种高效率的像素处理方法即使用LockBits方法。
      LockBits方法类似于C++中的指针概念,直接操作内存中的像素数据,因此被认为是不安全的,
      需在Unsafe模式下使用它。

posted on 2014-06-24 14:17  青年强大主义  阅读(176)  评论(0编辑  收藏  举报