1

背景:

我在matlab中编程SIFT。我已经计算了高斯差并将它们存储在二维单元阵列中。第 2 列中的图像是第 1 列大小的一半,依此类推。

问题。

现在我将所有图像都存储在我的二维单元阵列中,我想将它们全部打印在一个图中。

我一直在浏览网页,但我没有看到任何可以帮助的东西。如果有人能指出我正确的方向或提供一个例子,那将不胜感激。

干杯

4

2 回答 2

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()通话后使用。

于 2013-09-23T20:25:17.060 回答
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,[]); 

输出:

在此处输入图像描述

于 2013-09-23T20:54:25.117 回答