在matlab中减去tiff堆栈的背景

时间:2013-08-27 14:36:46

标签: image matlab background tiff stack

我有一堆从相机拍摄的tif图像和一个背景的.tif图像。我想从堆栈的每个图像中减去背景。如果我使用imsubtract功能会发生什么?它是从每个图像中减去背景,还是只从堆栈中的第一个图像中减去背景?对不起,如果这是一个愚蠢的问题,我无法在任何地方找到答案。 谢谢你的回答。

2 个答案:

答案 0 :(得分:0)

imsubtract从X

中的相应元素中减去数组Y中的每个元素
Z = imsubtract(X,Y)

所以答案是:所有这些。

答案 1 :(得分:0)

如果您尝试从m x n x 3 x nimage堆栈中减去m x n x 3(RGB)背景,则可能会遇到问题,如下例所示:

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))