毕业论文

打赏
当前位置: 毕业论文 > 计算机论文 >

C#彩色图像的伪色空间处理程序设计(14)

时间:2017-01-03 11:32来源:毕业论文
g = pixel1.G + Math.Abs(pixel1.G - pixel2.G) / 4; b = pixel1.B + Math.Abs(pixel1.B - pixel2.B) / 4; bitmap.SetPixel(x - 1, y - 1, Color.FromArgb(r, g, b)); } } 图 4.2锐化处理后的图像 图像的雾


g = pixel1.G + Math.Abs(pixel1.G - pixel2.G) / 4;
b = pixel1.B + Math.Abs(pixel1.B - pixel2.B) / 4;
bitmap.SetPixel(x - 1, y - 1, Color.FromArgb(r, g, b));
}
}
 
图 4.2锐化处理后的图像
图像的雾化处理
图像雾化效果的处理过程是以当前像素点为基础的,选取一定大小的像素块,在像素块中,随机选择某个像素点的颜色值,把它赋给当前像素点。这样,图像就带有水雾般的效果。像素块选取的越大,效果越明显。
for(int x=1;x<width-1;x++){
for(int y=1;y<height-1;y++){
int k=MyRandom.Next(111111);
int dx = x + k % 30;
int dy = y + k % 30;
if (dx >= width) dx = width - 1;
if (dy >= height) dy = height - 1;
pixel = mybitmap.GetPixel(dx, dy);
bitmap.SetPixel(x, y, pixel);
}
}
 
图 4.3雾化处理后的图像
图像的柔化处理
柔化处理是将图像中的原像素点颜色值用其相邻的n*n个像素点的颜色平均值来代替,目的是减少图像中颜色的变化程度。经过这种处理后,如果当前像素点和周围点的颜色差别不大,取平均值对像素点影响不大;差别较大时,去平均值就会使当前点的颜色和周围点趋于一致,这样就达到了柔化效果。具体实现代码如下:
for (int x = 1; x < width - 1; x++)
for (int y = 1; y < height - 1; y++) {
int r = 0, b = 0, g = 0;
int Index=0;
for (int col = -1; col <= 1; col++)
for (int row = -1; row <= 1; row++) {
pixel = mybitmap.GetPixel(x + row, y + col);
r += pixel.R;
g += pixel.G;
b += pixel.B;
Index++;
}
r /= 9;
g /= 9;
b /= 9;
bitmap.SetPixel(x - 1, y - 1, Color.FromArgb(r, g, b));
 
图 4.4 柔化处理后的图像
图像的取反色
图像的反色处理,可以实现图片的底片化效果。图像的反色效果处理方法是取图像上的每一个像素点的颜色值,然后把该像素点的颜色值取原来值的反色值。
for (int x = 0; x < width; x++)
for (int y = 1; y < height; y++) {
int r, g, b;
pixelOri = OriBitmap.GetPixel(x, y);
r = 255 - pixelOri.R;
g = 255 - pixelOri.G;
b = 255 - pixelOri.B;
bitmap.SetPixel(x, y, Color.FromArgb(r, g, b));
}
 
图 4.5 反色处理后的图像
灰度处理程序设计及实现
如之前所说的那样,灰度处理共有三种处理方法,下面我们具体介绍一下,代码的实现。由于三种处理方法只是对色彩的处理问题有些许的差异,所以,下面将仅列出三种方法的颜色处理的主代码,其他的代码请参见光盘。
加权平均法
curColor = curBitmap.GetPixel(i, j);
ret = (int)(curColor.R * 0.299 + curColor.G * 0.587 + curColor.B * 0.114);
urBitmap.SetPixel(i, j, Color.FromArgb(ret, ret, ret));
 
图 4.6 加权平均法处理结果
平均值法
curColor = curBitmap.GetPixel(i, j);
ret = (int)(curColor.R  + curColor.G + curColor.B)/3;
curBitmap.SetPixel(i, j, Color.FromArgb(ret, ret, ret));
 
图 4.7 平均值法处理结果
最大值法
curColor = curBitmap.GetPixel(i, j);
ret = (int)curColor.G;
curBitmap.SetPixel(i, j, Color.FromArgb(ret, ret, ret));
 
图 4.8 最大值法处理结果
伪彩色处理程序设计及实现
//以下是强度分层法和灰度级——彩色变换法共同需要处理的部分
pColor pc = new pColor();//将pColor.form里的属性赋给pc.
if (pc.ShowDialog() == DialogResult.OK)
{
Rectangle rect = new Rectangle(0, 0, curBitmap.Width, curBitmap.Height);//生成矩形
System.Drawing.Imaging.BitmapData bmpData =
curBitmap.LockBits(rect,System.Drawing.Imaging.ImageLockMode.ReadWrite, curBitmap.PixelFormat); //锁定系统内存中的位图像素 C#彩色图像的伪色空间处理程序设计(14):http://www.youerw.com/jisuanji/lunwen_1742.html
------分隔线----------------------------
推荐内容