MATLAB中的四叉树分解:qtdecomp函数输入

时间:2016-10-31 14:51:50

标签: matlab image-processing quadtree decomposition

有没有人有将输入函数定义为MATLAB中qtdecomp函数的阈值标准的经验?我尝试了以下但是没有用:

MyFunc = @(A,threshold) std2(A)>threshold;
S = qtdecomp(Image,MyFunc,threshold); 

不知何故,对于某些阈值,只有四叉树最左边的四分之一被分成新的部分。这可能是qtdecomp代码本身的错误,还是我的函数输入有问题?

有关详细信息,请参阅附图。无论我选择什么门槛,我都会得到这个:

enter image description here

1 个答案:

答案 0 :(得分:2)

问题是图像作为m x m x k数组传递给您的匿名函数,表示分解为k块的图像。该函数必须返回长度为k的向量,但std2仅查看第一个块并返回标量。我仍然试图想出一个矢量化的方法,但是现在这里是一个独立函数的简单循环:

function v = Std2Func(A, threshold)
   s = size(A,3);
   v = zeros(1,s);

   for k = 1:s
      v(k) = std2(A(:,:,k))>threshold;
   end   
end

迭代输入数组的k平面,将std2应用于每个2d平面并将结果放入输出向量。然后你只需使用新函数的句柄调用qtdecomp

S = qtdecomp(Image,@Std2Func,threshold);