关于ics lab8 performance中的smooth

其实smooth比rotate水很多。


首先看一下avg的定义,发现是二层循环,最大遍历3*3最小遍历2*2的元素,用二层循环未免太不高效了。我们的任务就是把他展开。


展开时要注意边界,四个角的元素周围四个取平均,四条边上的要六个取平均,中间的元素才是九个取平均,我的建议是先算角再算边最后算中间。


运算的时候要直接按照线性结构访问矩阵,如果外层循环变量是i,内层是j,那么它实际的下标就应该是i*dim+j。其实为了避免反复运算那个乘法,大家可以新定义个变量每次递增dim。


设当前的下标为k的话,那么它周围的元素下标如下图:



posted @ 2013-11-03 14:14  绝不原创的飞龙  阅读(10)  评论(0编辑  收藏  举报  来源