Matlab执行函数每个单元矩阵,矩阵和单元格位置作为参数

时间:2013-02-19 08:50:05

标签: performance matlab matrix

我需要在一组~400幅图像中对每个图像的每个像素应用一个函数。我写的函数(称为customf)需要3个参数:矩阵,以及矩阵中单元格的位置(mn)。需要像素的位置以便计算需要周围像素的值的LBP(局部二进制模式)。 customf(matrix, m, n)返回一个整数d,以便0 < d < 256,我希望将d的每个值存储在与我的图像大小相同的矩阵中。

鉴于该集非常大,我希望我的代码尽可能高效,但我不明白如何以这种方式使用cellfunarrayfun。< / p>

还是更好的解决方案? (使用嵌套的for可能效率低下?)

谢谢!

1 个答案:

答案 0 :(得分:1)

你能用不同的方式写customf吗?而不是为每个像素(mn)处理整个图像,为什么不给它只需要本地补丁用于计算贴片中心像素的LBP?

例如,如果customf需要查看像素 - / k远离mn来计算d的响应m 1}},n,那么你可能有

k = 5;
localF = @( patch ) customf( patch, k+1, k+1 ); % assuming patch is of size (2k+1)x(2k+1)
% apply LBP to an image
D = nlfilter( image, [2*k+1 2*k+1], localF );

请注意nlfilter零填充image,以获得与D大小相同的image