C#彩色图像的伪色空间处理程序设计(15)
时间:2017-01-03 11:32 来源:毕业论文 作者:毕业论文 点击:次
IntPtr ptr = bmpData.Scan0;//获取位图中第一个像素数据地址 int bytes = curBitmap.Width * curBitmap.Height; byte[] grayValues = new byte[bytes]; System.Runtime.InteropServices.Marshal.Copy(ptr, grayValues, 0, bytes); curBitmap.UnlockBits(bmpData);//解锁系统内存中的位图像素 bool method = pc.GetMethod; byte seg = pc.GetSeg; //取用户选择的分层数 byte[] rgbValues = new byte[bytes * 3]; Array.Clear(rgbValues, 0, bytes * 3);//将数组rgbValues中的一系列元素设为0 byte tempB; //以下是强度分层法处理的部分 if (method == false) { for (int i = 0; i < bytes; i++) { byte ser = (byte)(256 / seg); tempB = (byte)(grayValues[i] / ser); rgbValues[i * 3 + 1] = (byte)(tempB * ser); rgbValues[i * 3] = (byte)((seg - 1 - tempB) * ser); rgbValues[i * 3 + 2] = 0; } } 图 4.9 分4层后的处理结果 图 4.10 分8层后的处理结果 图 4.11 分16层后的处理结果 图 4.12 分32层后的处理结果 //灰度级-彩色变换 for (int i = 0; i < bytes; i++) { if (grayValues[i] < 64) { rgbValues[i * 3 + 2] = 0; rgbValues[i * 3 + 1] = (byte)(4 * grayValues[i]); rgbValues[i * 3] = 255; } else if (grayValues[i] < 128) { rgbValues[i * 3 + 2] = 0; rgbValues[i * 3 + 1] = 255; rgbValues[i * 3] = (byte)(-4 * grayValues[i] + 2 * 255); }else if (grayValues[i] < 192) { rgbValues[i * 3 + 2] = (byte)(4 * grayValues[i] - 2 * 255); rgbValues[i * 3 + 1] = 255; rgbValues[i * 3] = 0; }else { rgbValues[i * 3 + 2] = 255; rgbValues[i * 3 + 1] = (byte)(-4 * grayValues[i] + 4 * 255); rgbValues[i * 3] = 0; } curBitmap = new Bitmap (curBitmap.Width,curBitmap.Height,System.Drawing.Imaging.PixelFormat.Format24bppRgb); bmpData = curBitmap.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, curBitmap.PixelFormat); ptr = bmpData.Scan0; System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes * 3); curBitmap.UnlockBits(bmpData); pictureBox1.Image = null; Invalidate(); 图 4.11 灰度级-彩色变换法的处理结果 总结 小结 本次毕业设计,使用的是微软开发的C#软件,它简单、现代、通用,而且面向对象。通过学习,我基本掌握了C#的语法,了解了数字图像和数字图像处理的基本原理和分类,在对灰度处理和伪彩色处理进行深入的了解之后,我掌握了灰度处理和伪彩色处理的基本原理和算法。 对于本文的中心图像处理技术——伪彩色处理,是图像处理中一个重要的分支。它处理的是灰度图像,得到的是彩色图像,但反映的并不是图像本身的色彩;它能够帮助人们更好的观察图像,突出细节。 通过本次毕业设计,我深刻的了解到,无论是复杂还是简单的程序设计,都是基于理论研究的基础上的,就像要学会跑就必须先学会走是一样的。对于伪彩色处理的研究亦是如此,不仅要了解伪彩色处理的基本原理,还要了解图像处理的基本原理和方法;在编写程序时,还要有一个完整的设计思路,这样编写程序的时候,才会有条有序。 展望 随着数字计算机的出现,数字图像处理的历史渐渐地与数字计算机的发展联系了起来,因为计算机可以快速的完成很多我们很难完成的事情,我所研究的伪彩色处理便是其中之一。我所设计的程序,不仅可以对图像进行灰度处理和伪彩色处理,还可以对图像进行缩放、雾化、反色等基本的处理,这就使得软件的使用范围变得更广。但是,在程序的设计中,还有很多不足仍需要改进。同时,通过这次毕业设计,我也认识到自己存在很多的不足之处,我会一点一点的改正,努力的提高自己的水平,使自己在编程上更进一步。 (责任编辑:qin) |