用c语言编程图像均值滤波,中值滤波,prewitt梯度滤波,拉普拉算子

四、实验作业

  1. 利用空间域滤波对图像进行增强处理,要求:
    ● 通过C#控制台应用程序读入一个灰度图像;
    ● 获取灰度图像的像素值,并存入二维数组;
    ● 选择不同的空间域滤波器对二维数组进行卷积运算;
    ● 利用卷积运算后的新图像像素值重新生成图像,并存储图像文件。
    1  由于读取图像和存储图像、对图像变量进行操作,均需要使用Bitmap类,该类需要在解决方案资源管理器添加引用“System.Drawing”,并在Program.cs代码文件中引用命名空间“using System.Drawing;”:

    img

    2  读取灰度图像文件,并存入图像实例(如myImage):
    string filename = "E:\a.jpg"; //换成自己的图像文件地址
    Bitmap myImage = new Bitmap(filename);
    int x = myImage.Width; //图像的宽度,即列数
    int y = myImage.Height; //图像的高度,即行数
    请自行声明二维数组(如pixel[,])用以存放图像像素值。
    3  像元[i,j]处像素值的获取,可使用图像实例的GetPixel()方法:
    //因为是灰度图像,所以每个像素的RGB三个通道值均可作为图像亮度值
    pixels[i, j] = myImage.GetPixel(i, j).R;
    4  要求从控制台读入一个整数,并根据整数值选择相应的滤波器,如果输入的整数不是正确序号,应该给出处理的方法(使用goto跳转语句),可参考:

    img


    5  根据选择的滤波器进行卷积运算,使用的滤波器包括(也可自行设计滤波器):
    均值滤波:

    img


    中值滤波:9个像元按大小排序,求中间位置的像元。

Prewitt梯度:注意两个模版分别卷积计算后的绝对值再求和r

img