[問題] 改善這隻龜速的 image filtering 程式

看板R_Language作者 (Neisseria)時間10年前 (2015/11/15 09:52), 6年前編輯推噓1(1013)
留言14則, 2人參與, 最新討論串1/1
[問題類型]: 效能諮詢(我想讓R 跑更快) [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: image filtering 是指透過某些處理,對影像産生某種效果, 例如:銳利化、模糊化、突起 (emboss) 等 實際處理時,會以一個 convolution kernel 對圖像上的每一個像素逐一處理 例如:一個 3x3 的 matrix,和 3x3 個像素的色彩值分別相乘 再將結果指定到另一個圖檔相對應的點 可以參考 http://apple.co/1OLL8kt 有圖解比較清楚 我想用 R 練習 image filtering,但只會用龜速的 for loop, 希望大大們能提供優雅快速的解法。 [程式範例]: https://pastebin.com/Pfsfr8QF [環境敘述]: > 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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.180.193.91 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1447552366.A.C66.html

11/15 16:37, , 1F
你要不要解釋一下你的程式
11/15 16:37, 1F

11/15 16:38, , 2F
除非是你那個領域的人,不然沒人懂image filtering
11/15 16:38, 2F

11/15 16:40, , 3F
題外話,通常建議這個都用MATLAB比較快啦
11/15 16:40, 3F

11/15 16:40, , 4F
matlab有blkproc
11/15 16:40, 4F

11/15 17:10, , 5F
而且你要取平均的話,你在corner/edge 個數都非9個
11/15 17:10, 5F

11/15 17:10, , 6F
這樣結果是有問題的= =
11/15 17:10, 6F

11/15 19:06, , 7F
http://pastebin.com/UpNKKZBj 大概做了一下
11/15 19:06, 7F
感謝大大耐心回答 要看懂大大的程式,我還得翻許多 R 模組的手冊才行 大大的程式我不敢拿來用,老師一問下來不會解釋 冏rz 其實我不是主修影像處理,這是我們系所的一份小作業的其中一題 我那時想說用比較 naive 的作法 如果老師沒在用 R,至少知道我在用 for loop 土炮 image filtering 邊界如何處理,我再問我的老師好了,之後有機會再上來更新 ※ 編輯: Neisseria (175.180.193.91), 11/15/2015 20:05:50

11/15 20:26, , 8F
反正我只是平移加一加而已...
11/15 20:26, 8F

11/15 20:26, , 9F
我沒有想到矩陣平移比較快的方法就用dplyr去做了
11/15 20:26, 9F

11/15 21:21, , 10F
其實我是說解釋程式而已啦XD 不過謝謝你解釋那麼清
11/15 21:21, 10F

11/15 21:21, , 11F
11/15 21:21, 11F

11/15 21:21, , 12F
你如果要做這樣的處理的話 其實有imager可以用
11/15 21:21, 12F

11/15 23:20, , 13F
自己寫,R 的效能一定不好。可以google看看相關套件看看
11/15 23:20, 13F

11/15 23:20, , 14F
如:ripa
11/15 23:20, 14F
※ 編輯: Neisseria (111.250.58.187), 12/24/2018 18:37:12
文章代碼(AID): #1MH-Lknc (R_Language)
文章代碼(AID): #1MH-Lknc (R_Language)