彩色图像的分割处理程序设计+Hough算法(4)
时间:2016-12-16 21:10 来源:毕业论文 作者:毕业论文 点击:次
(1.1) 其中,f表示空间坐标为(x,y,z)位置点的颜色,如果只考虑平面的情况,平面图像函数的描述为: (1.2) RGB色彩空间是目前常用的一种彩色信息表达方式,它用红、蓝、绿三原色的亮度来定量表示颜色。RGB色彩空间使用RGB模型为图像中每一个像素的RGB分量分配一个0~255范围内的强度值。例如:纯红色R值为255,G值为0,B值为0;灰色的R、G、B三个值相等(除了0和255);白色的R、G、B都为255;黑色的R、G、B都为0。RGB图像只使用三种颜色,就可以使它们按照不同的比例混合,在屏幕上重现16777216种颜色。在 RGB 模式下,每种 RGB 成分都可使用从 0(黑色)到 255(白色)的值。 当所有三种成分值相等时,产生灰色阴影。 当所有成分的值均为 255 时,结果是纯白色;当该值为 0 时,结果是纯黑色。 如图1.1所示,RGB模型表示了颜色之间的关系。 图1.1 颜色的RGB空间 红色、绿色和蓝色组成了三个轴,在RGB颜色立方体上,每一种颜色都有其几何坐标。黑色位于立方体后方下部,(0,0,0)表示没有光线。立方体前方的顶部是白色,在这一点上,所有颜色的光线都集中在此。立方体的其他几个角分别是青色、品红色和黄色。 1.2 C#图像处理基础 1.2.1 Bmp图像结构 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成。因此Bitmap是用于处理由像素数据定义的图像的对象。该类的主要方法和属性有: (1) GetPixel方法和SetPixel方法:获取和设置一个图像的指定像素的颜色。 (2) PixelFormat属性:返回图像的像素格式。 (3) Height和Width属性:返回图像的高度和宽度。 (4) LockBits方法和UnlockBits方法:分别锁定和解锁系统内存中的位图像素。在基于像素点的图像处理方法中使用LockBits和UnlockBits是一个很好的方式,这两种方法不但处理速度快,而且可以使我们通过指定像素的范围来控制位图的任意一部分,从而消除了通过循环对位图的像素逐个进行处理的需要。每次调用LockBits之后都必须调用一次UnlockBits,否则图像数据将会一直长占内存。 BitmapData类BitmapData对象指定了位图图像的属性,且是由Bitmap类的LockBits和UnlockBits方法使用,不可继承。BitmapData类最重要的属性有: (1) Scan0属性:获取或设置位图中第一个像素数据的地址,它也可以看成是位图中的第一个扫描行。 (2) Stride属性:步幅,获取或设置Bitmap对象的跨距宽度(也称为扫描宽度)。但需要注意的是,Stride宽度并不一定等于图像的像素数组的宽度,如图2.1所示,这是因为Windows规定图像文件中一个扫描行的宽度必须是4字节的整数倍,不足的以0填充。 a)Bitmap: (1) public Bitmap (int width,int height,int stride, PixelFormat format,IntPtr scan0)用指定的大小、像素格式和像素数据初始化 Bitmap 类的新实例。 (2) LockBits():,就是把图像的内存区域根据格式锁定,拿到那块内存的首地址。这样就可以直接改写这段内存了。这个方法的设计是挺好,可惜都是C++作为源泉来的,.NET Framework里面根本就不推荐用指针,需要用Marshal.Copy把内容Copy到一个byte数组里面,然后处理完了再Copy回去。 (3) UnlockBits():从系统内存解锁此 Bitmap。 b)BitmapData:位图图像的属性 (1) Height获取或设置 Bitmap 对象的像素高度。有时也称作扫描行数。 (责任编辑:qin) |