中值濾波算法
中值濾波可以過濾尖峰脈沖。目的在於我們對於濾波后的數據更感興趣。濾波后的數據保留的原圖像的變化趨勢,同時去除了尖峰脈沖對分析造成的影響。
中值濾波是用中值取代了原來要處理的數據,采樣長度越長,濾波效果越好,但是也會造成原始數據中過多信息的丟失。需要根據實際應用確定。
按照項目要求定義函數類型即可。
輸入參數說明
- int* Array為整數指針。傳入存儲數據的數組地址
- FilterLen 濾波器長度 ,傳入數組元素個數
int Median_filter(int* Array, unsigned char FilterLen)
{
unsigned char i,j;
int temp;
// 用冒泡法對數組進行排序 ,從小到大排序
for (j = 0; j < FilterLen - 1; j++)
{
for(i = 0; i < FilterLen - 1 - j; i++)
{
if(Array[i] > Array[i+1])
{
//數據位置互換
temp = Array[i];
Array[i] = Array[i+1];
Array[i+1] = temp;
}
}
}
//判斷奇偶,返回中值
if((FilterLen & 1) > 0)
{
//數組有奇數個元素,返回中間一個元素
temp = Array[(FilterLen + 1) / 2];
}
else
{
//數組有偶數個元素,返回中間兩個元素的平均值
temp = ( Array[FilterLen / 2] + Array[FilterLen / 2 - 1] ) / 2;
}
return temp;
}
