Skip to content

Commit 9b44a1d

Browse files
committed
add ImportImageSeries.m
1 parent 0316c77 commit 9b44a1d

File tree

3 files changed

+126
-13
lines changed

3 files changed

+126
-13
lines changed

ImageM/+imagem/+actions/+file/ImportImageFromBinaryFile.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
%% Methods
3434
methods
3535
function run(obj, frame) %#ok<INUSL>
36-
disp('% Open new table ');
36+
disp('% Open image from raw file');
3737

3838
% get handle to parent GUI
3939
gui = frame.Gui;
@@ -44,7 +44,7 @@ function run(obj, frame) %#ok<INUSL>
4444
'*.raw,' 'Raw Files (*.raw)'; ...
4545
'*.vol,' 'Vol Files (*.vol)'; ...
4646
'*.*', 'All Files (*.*)'}, ...
47-
'Choose a data table file to open:');
47+
'Choose binary data file:');
4848

4949
if isequal(fileName,0) || isequal(pathName,0)
5050
return;
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
classdef ImportImageSeries < imagem.gui.Action
2+
% One-line description here, please.
3+
%
4+
% Class ImportImageSeries
5+
%
6+
% Example
7+
% ImportImageSeries
8+
%
9+
% See also
10+
%
11+
12+
% ------
13+
% Author: David Legland
14+
15+
% Created: 2020-12-28, using Matlab 9.8.0.1323502 (R2020a)
16+
% Copyright 2020 INRAE - BIA-BIBS.
17+
18+
19+
%% Properties
20+
properties
21+
end % end properties
22+
23+
24+
%% Constructor
25+
methods
26+
function obj = ImportImageSeries(varargin)
27+
% Constructor for ImportImageSeries class.
28+
29+
end
30+
31+
end % end constructors
32+
33+
34+
%% Methods
35+
methods
36+
function run(obj, frame) %#ok<INUSL>
37+
disp('% Open Image sequence ');
38+
39+
% get handle to parent GUI
40+
gui = frame.Gui;
41+
42+
[fileName, pathName] = uigetfile( ...
43+
{'*.raw;*.bin;*.tif;*.vol', 'All Binary Files (*.raw, *.bin, *.tif, *.vol)'; ...
44+
'*.tif,' 'Tif Files (*.tif)'; ...
45+
'*.raw,' 'Raw Files (*.raw)'; ...
46+
'*.vol,' 'Vol Files (*.vol)'; ...
47+
'*.*', 'All Files (*.*)'}, ...
48+
'Choose an image from sequence:');
49+
50+
if isequal(fileName,0) || isequal(pathName,0)
51+
return;
52+
end
53+
54+
% default pattern
55+
[~, ~, ext] = fileparts(fileName);
56+
pattern = ['*' ext];
57+
fileList = dir(fullfile(pathName, pattern));
58+
nFiles = length(fileList);
59+
60+
% creates a new dialog, and populates it with some fields
61+
gd = imagem.gui.GenericDialog('Import Image Series');
62+
addMessage(gd, 'Base Name: ');
63+
addMessage(gd, fileName);
64+
addTextField(gd, 'File Name Pattern: ', pattern);
65+
addNumericField(gd, 'Number of images: ', nFiles);
66+
addNumericField(gd, 'Starting index: ', 1);
67+
68+
% displays the dialog, and waits for user
69+
showDialog(gd);
70+
% check if ok or cancel was clicked
71+
if wasCanceled(gd)
72+
return;
73+
end
74+
75+
% parse the user inputs
76+
pattern = getNextString(gd);
77+
nImages = getNextNumber(gd);
78+
index0 = getNextNumber(gd);
79+
80+
% read first image
81+
fileList = dir(fullfile(pathName, pattern));
82+
img0 = Image.read(fullfile(pathName, fileList(index0).name));
83+
84+
% allocte memory for full series
85+
sizeX = size(img0, 1);
86+
sizeY = size(img0, 2);
87+
img = Image.create([sizeX sizeY nImages], class(img0.Data));
88+
img.Data(:,:,1,:) = img0.Data;
89+
90+
% read the remaining images
91+
fileList = dir(fullfile(pathName, pattern));
92+
for i = 1:nImages
93+
index = index0 + i - 1;
94+
img_i = Image.read(fullfile(pathName, fileList(index).name));
95+
img.Data(:,:,i,:) = img_i.Data;
96+
end
97+
98+
img.Name = pattern;
99+
100+
% add image to application, and create new display
101+
[frame, doc] = createImageFrame(gui, img);
102+
103+
% add history
104+
string = sprintf('%s = Image.importSequence;\n', doc.Tag);
105+
106+
addToHistory(frame, string);
107+
end
108+
end % end methods
109+
110+
end % end classdef
111+

