Create separate script for meter creation
authorLukáš Jiřiště <jiriste@icpf.cas.cz>
Mon, 14 Oct 2024 10:57:37 +0000 (12:57 +0200)
committerLukáš Jiřiště <jiriste@icpf.cas.cz>
Mon, 14 Oct 2024 12:49:43 +0000 (14:49 +0200)
The script create_meter saves the (polynomial) coefficients with the
writematrix function as *.mtr file. The wanted meter is then loaded
interactively in the main script.
This commit is analogous to the refactoring of mask creation.

Bubliny.m
create_meter.m [new file with mode: 0644]
load_meter.m [new file with mode: 0644]
save_meter.m [new file with mode: 0644]

index 43cbd464195227450b3c03fbe8677a8732c61009..05f300d1cf36a87cf66c434f84e29effc532339b 100755 (executable)
--- a/Bubliny.m
+++ b/Bubliny.m
@@ -34,6 +34,7 @@ ResFile = [res_path, ResFile];
 %}\r
 \r
 mask = load_mask();\r
+meter = load_meter();\r
 \r
 FileType = '*.png';\r
 \r
@@ -57,8 +58,6 @@ for i=1:nSelectedDirectory
 \r
        waitbar((i - 0.5)/nSelectedDirectory, main_wb);\r
 \r
-       meter = get_meter(maxfig, mask);\r
-\r
        [~, calm_level] = min(mean(double(meanfig), Weights = mask));\r
 \r
        wait_bar = waitbar(0, '');\r
diff --git a/create_meter.m b/create_meter.m
new file mode 100644 (file)
index 0000000..f23d0d7
--- /dev/null
@@ -0,0 +1,19 @@
+clear all
+
+last_path = get_last_path();
+[filenames, path] = uigetfile([last_path '/*.mtr'], ...
+       'Select all files for meter creation', 'MultiSelect', 'on');
+update_last_path(path);
+mask = load_mask();
+files = struct('name', cell(1, numel(filenames)), 'folder', cell(1,...
+numel(filenames)));
+[files.name] = deal(filenames{:});
+[files.folder] = deal(path);
+[minfig, maxfig, meanfig] = get_aggregate_images(files);
+meter = get_meter(maxfig, mask);
+figure();
+imshow(meanfig);
+[meter_file_name, meter_path] = uiputfile([path '/*.mtr'], 'Save you mask as...');
+if (mask_file_name ~= 0)
+       save_meter([meter_path '/' meter_file_name], meter)
+end
diff --git a/load_meter.m b/load_meter.m
new file mode 100644 (file)
index 0000000..2edcc0f
--- /dev/null
@@ -0,0 +1,7 @@
+function meter = load_meter()
+       path = get_last_path();
+       [meter_file path] = uigetfile([path '/*.mtr'],...
+               'Select a meter for this batch');
+       coefs = readmatrix([path '/' meter_file], 'FileType', 'text');
+       meter = @(pix)polyval(coefs, pix);
+end
diff --git a/save_meter.m b/save_meter.m
new file mode 100644 (file)
index 0000000..fb649b0
--- /dev/null
@@ -0,0 +1,5 @@
+function save_meter(meter, fullpath)
+       info = functions(meter);
+       coefs = info.workspace{1}.coefs;
+       writematrix(coefs, fullpath, 'FileType', 'text');
+end