?? 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 + -