📄 median.c
字号:
/*****************************************************************
** 函数名: MedianFilerOnePoint
** 输 入: InImagebuf, Row, Col, Length
** InImagebuf---输入待中值率波的显示区指针。
** Row--- 行偏移。
** Col--- 列偏移。
** Length--- 显示区的行长度。
** 输 出: OutImagebuf
** OutImagebuf---输出中值率波后的显示区指针。
** 函数返回值: 无。
** 功能描述: 单点的中值率波程序。取周围8点灰度和的平均决定中点灰度
** 全局变量: 无。
** 调用模块: 无。
** 作 者: wdm
** 日 期: 2003-11-7
** 修 改:
** 日 期:
** 版 本 v1.0
****************************************************************/
void MedianFilerOnePoint( InImagebuf, OutImagebuf, Row, Col, Length)
unsigned char * InImagebuf;
unsigned char * OutImagebuf;
unsigned int Row;
unsigned int Col;
unsigned int Length;
{
unsigned int i = Col - 1;
unsigned int j = (Row - 1) * Length;
unsigned char k;
unsigned char temp[9];
temp[0] = (unsigned int)InImagebuf[i + j];
temp[1] = (unsigned int)InImagebuf[i + j + 1];
temp[2] = (unsigned int)InImagebuf[i + j + 2];
j += Length;
temp[3] = (unsigned int)InImagebuf[i + j];
temp[4] = (unsigned int)InImagebuf[i + j + 1];
temp[5] = (unsigned int)InImagebuf[i + j + 2];
j += Length;
temp[6] = (unsigned int)InImagebuf[i + j];
temp[7] = (unsigned int)InImagebuf[i + j + 1];
temp[8] = (unsigned int)InImagebuf[i + j + 2];
for(i = 0;i<8;i++)
{
for(j=i+1;j<9;j++)
{
if(temp[i]>temp[j])
{
k = temp[i] ;
temp[i] = temp[j];
temp[j] = k;
}
}
}
OutImagebuf[Length * Row + Col] = temp[4];
return;
}
/*****************************************************************
** 函数名: MedianFiler
** 输 入: InImagebuf, Height, Width
** InImagebuf---输入待中值率波的显示区指针。
** Height--- 显示区的行长度。
** Width--- 显示区的列长度。
** 输 出: OutImagebuf
** OutImagebuf---输出中值率波后的显示区指针。
** 函数返回值: 无。
** 功能描述: 整幅图进行中值率波程序。取周围8点灰度和的平均决定中点灰度。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -