?? median.cpp
字號:
void medfilter1(float* data,int len,int num)
{
/*data輸入數(shù)據(jù)
*len數(shù)據(jù)長度
*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輸入數(shù)據(jù)
*x數(shù)據(jù)寬度
*y數(shù)據(jù)長度
*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);
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -