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

📄 medianfilter.c

📁 在CCS环境下的一个视频采集源代码
💻 C
字号:
/************************************************************************************************
*  Function   :the is a inter face of image process,user only can change mem from 54 bytes
*  Desinger    : wujiancong
*  Date        : 04.05.T07
*  Verision    : 5.0
*  Parameter   : FILE *fptr; pointer to source file pointer
*************************************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>


static unsigned char mem[10*720*588];
static unsigned char buffer[10*720*588];
static int srcwidth=720;
static int srcheight=588;

/**********************************************************************************
*
*
*                                 Get image height and widht
*
*
*************************************************************************************/
unsigned char GetMedianNum(unsigned char *bArray,int FilterLen)
{
	int i,j;
	unsigned char bTemp;
	for(j=0;j<FilterLen-1;j++)
	{
		for(i=0;i<FilterLen-j-1;i++)
		{
			if(bArray[i]>bArray[i+1])
			{
				bTemp=bArray[i];
				bArray[i]=bArray[i+1];
				bArray[i+1]=bTemp;
			}
		}
	}
	if((FilterLen&1)>0)   bTemp=bArray[(FilterLen+1)/2];
	else  bTemp=(bArray[(FilterLen+1)/2]+bArray[FilterLen/2])/2;
	return bTemp;
}

void MedianFilter(int width,int height)
{
	int i,j,k,l;
	unsigned char aValue0[9];
	long widthbytes=width;
	int FilterH=3,FilterW=3;
	int FilterMX=1,FilterMY=1;

	for(i=0;i<height;i++)
		for(j=0;j<widthbytes;j++)
			buffer[i*widthbytes+j]=mem[i*widthbytes+j];

	for(i=FilterMY;i<height-FilterMY;i++)
	{
		for(j=FilterMX;j<width-FilterMX;j++)
			{
				for(k=0;k<FilterH;k++)
				{
					for(l=0;l<FilterW;l++)
					{
						aValue0[k*FilterW+l]=buffer[widthbytes*(i-FilterMY+k)+(j-FilterMX+l)];
					}
				}
				mem[i*widthbytes+j]=GetMedianNum(aValue0,FilterH*FilterW);
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -