Advertisement

数字图像处理-图像复原

阅读量:

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

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

内容

①基础部分:编程实现窗口大小分别为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.
复制代码
              1. function[A,G]=TestMedFilter(m,n);

        
              2. clc;
        
              3. A=imread('cameraman.tif');
        
              4. figure,imshow(A);
        
              5. B=imnoise(A,'salt & pepper',m);
        
              6. figure,imshow(B);
        
              7. I=double(B);
        
              8. a=(n-1)/2;
        
              9. [M,N]=size(A);
        
              10. for i=(1+a):(M-a)
        
              11.       for j=(1+a):(N-a)
        
              12.           C=I((i-a):(i+a),(j-a):(j+a));
        
              13.           D=C(:);
        
              14.           E=median(D);
        
              15.           F(i,j)=E;
        
              16.       end
        
              17. end
        
              18. G=uint8(F);
        
              19. figure,imshow(G);
    

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

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

图3:中值滤波后的图像

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

全部评论 (0)

还没有任何评论哟~