0

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

4

2 回答 2

0

如果您尝试从 amxnx 3 x nimage 堆栈中减去 amxnx 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))
于 2013-08-27T15:21:06.163 回答
0

imsubtract 从 X 中的对应元素中减去数组 Y 中的每个元素

Z = imsubtract(X,Y)

所以答案是:所有的。

于 2013-08-27T14:40:07.147 回答