我正在努力使用Android模糊Bitmaps.
我已经看到很多关于使用简单内核的信息
0 0 0 5 0 0 0
0 5 18 32 18 5 0
0 18 64 100 64 18 0
5 32 100 100 100 32 5
0 18 64 100 64 18 0
0 5 18 32 18 5 0
0 0 0 5 0 0 0
Run Code Online (Sandbox Code Playgroud)
我的问题是我真的不确定如何以有效的方式将其与我的Bitmap相乘.
我应该通过每个像素和
image.getPixel(x, y)
Run Code Online (Sandbox Code Playgroud)
同时将这些值存储到一个新数组(所以我不必一遍又一遍地获取这些值),然后遍历数组,并为每个值加上周围的值乘以内核中的相应字段除以1068 (在上述内核的情况下(=所有条目总结))?
有没有更好的方法来做到这一点?边界有一个简单的解决方案吗?
或者在我错过的Android SDK中是否有可用的东西?
目前我正在试图理解由凯文Beason(smallpt:开发的光线追踪http://www.kevinbeason.com/smallpt/),如果我理解正确的代码,他随机选择将反射或折射的光线(如表面既反射又折射.
第71-73行:
return obj.e + f.mult(depth>2 ? (erand48(Xi)<P ? // Russian roulette
radiance(reflRay,depth,Xi)*RP:radiance(Ray(x,tdir),depth,Xi)*TP) :
radiance(reflRay,depth,Xi)*Re+radiance(Ray(x,tdir),depth,Xi)*Tr);
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释只投射一条光线而不是两条光线的缺点吗?我从来没有听说过这种技术,我很好奇这种权衡是什么,因为它会导致巨大的复杂性降低.