在matlab中打印存储在单元格数组中的图像

时间:2013-09-23 19:43:16

标签: arrays matlab image-processing

背景

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

问题。

现在我将所有图像存储在我的2D单元格数组中,我想将它们全部打印在一个图中。

我一直在浏览网页,但我没有看到任何有用的东西。如果有人能指出我正确的方向或提供一个例子,那将是非常有用的。

干杯

2 个答案:

答案 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,[]); 

输出:

enter image description here