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关键字。指针法的运算效率要高于内存法。

C#数字图像处理算法学习笔记(一)--C#图像处理的3中方法的更多相关文章

  1. C#数字图像处理算法学习笔记(三)--图像几何变换

    C#数字图像处理算法学习笔记(三)--图像几何变换 几何图像处理包括 图像的平移变换,镜像变换,旋转变换,伸缩变换,在这里仅以水平镜像为例,通过代码来理解其基本操作方式: 翻转前:

  2. C#数字图像处理算法学习笔记(二)--点运算与直方图

    C#数字图像处理算法学习笔记(二)--点运算与直方图 在数字图像处理中,点运算是一种简单而重要的技术.点运算只是根据对象的像素的输入灰度值来决定像素的输出灰度值的图像处理运算.它有时也被称为对比度增强 ...

  3. Java学习笔记(七)——获取类中方法的信息,java的LinkedList

    [前面的话] 在实际项目中学习知识总是最快和最有效的,既能够较好的掌握知识,又能够做出点东西,还是简单的知识总结,最近一直在总结笔记,写的东西还是比较水,希望慢慢可以写出一些干货. 学习过程中的小知识 ...

  4. Java多线程学习笔记(一)——Thread类中方法介绍

    currentThread():返回代码正在被哪个线程调用. public class CurrentThreadWay { public static void main(String[] args ...

  5. Java多线程学习笔记(四)——Thread类中方法介绍

    currentThread():返回代码正在被哪个线程调用. public class CurrentThreadWay { public static void main(String[] args ...

  6. Vue.js学习笔记:在元素 和 template 中使用 v-if 指令

    f 指令 语法比较简单,直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " ...

  7. C# 动态生成word文档 [C#学习笔记3]关于Main(string[ ] args)中args命令行参数 实现DataTables搜索框查询结果高亮显示 二维码神器QRCoder Asp.net MVC 中 CodeFirst 开发模式实例

    C# 动态生成word文档 本文以一个简单的小例子,简述利用C#语言开发word表格相关的知识,仅供学习分享使用,如有不足之处,还请指正. 在工程中引用word的动态库 在项目中,点击项目名称右键-- ...

  8. vue学习笔记之:为何data是一个方法

    vue学习笔记之:为何data是一个方法 在vue开发中,我们可以发现,data中的属性值是在function中return出来的.可为何data必须是一个函数呢?我们先看官方的解释: 当一个组件被定 ...

  9. [P1169] 棋盘制作 &悬线法学习笔记

    学习笔记 悬线法 最大子矩阵问题: 在一个给定的矩形中有一些障碍点,找出内部不包含障碍点的,边与整个矩形平行或重合的最大子矩形. 极大子矩型:无法再向外拓展的有效子矩形 最大子矩型:最大的一个有效子矩 ...

随机推荐

  1. linux普通用户home目录锁定

  2. 使用DOS指修改文件名

    需求:将文件名中的特殊字符#和~去掉 文件夹路径如下: 开始->运行->在对话框中输入字母“cmd”,进入dos模式 输入命令行“cd c:\test”然后回车,再输入命令行“dir /b ...

  3. React组件详细介绍及其生命周期函数

    组件的详细说明 通过Reac.createClass({...})创建组件的时候,应该有一个render()方法,也可以在其中添加生命周期函数. render方法 当调用该方法的时候,会检测this. ...

  4. CSS样式基础:

    CSS:外部文件导入  <link rel="stylesheet" type="text/css" href="./style.css&quo ...

  5. cdce62005配置说明

    相关芯片手册可查阅:http://www.ti.com.cn/product/cn/cdce62005 需要使用的软件下载地址:http://www.ti.com.cn/cn/lit/sw/scac1 ...

  6. hdu1083

    #include"stdio.h" #include"string.h" #define N 305 int mark[N],link[N],map[N][N] ...

  7. google广告尺寸

    谷歌AdMob广告支持三种tablet-only旗帜大小除了320×50显示在手机: 大小(WxH) 描述 可用性 AdSize常数 320×50 标准的旗帜 手机和平板电脑 横幅 300 x250 ...

  8. opengl 和 vs2010的安装配置

    1.先安装vs2010, 输个激活秘钥 2.Windows 7下OpenGL如何配置,配置glut:    http://jingyan.baidu.com/article/b0b63dbfd1c08 ...

  9. CodeForces 114B 【STL应用】

    思路: 原来string类能sort 和 swap....太强了.... 注意:字典序最小输出,因为某个地方写挫了,sort了n发,代码挫. #include <bits/stdc++.h> ...

  10. Unity3D -- shader常用函数和变量

    最近在学习Unity Shader,写Shader的时候总是忘记Unity为我们提供的函数.变量怎么写的,这里整理一下,方便自己查阅,也提供给网友,学习Shader不易. 1.函数 float3 Wo ...