2015-02-06 2 views
0

난 (weavlet 변환하여 residel 이미지 = 화상 origianle 화상) errer가 bfilter2를 사용양자 필터

오류 (라인 35) 입력 화상 인 residuel 이미지의 양측 필터 applicate 갔다 A는 닫힌 간격 [0,1]에서 크기 NxMx1 또는 NxMx3 크기의 배정 밀도 행렬이어야합니다.

난 내 데이터 normalizate하려고 : 타협 될 매트릭스

f = rand(256,256) 
normf = max(f) - min(f);    % this is a vector 
normf = repmat(normf, [length(f) 1]); % this makes it a matrix 
             % of the same size as A 
normalizedf = f./normf; 

valuue [0,1] 여전히 에러 동일한 NB : 제가 사용 taht를 양측 필터 B = bfilter2 (A, W, SIGMA)는 그레이 스케일 또는 컬러 이미지 A에 대해 2D 양방향 필터링을 수행합니다. A는 크기 NxMx1 또는 NxMx3의 배정 밀도 행렬이어야합니다 (예 : 각각 그레이 스케일 또는 컬러 이미지). 닫힌 간격 [0,1]. 가우시안 양측 필터 윈도우의 절반 크기는 W로 정의된다. 양측 필터의 표준 편차는 SIGMA에 의해 주어지며, 여기서 공간 - 도메인 표준 편차는 SIGMA (1)로 주어지고 강도 - 도메인 표준 편차가 주어진다 시그마 (2). NB : 내 이미지의 크기는 < 256 * 256 번>

답변

0

당신이 많은 코드를 보여 그나마으로 무슨 일이 벌어 알고 어렵다,하지만 당신은 bwfilter2에 가면 당신은 코드의 다음 조각을 볼 수 있습니다

if ~isfloat(A) || ~sum([1,3] == size(A,3)) || ... 
     min(A(:)) < 0 || max(A(:)) > 1 
    error(['Input image A must be a double precision ',... 
      'matrix of size NxMx1 or NxMx3 on the closed ',... 
      'interval [0,1].']);  
end 

여기서 오류가 발생합니다. 귀하의 데이터에서 if의 각 조건 (예 : ~isfloat(A), min(A(:)) < 0, ...)을 테스트하고 어떤 것이 1이되어 오류가 발생하는지 확인하는 것이 좋습니다.

+0

나는 당신의 제안을 테스트했으며 오류는 '간격 [0,1].'] 그래서 어떻게 내 값을 정규화 할 수 있었는지,이 코드를 사용했지만 왜 잘못되었는지 모르겠다. f = rand (256,256) normf = max (f) - min (f); % this is a vector normf = repmat (normf, [길이 (f) 1]); % 이것은 행렬을 과 동일하게하고 과 같은 크기로 만듭니다. normalizedf = f./normf; –

+0

나누기 전에 f에서 min (f)를 빼는 것을 잊어 버리고 있습니다. Thats your problem @ هاجرجمعة –

+0

고맙습니다. :)이 작업을 수행합니다.하지만 작동합니까?하지만 preincipe가 맞는지 잘 모릅니다. 다시 한 번 감사드립니다. @ander biguri, f = rand (256,256) normf = max (f) - min (f); % this is a vector normf = repmat (normf, [길이 (f) 1]); j = repmat (min (f), [length (f) 1]); k = f-j; normalizedff = k./normf; –