[问题] 改善这只龟速的 image filtering 程式

楼主: Neisseria (Neisseria)   2015-11-15 09:52:43
[问题类型]:
效能咨询(我想让R 跑更快)
[软件熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
image filtering 是指透过某些处理,对影像产生某种效果,
例如:锐利化、模糊化、突起 (emboss) 等
实际处理时,会以一个 convolution kernel 对图像上的每一个像素逐一处理
例如:一个 3x3 的 matrix,和 3x3 个像素的色彩值分别相乘
再将结果指定到另一个图档相对应的点
可以参考 http://apple.co/1OLL8kt 有图解比较清楚
我想用 R 练习 image filtering,但只会用龟速的 for loop,
希望大大们能提供优雅快速的解法。
[程式范例]:
https://pastebin.com/9bzJZVVZ
[环境叙述]:
> sessionInfo()
R version 3.2.2 (2015-08-14)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Debian GNU/Linux 8 (jessie)
locale:
[1] LC_CTYPE=zh_TW.UTF-8 LC_NUMERIC=C
LC_TIME=zh_TW.UTF-8
[4] LC_COLLATE=zh_TW.UTF-8 LC_MONETARY=zh_TW.UTF-8
LC_MESSAGES=zh_TW.UTF-8
[7] LC_PAPER=zh_TW.UTF-8 LC_NAME=C
LC_ADDRESS=C
[10] LC_TELEPHONE=C LC_MEASUREMENT=zh_TW.UTF-8
LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] png_0.1-7
loaded via a namespace (and not attached):
[1] tools_3.2.2
[关键字]:
image filtering
作者: celestialgod (天)   2015-11-15 16:37:00
你要不要解释一下你的程式除非是你那个领域的人,不然没人懂image filtering题外话,通常建议这个都用MATLAB比较快啦matlab有blkproc而且你要取平均的话,你在corner/edge 个数都非9个这样结果是有问题的= =http://pastebin.com/UpNKKZBj 大概做了一下反正我只是平移加一加而已...我没有想到矩阵平移比较快的方法就用dplyr去做了其实我是说解释程式而已啦XD 不过谢谢你解释那么清楚你如果要做这样的处理的话 其实有imager可以用
作者: Wush978 (拒看低质媒体)   2015-11-15 23:20:00
自己写,R 的效能一定不好。可以google看看相关套件看看如:ripa

Links booklink

Contact Us: admin [ a t ] ucptt.com