我使用SURF在Matlab中实现图像拼接。问题是
outputView = imref2d(size(img1)*2);
Ir = imwarp(img2,tform,'OutputView',outputView);
它产生
我想要这样的东西
如果我改变
outputView = imref2d(size(img1)*2);
到
outputView = imref2d(size(img1));
matlab裁剪第二张图像,使其在转换后可以适合第一张图像尺寸。
答案 0 :(得分:2)
请注意,当您相对于目标平面扭曲图像时,此新平面中的许多像素等于0.一个非常基本的算法是简单地对图像进行阈值处理,以便您找到大于0的值然后找到包含非零像素的最大边界框...然后裁剪:
[rows,cols] = find(Ir(:,:,1) > 0);
topLeftRow = min(rows);
topLeftCol = min(cols);
bottomRightRow = max(rows);
bottomRightCol = max(cols);
Ir_crop = Ir(topLeftRow:bottomRightRow, topLeftCol:bottomRightCol, :);