Show centimeter marks over the image
authorLukáš Jiřiště <jiriste@icpf.cas.cz>
Tue, 17 Dec 2024 08:28:51 +0000 (09:28 +0100)
committerLukáš Jiřiště <jiriste@icpf.cas.cz>
Tue, 17 Dec 2024 08:28:51 +0000 (09:28 +0100)
This is done to better judge the quality of the fit.

create_meter.m
functions/get_meter.m

index daa3fbaf4353cc6b1e24201e14a387ab3545c7b0..a107654120c2b6f0830baab81c22fabb7e79b644 100644 (file)
@@ -13,9 +13,18 @@ files = struct('name', cell(1, numel(filenames)), 'folder', cell(1,...
 [files.name] = deal(filenames{:});
 [files.folder] = deal(last_path);
 [minfig, maxfig, meanfig] = get_aggregate_images(files);
-meter = get_meter(maxfig, mask);
+[meter, inverse] = get_meter(maxfig, mask, 2);
 figure();
 imshow(meanfig);
+pic_size = size(meanfig, 1, 2);
+marks_meters = (0:0.01:5);
+marks_pixels = inverse(marks_meters);
+for i = 1:numel(marks_pixels)
+       line_x = marks_pixels(i);
+       if (0 < line_x && line_x < pic_size(2))
+               line([line_x line_x], [0 pic_size(1)], 'Color', 'red')
+       end
+end
 [meter_file_name, meter_path] = uiputfile([path '/*.mtr'], 'Save your meter as...');
 if (meter_file_name ~= 0)
        save_meter([meter_path '/' meter_file_name], meter)
index e6beebff549739e5190d197a577116f5df81c912..2ce75dbb412d0183c2cf03968b49f3d758fdf0ec 100644 (file)
@@ -1,4 +1,4 @@
-function meter = get_meter(fig, mask, order)
+function [meter, inverse] = get_meter(fig, mask, order)
        if nargin < 3
                order = 1;
        end
@@ -8,6 +8,8 @@ function meter = get_meter(fig, mask, order)
        mark_indeces = get_mark_indeces(intensity);
        coefs = polyfit(mark_indeces, 1:-0.1:1-(numel(mark_indeces)-1)*0.1, order);
        meter = @(pix) polyval(coefs, pix);
+       coefs_inverse = polyfit(1:-0.1:1-(numel(mark_indeces)-1)*0.1, mark_indeces, order);
+       inverse = @(meters) polyval(coefs_inverse, meters);
        %{
        meter(mark_indeces)
        figure