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