题目:
图像平滑器 是大小为 3 x 3 的过滤器,用于对图像的每个单元格平滑处理,平滑处理后单元格的值为该单元格的平均灰度。
每个单元格的 平均灰度 定义为:该单元格自身及其周围的 8 个单元格的平均值,结果需向下取整。(即,需要计算蓝色平滑器中 9 个单元格的平均值)。
如果一个单元格周围存在单元格缺失的情况,则计算平均灰度时不考虑缺失的单元格(即,需要计算红色平滑器中 4 个单元格的平均值)。
算法:
func imageSmoother(img [][]int) [][]int {
dicts := [][]int{[]int{1,0},[]int{-1,0},[]int{0,1},[]int{0,-1},[]int{-1,-1},[]int{-1,1},[]int{1,-1},[]int{1,1}}
m, n := len(img), len(img[0])
ans := make([][]int, m)
for i := range img {
ans[i] = make([]int, n)
for j := range img[i] {
sum := img[i][j]
count := 1
for k := range dicts {
x := dicts[k][0] + i
y := dicts[k][1] + j
if 0 <= x && x < m && 0 <= y && y < n {
sum = sum + img[x][y]
count ++
}
}
ans[i][j] = sum / count
}
}
return ans
}