2016-10-31 8 views
2

MATLAB의 qtdecomp 함수에 대한 임계 값 기준으로 입력 함수를 정의한 경험이 있습니까? 나는 다음과 같은 시도했지만 작동하지 않았다 :MATLAB의 쿼드 트리 분해 : qtdecomp 함수 입력

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

어떻게 든, 어떤 임계 값, 쿼드 트리의 가장 왼쪽 분기 새로운 조각으로 나누어 져 있습니다. 이 코드가 qtdecomp 코드 자체에 오류가 있거나 함수 입력에 문제가 있습니까?

자세한 내용은 첨부 된 이미지를 참조하십시오. 나는 선택에 관계없이 임계 값이 얻을 :

enter image description here

+0

샘플 이미지가 필요합니다. 이는 일부 이미지에 대해 예상되는 동작 일 수 있습니다. 커스텀 함수없이'qtdecomp'을 시도 했습니까? – beaker

답변

2

문제는 이미지가 k 블록으로 분해 이미지를 나타내는 m x m x k 배열로 익명 함수에 전달된다는 점이다. 이 함수는 길이가 k 인 벡터를 반환해야하지만 std2은 첫 번째 블록 만보고 스칼라를 반환합니다. 나는 아직도이에 벡터화 된 접근 방식을 마련하기 위해 노력하고 있지만, 지금 여기에 간단한 독립형 기능 루프입니다 해요 : 각 차원에 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면을 통해이 반복 출력 벡터에 결과를 저장합니다. 그런 다음 새 기능에 대한 핸들을 사용하여 qtdecomp으로 전화하면됩니다.

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