2015-02-06 102 views
0

我去,便可立即在residuel圖像的雙邊濾波器(Résidel酒店圖像=圖像origianle圖像與weavlet變換) 的errer是(線35) 輸入圖像雙邊濾波器

錯誤使用bfilter2 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執行二維雙邊濾波.A應該是尺寸爲NxMx1或NxMx3(即,分別爲灰度或彩色圖像)的雙精度矩陣,其歸一化值在閉區間[0,1]。高斯雙邊濾波窗口的一半尺寸由W定義。雙邊濾波器的標準偏差由SIGMA給出,其中空間域標準偏差由SIGMA(1)給出,並給出強度域標準偏差由SIGMA(2)提供。 注:我的圖像的大小是< 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

我測試了你的命題,錯誤是'interval [0,1]。']我怎樣才能規範化我的值,我用這個代碼但我不知道爲什麼它錯了f = rand(256,256) normf = max(f) - min(f); %這是一個矢量 normf = repmat(normf,[length(f)1]); %這使其成爲與A 相同大小的矩陣 %normalizedf = f./normf; – 2015-02-06 14:37:36

+0

你忘記在分裂之前從f中減去min(f)。這就是你的問題@هاجرجمعة – 2015-02-06 15:35:39

+0

非常感謝:)我這樣做,它的工作原理,但我不知道如果preincipe是正確的,你可以給我你的意見,再次感謝@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; – 2015-02-06 17:51:49