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));
}