簡體   English   中英

帶blockproc的兩個輸出

[英]Two outputs with blockproc


我有一個函數,該函數計算3 * 3塊的二進制模式的值,該值導致形成以中心像素為閾值的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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM