第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;
} ```