2

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

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

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

谢谢!

4

1 回答 1

1

你能用customf不同的方式写作吗?与其为每个像素(, )处理整个图像,不如只给它一个计算补丁中心像素的 LBP 所需的局部补丁?mn

例如,如果customf需要查看k远离m,的像素 -/+ 来计算 ,处n的响应,那么您可能有dmn

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以便获得Dimage.

于 2013-02-19T09:27:50.077 回答