我有一个函数,它计算由阈值化8个相邻像素与中心像素形成的3*3块的二进制模式的值,并返回两个输出:二进制代码的十进制值,如果它是均匀的,则返回相同的十进制值,否则返回59。
问题在于试图像这样使用blockproc函数。
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的数组中?
lbpblock
中只返回一个参数,命名为out
。将其设置为结构体或者单元数组,使得out.first=out1
且out.second=out2
。 - Autonomous使用 blockprocInMemory 时出错,错误代码为80 输出类无效。用户函数 FUN 返回了无效结果。 结果的类是 cell。 结果的类是 struct。 - Hassan Ajk
out1 = decimal; out2 = uniform;
后面写了out.first=out1; out.second=out2
。只返回out
。在主文件中,写入:result = blockproc(im,[3 3],@lbpblock);
。 - Autonomous