[問題] 改善這隻龜速的 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