gpt4 book ai didi

matlab - blockproc 的两个输出

转载 作者:行者123 更新时间:2023-12-01 15:21:25 31 4
gpt4 key购买 nike


我有这个函数来计算一个 3*3 block 的二进制模式的值,结果是用中心像素对 8 个相邻像素进行阈值处理并返回两个输出:二进制代码的十进制值,如果它是统一的则相同的十进制值如果不是,则为 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 数组中吗??

最佳答案

您可以通过在三维中串联来实现 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)

关于matlab - blockproc 的两个输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23881860/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com