频域的锐化

第1关:理想_高通滤波

#include "BMP.h"

IplImage* Ideal_HighPassFilter(IplImage* im)
{
    
    

	int i,j;
    IplImage *Ideal_HighPass = cvCreateImage(cvGetSize(im),IPL_DEPTH_8U,1);//˫ͨµÀ
    cvZero(Ideal_HighPass);      //Çå¿ÕÕâ¸öͼÏñµÄÄÚÈÝ

    //******************ÀíÏë¸ßͨÂ˲¨Æ÷******************//
	//Ä£°åÀàÐÍÊÇ8λÎÞ·ûºÅÊý£¬Òò´ËPPTÖÐ1Ôڴ˶ÔÓ¦µÄÊÇ255£¬Ð轫0-1À©Õ¹µ½0-255Ö®¼ä
    for(i=0;i<im->height;i++)
	{
    
    
	  for(j=0;j<im->width;j++)
	  {
    
    
          int x,y;
		  double D,D0;
		  x=i-im->height/2;
  		  y=j-im->width/2;
		  D=sqrt(pow(x,2)+pow(y,2)); 
	      D0=40; 
		  if(D>=D0)
		  {
    
    
			  /********* Begin *********/
            Ideal_HighPass->imageData[i*im->width+j] = 255;


			  /********* End *********/
		  }
	  }
	}
    return Ideal_HighPass;
} 

第2关:巴特沃斯高通滤波

#include "BMP.h"

IplImage* ButterWorth_HighPassFilter(IplImage* im)
{
    
    

	int i,j;
    IplImage *ButterWorth_HighPass = cvCreateImage(cvGetSize(im),IPL_DEPTH_8U,1);
    cvZero(ButterWorth_HighPass);      //Çå¿ÕÕâ¸öͼÏñµÄÄÚÈÝ

    //******************°ÍÌØÎÖ˹¸ßͨÂ˲¨Æ÷******************//
	//Ä£°åÀàÐÍÊÇ8λÎÞ·ûºÅÊý£¬Òò´ËPPTÖÐ1Ôڴ˶ÔÓ¦µÄÊÇ255£¬Ð轫0-1À©Õ¹µ½0-255Ö®¼ä
    for(i=0;i<im->height;i++)
	{
    
    
	  for(j=0;j<im->width;j++)
	  {
    
    
          int x,y,n;
		  double D,D0;
		  x=i-im->height/2;
  		  y=j-im->width/2;
		  D=sqrt(pow(x,2)+pow(y,2)); 
	      D0=40;
          n=2;
		/********* Begin *********/
        ButterWorth_HighPass->imageData[i*im->width+j] = 255/(1+pow(D0/D,2*n));



		/********* End *********/
	  }
	}

    return ButterWorth_HighPass;

} 

**
第3关:高斯高通滤波**

#include "BMP.h"

IplImage* Gauss_HighPassFilter(IplImage* im)
{
    
    

	int i,j;
    IplImage *Gauss_HighPass = cvCreateImage(cvGetSize(im),IPL_DEPTH_8U,1);
    cvZero(Gauss_HighPass);      //Çå¿ÕÕâ¸öͼÏñµÄÄÚÈÝ

    //******************¸ß˹¸ßͨÂ˲¨Æ÷******************//
	//Ä£°åÀàÐÍÊÇ8λÎÞ·ûºÅÊý£¬Òò´ËPPTÖÐ1Ôڴ˶ÔÓ¦µÄÊÇ255£¬Ð轫0-1À©Õ¹µ½0-255Ö®¼ä
    for(i=0;i<im->height;i++)
	{
    
    
	  for(j=0;j<im->width;j++)
	  {
    
    
          int x,y,n;
		  double D,D0;
		  x=i-im->height/2;
  		  y=j-im->width/2;
		  D=sqrt(pow(x,2)+pow(y,2)); 
	      D0=40;
          n=2;
		  /********* Begin *********/
          Gauss_HighPass->imageData[i*im->width+j] = 255*(1-exp(-0.5*pow(D,2)/pow(D0,2)));


		  /********* End *********/
	  }
	}
    return Gauss_HighPass;

} ```




猜你喜欢

转载自blog.csdn.net/weixin_44196785/article/details/115442599
今日推荐