⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 median.cpp

📁 一个中值滤波程序
💻 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 + -