2013-08-27 63 views
0

我有一堆從相機拍攝的tif圖像和一張.tif圖像的背景。我想從堆棧的每個圖像中減去背景。如果我使用imsubtract函數會發生什麼?它是從每幅圖像中減去背景,還是隻減去堆疊中的第一幅圖像?對不起,如果這是一個愚蠢的問題,我無法在任何地方找到答案。 感謝您的回答。所有這些:從matlab中的tif堆棧減去背景

回答

0

imsubtract在X

Z = imsubtract(X,Y) 

所以答案是減去列Y eachelement從相應的元件。

0

如果試圖減去amxnx 3(RGB)從amxnx 3×nimage棧背景,在這個例子中,您可能會遇到的問題:

stack= uint8(round(rand(10,10,3,4)*255)); % <- stack is (10 x 10 x 3) x 4 
bkrd = uint8(round(rand(10,10,3)*255)); % <- background is (10 x 10 x 3) 

imsubtract(stack,bkrd) 

輸出:

??? Function imlincomb expected its array input arguments (A1, A2, ...) to be the same size. 

Error in ==> imlincomb at 85 
Z = imlincombc(images, scalars, output_class); 

Error in ==> imsubtract at 47 
    Z = imlincomb(1.0, X, -1.0, Y); 

你可以如果您的圖像不是太大(否則在單個圖像上循環可能會更好),請使用repmat而不是:

stack_corr = imsubtract(stack,repmat(bkrd,[1,1,1,size(stack,4)])); 

figure 
subplot(121) 
image(stack(:,:,:,3)) 

subplot(122) 
image(stack_corr(:,:,:,3))