最值滤波

1.概述

    图像增强就是采用某些技术把质量低的图像进行计算机处理,有选择的加强或者抑制图像中的某些信息,改善图像质量,提高人或机器对图像的分析与判别能力。

     图像的增强处理方法一共有两种,分别是空间域方法和频域方法,空间域方法主要是运用空间滤波对图像增强进行处理,所谓滤波,就是过滤掉图像中的一些成分,对数字图像的直接滤波就是空间滤波(相对于频率域滤波),最大值最小值滤波就是其中之一,空间滤波就是在一个淋雨里,对该邻域包围的的像素进行操作,空间滤波器又叫模板,类似于矩阵,大小有3*3模板,5*5模板,9*9模板等。

 1.1 最值滤波 

   最大最小值滤波是一种比较保守的图像处理手段,与中值滤波类似,首先要排序周围像素和中心像素值,然后将中心像素值与最小和最大像素值比较,如果比最小值小,则替换中心像素为最小值,如果中心像素比最大值大,则替换中心像素为最大值。一个Kernel矩阵为3X3的最大最小值滤波如下

 最值滤波

2 调试

2.1 matlab调试结果及代码

最大值滤波可以去除图像中的暗斑,同时也会使亮斑增大;最小值滤波可以去除图像中的亮斑,同时也会增大暗斑。如下图所示:

 

MATLAB 进行最小值滤波:

 

最值滤波

MATLAB 进行最大值滤波:

最值滤波

MATLAB代码

 I=imread('D:\Administrator\My Pictures\lenagray.bmp');                      

J1=imnoise(I,'salt & pepper',0.02);         %椒盐噪声图像

J2=imnoise(I,'gaussian',0.02);               %高斯噪声图像

subplot(2,2,1),imshow(J1);                    

subplot(2,2,2),imshow(J2);                    

I1=ordfilt2(J1,9,ones(3,3))                   %椒盐噪声图像最大值滤波

I2=ordfilt2(J2,9,ones(3,3))                   %高斯噪声图像最大值滤波

              

% I1=ordfilt2(J1,1,ones(3,3))                 %椒盐噪声图像最小值滤波

% I2=ordfilt2(J2,1,ones(3,3))                 %高斯噪声图像最小值滤波

 

 

subplot(2,2,3),imshow(I1);                 

subplot(2,2,4),imshow(I2);                              

2.2 ccs调试结果及代码

2.2.1 中值滤波

测试结果:

椒盐噪声图像滤波:

 

最值滤波

高斯图像滤波:

最值滤波

CCS代码:

   同时进行最小值和最大值的滤波程序:

 

#include

 

#define IMAGEWIDTH  256

#define IMAGEHEIGHT 256

#define Uint8  unsigned char

 

void ReadImage(char *cFileName);

void bmpDataPart(FILE* fpbmp);

void ConservativeFilter();

 

unsigned char grey[IMAGEHEIGHT][IMAGEWIDTH];

 

void main()

{

 

 

  

   ReadImage("D:\\Administrator\\My Pictures\\Lena1.bmp");

   ConservativeFilter();

 

 

   while (1);                                                

}                                         

 

 

void ReadImage(char *cFileName)

{

 

 

        FILE *fp;

 

        if ( fp=fopen(cFileName,"rb" ) )

        {

          

                 bmpDataPart(fp);

                             

 

                fclose(fp);

        }

}

 

void bmpDataPart(FILE* fpbmp)

{

  int i, j=0;

  unsigned char* pix=NULL;

  fseek(fpbmp, 55L, SEEK_SET);

 

  pix=(unsigned char*)malloc(256);

 

  for(j=0;j

   {

    

        fread(pix, 1, 256, fpbmp);

     for(i=0;i

        {

           

          grey[IMAGEHEIGHT-1-j][i]  = pix[i];

 

        }

 

    }

}

 

void ConservativeFilter()

{

 

 int i=0,j=0;

 int wheight=1,wwidth=1;                   //窗口大小(2*wheight+1) * (2*wwidth+1)

 int k=0,l=0;

 Uint8 maxpix=0,minpix=0;

 

 for(i=0;i

   {

 

     for(j=0;j

        {

          

            if((i>wheight-1) && (iwwidth-1) && (j

                       

                      {

             

               maxpix=minpix=grey[i-wheight][j-wwidth];

 

                        for(k=i-wheight;k<=i+wheight;k++)

                         for(l=j-wwidth;l<=j+wwidth;l++)

                          {

                               if((k!=i)&&(l!=j))

                                {

 

                                   if(maxpix

                                      maxpix = grey[k][l];

                                   if(minpix>grey[k][l])

                                      minpix = grey[k][l];

 

                    }

                 }

 

                            if(maxpix

                                  grey[i][j] = maxpix;

                            if(minpix>grey[i][j])

                                  grey[i][j] = minpix;

 

                         

                      }

 

 

        }

 

    }

 

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值