背景:
我在matlab中编程SIFT。我已经计算了高斯差并将它们存储在二维单元阵列中。第 2 列中的图像是第 1 列大小的一半,依此类推。
问题。
现在我将所有图像都存储在我的二维单元阵列中,我想将它们全部打印在一个图中。
我一直在浏览网页,但我没有看到任何可以帮助的东西。如果有人能指出我正确的方向或提供一个例子,那将不胜感激。
干杯
背景:
我在matlab中编程SIFT。我已经计算了高斯差并将它们存储在二维单元阵列中。第 2 列中的图像是第 1 列大小的一半,依此类推。
问题。
现在我将所有图像都存储在我的二维单元阵列中,我想将它们全部打印在一个图中。
我一直在浏览网页,但我没有看到任何可以帮助的东西。如果有人能指出我正确的方向或提供一个例子,那将不胜感激。
干杯
让我们生成随机5x2
元胞数组,其中第一列包含 10x10 图像,第二列包含 5x5 图像:
c = cell(5,2);
for k=1:5
c{k,1} = uint8(255 * rand(10));
c{k,2} = uint8(255 * rand(5));
end
以下代码说明了它们:
figure;
n = size(c, 1);
for k = 1 : n
subplot(n, 2, k * 2 - 1);
image(c{k,1});
subplot(n, 2, k * 2);
image(c{k,2});
end
如果图像上下颠倒,请set(gca,'YDir','normal');
在每次image()
通话后使用。
如果您想要一个非常简单的解决方案,那么只需制作合成图像并用高斯金字塔中的图像填充区域。我在我的案例下面给出了一个示例代码,但需要针对您的案例进行调整。
代码:
% Get total width and height
width_total = 0;
height_total = 0;
for i = 0:3 % Cycle over scales - 4 total
width_total = width_total+size(obj.gaussianpyramid{i+1,1},2);
height_total = height_total+size(obj.gaussianpyramid{i+1,1},1);
end
% Form composite gaussian
compositegaussian = zeros(width_total,height_total);
ind_x = 0;
for i = 0:3 % Cycle over octaves - 4 total
for j = 0:4 % Cycle over scales - 5 total
ind_y = j*size(obj.gaussianpyramid{i+1,j+1},1);
compositegaussian(ind_y+1:ind_y+size(obj.gaussianpyramid{i+1,j+1},1),ind_x+1:ind_x+size(obj.gaussianpyramid{i+1,j+1},2)) = obj.gaussianpyramid{i+1,j+1};
end
ind_x = ind_x + size(obj.gaussianpyramid{i+1,1},2);
end
figure, imshow(compositegaussian,[]);
输出: