2015-02-06 3 views
0

я пошел аппликате двусторонний фильтр в residuel изображения (Residel изображения = изображения origianle-изображения с weavlet преобразования) errer являетсядвусторонний фильтр residuel изображения

Ошибка при помощи bfilter2 (строка 35) Входное изображение A должна быть матрицей с двойной точностью размера NxMx1 или NxMx3 на закрытом интервале [0,1].

я пытался 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 в матрице становится betwen [0,1], но ошибка все тот же NB: двусторонний фильтр TAHT я использую B = bfilter2 (A, W, SIGMA) выполняет двустороннюю двустороннюю фильтрацию для оттенков серого или цветного изображения A. A должна быть матрицей с двойной точностью размера NxMx1 или NxMx3 (то есть, грасивными или цветными изображениями соответственно) с нормализованными значениями в интервале [0,1]. Полуразмер окна гауссова двустороннего фильтра определяется W. Стандартные отклонения двустороннего фильтра задаются SIGMA, где стандартное отклонение по пространственной области задается SIGMA (1) и стандартное отклонение по шкале интенсивности по SIGMA (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 (i.e ~isfloat(A), min(A(:)) < 0, ...) в ваших данных и посмотреть, какие из них станут 1 и выдает ошибку.

+0

Я проверил ваше предложение, и ошибка была «interval [0,1]. '], Так как я могу нормализовать свое значение, я использовал этот код, но я не знаю, почему это неправильно f = rand (256,256) normf = max (f) - min (f); % это вектор normf = repmat (normf, [length (f) 1]); % это делает его матрицей % того же размера, что и A normalizedf = f./normf; –

+0

Вы забываете вычесть min (f) из f перед делением. Thats ваша проблема @ هاجرجمعة –

+0

благодарит много :) Я делаю это, это работает, но я не знаю, правильно ли был преципикл, можете ли вы дать мне свое мнение, еще раз спасибо @ander biguri, f = rand (256,256) normf = max (f) - min (f); % это вектор normf = repmat (normf, [length (f) 1]); j = repmat (min (f), [length (f) 1]); k = f-j; normalizedff = k./normf; –

Смежные вопросы