median_33.c

来自「闻亭DM642的培训全部资料与大家共享」· C语言 代码 · 共 43 行

C
43
字号
/*============================================================================*/
/*            2006.02 for DSP training lab
/*============================================================================*/
void median_3x3(unsigned char * in_data, int cols, unsigned char * out_data)
{
    unsigned char   * line0, * line1, *line2;
    int i,j,k;
    line0 = in_data;
    line1 = line0 + cols;
    line2 = line1 + cols;
   
    for (i = 0; i <(cols-2); i++)
    {
         unsigned char temp[9],temp1;
         //将需要排序的9个数存在temp中
         temp[0] = *line0+i;
         temp[1] = *(line0+i+1);
         temp[2] = *(line0+i+2);
         temp[3] = *line1+i;
         temp[4] = *(line1+i+1);
         temp[5] = *(line1+i+2);
         temp[6] = *line2+i;
         temp[7] = *(line2+i+1);
         temp[8] = *(line2+i+2);
         
         //开始排序,冒泡法,找到第五个最大值
         for (k=0;k<5;k++)
         {
         	for (j=0;j<(8-k);j++)
         	{
         		if (temp[j]>temp[j+1])
         			{
         				temp1=temp[j];
         				temp[j]=temp[j+1];
         				temp[j+1]=temp1;
         			}
         	}
         }
         *out_data++ = temp[4];
     }
}

⌨️ 快捷键说明

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