数字图像处理-图像复原

目的:学习图像复原技术的原理和编程实现。

要求:能够编程实现对图像进行空间域滤波复原处理。

内容

基础部分:编程实现窗口大小分别为3×3和5×5的中值滤波器,并对一幅图像添加上不同程度的椒盐噪声后进行滤波,对实验结果进行分析讨论。

拔高部分:要求滤波器窗口的大小可以改变,编写一个中值滤波器函数TestMedFilter(I, [n, n ])实现上述功能。

(注意:禁止使用medfilt2函数,可以使用padarray函数)

1) 算法或流程图

  1. 自定义一个中值滤波器函数TestMedFilter,并为其定义两个自变量m,n 其中m为。添加椒盐噪声的指数,n为中值滤波器的阶数。
    1. 导入原始图片,并将其打印出来。
    2. 为原始图片添加椒盐噪声,并将其打印出来。
    3. 转变添加椒盐噪声后的图像的数据类型为double。
    4. 利用滤波器的阶数计算图片中值滤波开始与结束的行列数,并读取图像大小。
    5. 利用双重for循环开始滤波窗口的选取。
    6. 将滤波窗口中的多个数值。放置于二维数组中,将二维数组转化为一维数组,利用函数median 求出数组中间值。
    7. 将数组中间值,赋给所对应窗口中间位置。
    8. 8.转换数据类型为uint8,并打印处理后的头像。
    9. 在命令行窗口输入:TestMedFilter(0.05,3);
    10. function[A,G]=TestMedFilter(m,n);
      clc;
      A=imread('cameraman.tif');
      figure,imshow(A);
      B=imnoise(A,'salt & pepper',m);
      figure,imshow(B);
      I=double(B);
      a=(n-1)/2;
      [M,N]=size(A);
      for i=(1+a):(M-a)
            for j=(1+a):(N-a)
                C=I((i-a):(i+a),(j-a):(j+a));
                D=C(:);
                E=median(D);
                F(i,j)=E;
            end
      end
      G=uint8(F);
      figure,imshow(G);
      

数字图像处理-图像复原_第1张图片 

 

图1:处理之前的标准图像 

 数字图像处理-图像复原_第2张图片

图2:加入椒盐噪声之后的图形 

 数字图像处理-图像复原_第3张图片

 图3:中值滤波后的图像

通过本次实验,编程实现窗口大小分别为3×3和5×5的中值滤波器,并对一幅图像添加上不同程度的椒盐噪声后进行滤波,掌握基本的图象增强方法,观察图象增强的效果,发现窗口越大,图片越模糊。

你可能感兴趣的:(图像处理)