【发布时间】:2013-02-19 17:32:39
【问题描述】:
我需要对一组约 400 张图像中每个图像的每个像素应用一个函数。我编写的函数(称为customf)需要3 个参数:矩阵和单元格在矩阵中的位置(m 和n)。需要像素的位置来计算需要周围像素值的 LBP(局部二进制模式)。
customf(matrix, m, n) 返回一个整数 d 以便 0 < d < 256,我想将 d 的每个值存储在与我的图像大小相同的矩阵中。
鉴于集合相当大,我希望我的代码尽可能高效,但我不明白如何以这种方式使用cellfun 或arrayfun。
还是更好的解决方案? (使用嵌套的for 可能效率低下?)
谢谢!
【问题讨论】:
-
函数
customf中需要什么n和m?只是为了识别当前单元格,还是为了计算? -
customf 需要 m 和 n 来计算每个像素的局部二进制模式,这需要相邻像素的值 (164.125.234.242/~prascat/wordpress/wp-content/uploads/2012/10/…)
-
不幸的是,我不知道如何避免 NxM 循环,但是将它移动到 inside 函数应该会有所帮助(避免 NxM 常量函数调用的开销)。您可以重写该函数,使其循环遍历整个图像(或可选地仅将边界指定为参数的小块)并返回计算的模式。
标签: performance matlab matrix