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