背景
我在matlab中编写SIFT。我已经计算了高斯差分并将它们存储在2D单元阵列中。第2列中的图像是第1列的一半,依此类推。
问题。
现在我将所有图像存储在我的2D单元格数组中,我想将它们全部打印在一个图中。
我一直在浏览网页,但我没有看到任何有用的东西。如果有人能指出我正确的方向或提供一个例子,那将是非常有用的。
干杯
答案 0 :(得分:0)
让我们生成随机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()
。
答案 1 :(得分:0)
如果你想要一个非常简单的解决方案,那么只需制作合成图像并用高斯金字塔中的图像填充区域。我已经为我的案例提供了一个示例代码,但需要根据您的情况进行调整。
代码:
% 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,[]);
输出: