-
Notifications
You must be signed in to change notification settings - Fork 0
/
mf_margin.m
115 lines (89 loc) · 1.87 KB
/
mf_margin.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
%==========================================================================
% Remove/reset the margin of the figure
%
% input :
% fin
% fou
%
% output :
%
% Siqi Li, SMAST
% 2022-01-19
%
% Updates:
%
%==========================================================================
function mf_margin(fin, fout, varargin)
read_varargin2(varargin, {'All', 'Horizontal', 'Vertical'});
All_flag = All;
Horizontal_flag = Horizontal;
Vertical_flag = Vertical;
varargin = read_varargin(varargin, {'All'}, {1});
varargin = read_varargin(varargin, {'Horizontal'}, {1});
varargin = read_varargin(varargin, {'Vertical'}, {1});
varargin = read_varargin(varargin, {'Left'}, {1});
varargin = read_varargin(varargin, {'Right'}, {1});
varargin = read_varargin(varargin, {'Bottom'}, {1});
varargin = read_varargin(varargin, {'Top'}, {1});
if All_flag
Left = All;
Right = All;
Bottom = All;
Top = All;
end
if Horizontal_flag
Left = Horizontal;
Right = Horizontal;
end
if Vertical_flag
Bottom = Vertical;
Top = Vertical;
end
RGB = imread(fin);
RGB_sum = sum(RGB, 3);
[nx, ny, ~] = size(RGB);
y = all(RGB_sum==255*3, 1);
x = all(RGB_sum==255*3, 2);
%
y1 = 1;
for i = 1 : ny
if y(i)
y1 = y1 + 1;
else
break
end
end
%
y2 = ny;
for i = ny : -1 : 1
if y(i)
y2 = y2 - 1;
else
break
end
end
%
x1 = 1;
for i = 1 : nx
if x(i)
x1 = x1 + 1;
else
break
end
end
%
x2 = nx;
for i = nx : -1 : 1
if x(i)
x2 = x2 - 1;
else
break
end
end
RGB2 = RGB(x1:x2, y1:y2,:);
[nx2, ny2, ~] = size(RGB2);
RGB3 = ones(nx2+Top+Bottom, ny2+Left+Right, 3) * 255;
RGB3 = uint8(RGB3);
[nx3, ny3, ~] = size(RGB3);
RGB3(Top+1:nx3-Bottom, Left+1:ny3-Right, :) = RGB2;
imwrite(RGB3, fout);