ImageM/+imagem/+gui/FrameMenuBuilder.m

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -75,23 +75,25 @@ function buildImageFrameMenu(obj, hf)
7575

7676
fileMenu = addMenu(obj, hf, 'Files');
7777

78-
addMenuItem(obj, fileMenu, CreateImage(), 'New Image...', 'Accelerator', 'N');
79-
addMenuItem(obj, fileMenu, OpenImage(), 'Open Image...', 'Accelerator', 'O');
80-
addMenuItem(obj, fileMenu, ImportImageFromBinaryFile(), 'Import from binary file...');
78+
addMenuItem(obj, fileMenu, CreateImage(), 'New Image...', 'Accelerator', 'N');
79+
addMenuItem(obj, fileMenu, OpenImage(), 'Open Image...', 'Accelerator', 'O');
80+
importMenu = addMenu(obj, fileMenu, 'Import');
81+
addMenuItem(obj, importMenu, ImportImageFromBinaryFile(), 'Import from binary file...');
82+
addMenuItem(obj, importMenu, ImportImageSeries(), 'Import Image Series...');
83+
addMenuItem(obj, importMenu, ImportImageFromWorkspace(), 'Import From Workspace...');
8184

8285
demoMenu = addMenu(obj, fileMenu, 'Open Demo', 'Separator', 'on');
8386
addMenuItem(obj, demoMenu, OpenDemoImage('cameraman.tif'), 'Cameraman (grayscale)');
84-
addMenuItem(obj, demoMenu, OpenDemoImage('rice.png'), 'Rice (grayscale)');
85-
addMenuItem(obj, demoMenu, OpenDemoImage('coins.png'), 'Coins (grayscale)');
86-
addMenuItem(obj, demoMenu, OpenDemoImage('peppers.png'), 'Peppers (RGB)');
87-
addMenuItem(obj, demoMenu, OpenDemoImage('mri.tif'), 'MRI Head (3D)');
88-
addMenuItem(obj, demoMenu, OpenDemoImage('xylophone.mp4'), 'Xylophone (movie)');
89-
addMenuItem(obj, demoMenu, OpenDemoImage('circles.png'), 'Circles (binary)');
90-
addMenuItem(obj, demoMenu, OpenDemoImage('text.png'), 'Text (binary)');
87+
addMenuItem(obj, demoMenu, OpenDemoImage('rice.png'), 'Rice (grayscale)');
88+
addMenuItem(obj, demoMenu, OpenDemoImage('coins.png'), 'Coins (grayscale)');
89+
addMenuItem(obj, demoMenu, OpenDemoImage('peppers.png'), 'Peppers (RGB)');
90+
addMenuItem(obj, demoMenu, OpenDemoImage('mri.tif'), 'MRI Head (3D)');
91+
addMenuItem(obj, demoMenu, OpenDemoImage('xylophone.mp4'), 'Xylophone (movie)');
92+
addMenuItem(obj, demoMenu, OpenDemoImage('circles.png'), 'Circles (binary)');
93+
addMenuItem(obj, demoMenu, OpenDemoImage('text.png'), 'Text (binary)');
9194
addMenuItem(obj, demoMenu, OpenDemoTable('fisherIris.txt'), 'Fisher Iris (Table)', 'Separator', 'on');
9295
addMenuItem(obj, fileMenu, OpenTable(), 'Open Table...');
9396

94-
addMenuItem(obj, fileMenu, ImportImageFromWorkspace(), 'Import From Workspace...');
9597

9698
addMenuItem(obj, fileMenu, SaveImage(), 'Save As...', ...
9799
'Separator', 'on', 'Accelerator', 'S');

0 commit comments

Comments
 (0)