两个输出与blockproc

时间:2014-05-27 05:45:52

标签: matlab


我有这个函数来计算3 * 3块的二进制模式的值,结果是用中心像素对8个邻居像素进行阈值处理并返回两个输出:二进制代码的十进制值,如果它是&#相同的十进制值39; s制服或59如果不是。

function [out1,out2] = lbpblock(im)
%... implementation details
out1 = decimal ;
out2 = uniform;
end

问题在于尝试像这样使用blockproc

result = blockproc(im,[3 3],@lbpblock);

结果数组只有两个维度(例如85 * 85)并且只有第一个输出。

当我尝试

[res1 res2] = blockproc(im,[3 3],@lbpblock); 

我得到"错误使用==> blockproc输出参数太多"。
我试图改变功能签名

function out = lbpblock(im)
%... implementation details
out = [decimal, uniform];
end

结果数组只是两个维度,但现在(85 * 170)第一个输出存储在奇数列中,第二个输出存储在偶数列中。
是否有任何技巧可以让blockproc将结果存储在85 * 85 * 2数组中?

1 个答案:

答案 0 :(得分:0)

您可以通过在第三维中连接来实现NxNx2数组作为输出。

示例:

im = magic(10);
r = blockproc(im, [3, 3], @func);

function r = func(im)
r1 = mean(im.data(:));
r2 = std(im.data(:));
r = cat(3, r1, r2);
end

重要的一行是cat(3, output1, output2)