Отрисовка нескольких последовательностей кадров из tiff-файлов с выбранным размером

Я анализирую некоторые экспериментальные данные в виде мультикадров .tiff. В этих файлах tiff мне нужно визуализировать и сравнить некоторые определенные последовательности кадров. Я хочу создать фигуру, содержащую кадры, которые я выбрал из файлов, которые я выбрал. Список файлов и список индексов кадров генерируются с помощью пользовательского интерфейса, который вызывает функцию построения графика при заполнении параметров.

Проблема: каково наилучшее решение для построения с оптимальным размером, НО сохраняя квадратные изображения (как оригинал), выбранные кадры? Проще, как выбрать положение и размер каждого кадра, который я рисую на рисунке?

Я пробовал с подзаголовком: он работает, но мне не удается контролировать размер изображения.

pos=0;
for j = 1:length(file_list)
    for i = 1:length(index_list)
         pos=pos+1;
         subplot(size(file_list,1),length(index_list),pos)
         a =imagesc(imread(file_list{j,:},index_list(i))); 

я тоже пробовал

for j = 1:length(file_list)
    for i = 1:length(index_list)
         a =imagesc(imread(file_list{j,:},index_list(i))); 
         set(gca,'Units','Pixels', 'Position', [10+100*i 10+100*j 100 100]);

Но похоже, что я не могу установить это индивидуально, не перезаписывая последнюю модификацию.

Наконец, я подумал об использовании «монтажа», но то, как я сохраняю изображения в списке, похоже, не подходит.

    frm_list=zeros(1,length(FL)*length(index_list));
for j = 1:length(FL)
    for i = 1:length(index_list)
        a =(imread(FL{j,:},index_list(i)));
        frm_list=[frm_list a];
    end
end

montage(frm_list,'Size', [length(FL) length(index_list)]); 

Спасибо, Джей Си.


person Julien Corbo    schedule 18.06.2012    source источник


Ответы (1)


Вы можете использовать axis image, чтобы сохранить соотношение сторон исходного изображения.

subplot('Position', [left bottom width height]) позволяет указать положение изображения относительно окна рисунка.

Если вы хотите использовать команду, отличную от imagesc, вы можете масштабировать диапазон данных изображения перед рисованием, а затем использовать colormap, чтобы применить к изображению ложные цвета.

person rwong    schedule 18.06.2012
comment
Спасибо @rwong. Используя его просто так: scrsz = get(0,'ScreenSize'); plt=figure(); set(plt,'Position',scrsz); for j = 1:length(FL) for i = 1:length(index_list) subplot('Position', [10*i+50*i 10*j+50*j 50 50]) imagesc(imread(FL{j,:},index_list(i))); Возвращает пустую фигуру, а с помощью команды subplot, как я писал в предыдущем посте, дайте мне правильную фигуру (но с автоматическим размером, который не соответствует моим потребностям). Я не могу понять, почему. Он должен добавить изображение в соответствующее место в зависимости от того, сколько раз использовался цикл. - person Julien Corbo; 19.06.2012
comment
Ну извините за еле читаемый код в предыдущем посте, не знаю как сделать лучше в окне добавления комментария. axis square дал хороший результат, но не позволяет мне выбирать пространство между двумя строками в подзаголовке. Еще раз спасибо, я разберусь с этим квадратным решением оси. - person Julien Corbo; 19.06.2012