📄 median.cpp
字号:
void medfilter1(float* data,int len,int num)
{
/*data输入数据
*len数据长度
*num滤波器长度
*/
float*temp;
temp=new float[len];
float med(float*,int);
if(len<num)return;
float*data1;
data1=new float[len+num/2*2];
for(int i=0;i<len+num/2*2;i++){
if (i<num/2)
*(data1+i)=0;
else if(i>=num/2&&i<len+num/2)
*(data1+i)=*(data+i-num/2);
else
*(data1+i)=0;
}
for(i=num/2;i<len+num/2;i++)
{
int k=0;
for(int j=i-num/2;j<=i+num/2;j++,k++)
*(temp+k)=*(data1+j);
*(data+i-num/2)=med(temp,num);
}
}float med(float*arry,int len)
{
for(int i=0;i<len-1;i++){
for(int j=0;j<len-i-1;j++){
if (*(arry+j)>*(arry+j+1)) {
int temp=*(arry+j);
*(arry+j)=*(arry+j+1);
*(arry+j+1)=temp;
}
}
}
return arry[len/2];
}
void medfilter2(float* data,int x,int y,int num)
{
/*data输入数据
*x数据宽度
*y数据长度
*num滤波器长度
*/
float med(float*,int);
float *data1;
data1=new float[x*y];
for(int i=0;i<x*y;i++){
*(data1+i)=*(data+i);
}
float*temp;
temp=new float[num*num];
float med(float*,int);
int m;
for(i=num/2;i<x-num/2;i++){
for(int j=num/2;j<y-num/2;j++){
m=0;
for(int k=i-num/2;k<=i+num/2;k++)
for(int l=j-num/2;l<=j+num/2;l++)
{
*(temp+m)=*(data1+k*y+l);
m=m+1;
}
data[i*y+j]=med(temp,num*num);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -