关闭

C#图像处理_图像遍历

2363人阅读 评论(0) 收藏 举报


最近在学习基于C#的图像处理,说白的了是使用C#对图像进行处理大笑。 头开始学图像处理环境是VC + Opencv,新手小白艰苦的把Opencv装起来了 ,用了一段时间的opencv函数,后来老师要求使用C#自己写函数实现图像处理的算法,查了很多书和资料。

现在把自己实现的,简单的图像处理的算法系统的编排下。 因为编程很菜,有些算法有些幼稚冗杂,以后会慢慢改进。

 

在写实现图像遍历前,先了解下数字图像的基本概念 以及 数字图像的基本格式

数字图像概念:http://baike.baidu.com/view/286845.htm

数字图像格式:http://baike.baidu.com/view/13674.htm   

 注:格式知道 什么是单通道 什么的多通道 以及图像实际宽度 和 系统默认的编排宽度 就行了,当然如果你能全部了解一下更好。

 

单通道图像(灰度图)一个像素占一个字节。

多通道例如 24rgb 每个色彩占各占一个字节。 (红、绿、蓝各占一个字节)

我们主要使用 24Rgb 格式。

 

初步了解了数字图像的基本概念接下来对图像进行简单的遍历。

 

源码:

        public static byte[] ChangeByte(Bitmap tp)
        {
            int w = tp.Width;   // 图像实际宽度 
            int h = tp.Height;  // 图像实际高度

            BitmapData srcdata = tp.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadOnly,
              PixelFormat.Format24bppRgb);     // 将图像锁入内存,只读,图像格式为rgb格式

            byte[] pixeData = new byte[h * w]; // 声明一个与图像等大的数组,因为每个像素点的(灰度)值
                                               // 范围为 0 - 255  所以使用byte数组
            int sride = srcdata.Stride;    // 获取图像的系统宽度(字节数)
            unsafe    // C#使用指针时需要在unsafe中使用,
            {    // C#默认不支持unsafe,使用时在项目 -》选项  -》生成中设置
                byte* temp = (byte*)srcdata.Scan0.ToPointer(); // 获取图像锁入内存的首地址

                for (int i = 0; i < h; i++)
                {
                    for (int j = 0; j < w; j++)
                    {
                        pixeData[i * w + j] = temp[0];  // 我们只获取第一个色彩的值,对于灰度图像
                                                        // red blue green 像素值相等
                        temp += 3;                      // 跳过其余两色
                    }
                    temp += sride - w * 3;              // 加上系统对齐的宽度 
                }
            }

            tp.UnlockBits(srcdata);                     // 解锁
            return pixeData;

        }

好了,通过图像遍历,将pictureBox 中的 灰度bitmap变量转变为一维数组,方便进一步的图像处理。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:59271次
    • 积分:807
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:22篇
    • 译文:0篇
    • 评论:8条
    文章分类
    最新评论