Как выводить каскадные изображения или укладывать изображения - PullRequest
0 голосов
/ 24 декабря 2018

enter image description here

См. Изображение выше, если имеется 24 изображения, как использовать MATLAB для достижения этого выходного эффекта.Этот вид графика часто появляется в статьях.Я определяю функцию, но есть одна строка кода, которая не может быть реализована.

function h = op(file_path, pad,m,n)
img_path_list = dir(strcat(file_path,'*.jpg'));
num = length(img_path_list);%
% [m,n]=size(image);
fw=n+(num-1)*pad;
fh=m+(num-1)*pad;
h=figure('position',[0,0,fw+pad,fh+pad]);
for j = 1:num
   image_name = img_path_list(j).name;
   image =  imread(strcat(file_path,image_name));
   hold on
   pd=(j-1)*pad;
   rpl=fw-n-pd;
   rpb=fh-m-pd;
%How to specify the location of the output on the image canvas
%  set('Position',[rpl rpb n m]);
%  axes('position',[rpl rpb n m]);
   imshow (image);
end
%  h=gcf;

1 Ответ

0 голосов
/ 24 декабря 2018

Вы можете использовать функции Xdata и Ydata в imshow (), чтобы установить положение оси каждого изображения, чтобы отображать их на одной и той же оси, расположенной друг над другом и смещенной кфиксированные единицы для каждого изображения.

Код, иллюстрирующий процедуру, приведен ниже.

close all
% read the images in metrices
i1 = imread('onion.png');
i2 = imread('cameraman.tif');
i3 = imread('peppers.png');
i4 = imread('moon.tif');
i5 = imread('trees.tif');
i6 = imread('greens.jpg');
% create a cell array of the images
imgs = {i1, i2, i3, i4, i5, i6};

% variable to shift the position of each image
shift = 0;

% looping from 1 to length of the cell arrays
for i = 1:numel(imgs)

% display image, shifting the position to 2 units
% for each image on the same axis
imshow(imgs{i}, 'XData', [1+shift 10+shift], ...
    'YData', [1+shift 10+shift],'InitialMagnification', 400)
% hold on the axis
hold on
% increment the shift value
shift = shift + 2;
end

% set the axis limits
xlim([1 10+shift])
ylim([1 10+shift])
% hide the axis lines
axis off

Пример вывода

enter image description here

...