前面介紹了如何用頻率濾波的方法進行直方圖平滑,現在嘗試用插值的方法做平滑。
設計思路:
(1)設定步長step
(2)對於直方圖上的某點x,按照如下公式計算它平滑后的值temp
smooth函數的代碼如下:

private int[] smooth(int[] arr, int step) { int start = step - step/2; int end = 256 - step/2 ; double temp = 0; int[] res = new int[256]; for (int i = start; i < end; i++) { temp = 0; for (int j = 0-step/2; j < step/2; j++) { temp += arr[i + j]; } temp /= step; res[i] = (int)temp; } return res; }
平滑處理的步長及效果的關系如下:
當步長增加到30時,已經可以將直方圖變得很順滑了。但是也損失了很多細節。不過這對於之后的求導是有益處的。
在完成直方圖的平滑處理以后,就可以進行求波峰波谷或求導的操作了。
后續見此。