zoukankan      html  css  js  c++  java
  • C#数字图像处理算法学习笔记(一)--C#图像处理的3中方法

    C#数字图像处理算法学习笔记(一)--C#图像处理的3中方法

    Bitmap类:此类封装了GDI+中的一个位图,次位图有图形图像及其属性的像素数据组成。因此此类是用于处理像素数据定义的图形的对象。该类的主要方法和属性如下:

           GetPixel与SetPixel方法:获取或设置一个图像的指定像素的颜色。

          PixelFormat属性:返回图像的像素格式。

          Height和Width:返回图像的高度和宽度。

          LockBits与UnLockBits方法:分别锁定和解锁系统内存中的位图像素。

          LockBits方法返回一个BitmapData类型的对象。

          UnLockBits方法需要一个BitmapData类型的参数。

    BitmapData类:

            Height属性,Width属性:被锁定的高度和宽度。

            PixFormat属性:数据的实际像素格式。

            Scan0属性:被锁定数组的首字节地址。如果整个图像被锁定,则是图像的第一个字节地址。

            Stride属性:步幅,也称为扫描宽度。

    Graphics类:这个类是GDI+的关键所在。许多对象都是由Graphics类表示的,该类定义了绘制和填充图形对象的方法和属性。一个应用程序只需要进行绘制和着色,他就必须使用Graphics对象。

     

    彩色图像灰度化:为了加速图像处理的速度,在图形算法中,往往将彩色图像转换成灰度图像。而为了适应人眼的感应,使用如下算法:

     Gray(i,j)=0.299*R(i,j)+0587*G(i,j)+0.114*B(i,j)

    R(i,j),G(i,j),B(i,j)分别指的是对象像素的R,G,B分量值。

     

    在C#中图像处理的3种方法分别是:提取像素法、内存法、指针法

    像素提取法:通过GetPixel方法获取对应的像素信息,处理,再通过SetPixel设置对应像素的信息。这种方法是遍历所有的像素点并进行处理,对新手而言,这种方法便于理解,但效率很低。

    内存法:把图像数据复制到内存中,这样程序的运行速度将大大加快。使用了LockBits与UnLockBits方法。内存法的运算速率要远高于像素提取法。

    指针法:该方法与内存法类似,也是使用了LockBits与UnLockBits方法。但为了保证类型安全,C#是不支持指针的。要想使用指针,必须使用unsafe关键字。指针法的运算效率要高于内存法。

  • 相关阅读:
    内存管理——显式类型转换
    内存管理——隐式类型转换
    数据类型——构造类型——枚举
    构造类型——联合类型
    结构体学习笔记9——结构体大小计算规则
    结构体学习笔记8——内存对齐
    结构体学习笔记7——结构体数组
    结构体学习笔记6——结构体嵌套
    结构体学习笔记5——指针成员与函数成员
    一.js高级(9)深拷贝-浅拷贝的其他方法
  • 原文地址:https://www.cnblogs.com/SilentCode/p/4886532.html
Copyright © 2011-2022 走看看