Swans Of A-toad

怜悯自己的人,永远摆脱不了生活的阴影……

导航

图象处理:基础

Posted on 2008-10-20 17:31  parker  阅读(1008)  评论(0编辑  收藏  举报

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

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

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

4.位图颜色值分解
       像素颜色值是一个长整型的数值,占4个字节,分别代表ABGR
       从Color中分解RGB可直接使用:
       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));
        bitmapBitmap类的实例,ij为图像的坐标点,rgb为图像的RGB值。

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