-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdip-Interval.html
229 lines (227 loc) · 16 KB
/
dip-Interval.html
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>dip::Interval class | DIPlib | a library for quantitative image analysis</title>
<link rel="stylesheet" href="m-dip+documentation.compiled.css" />
<link rel="icon" href="DIPlib_logo_32.png" type="image/png" />
<link rel="search" type="application/opensearchdescription+xml" href="opensearch.xml" title="Search DIPlib documentation" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#ffffff" />
</head>
<body>
<header><nav id="navigation">
<div class="m-container">
<div class="m-row">
<span id="m-navbar-brand" class="m-col-t-8 m-col-m-none m-left-m">
<a href="https://diplib.org"><img src="DIPlib_logo.svg" alt="" />DIPlib</a><span class="m-breadcrumb">┃</span><a href="index.html" class="m-thin">a library for quantitative image analysis</a><span class="m-breadcrumb">┃</span><a href="https://github.com/DIPlib/diplib/releases/tag/3.5.2" class="m-thin">version 3.5.2</a> </span>
<div class="m-col-t-4 m-hide-m m-text-right m-nopadr">
<a href="#search" class="m-doc-search-icon" title="Search" onclick="return showSearch()"><svg style="height: 0.9rem;" viewBox="0 0 16 16">
<path id="m-doc-search-icon-path" d="m6 0c-3.31 0-6 2.69-6 6 0 3.31 2.69 6 6 6 1.49 0 2.85-0.541 3.89-1.44-0.0164 0.338 0.147 0.759 0.5 1.15l3.22 3.79c0.552 0.614 1.45 0.665 2 0.115 0.55-0.55 0.499-1.45-0.115-2l-3.79-3.22c-0.392-0.353-0.812-0.515-1.15-0.5 0.895-1.05 1.44-2.41 1.44-3.89 0-3.31-2.69-6-6-6zm0 1.56a4.44 4.44 0 0 1 4.44 4.44 4.44 4.44 0 0 1-4.44 4.44 4.44 4.44 0 0 1-4.44-4.44 4.44 4.44 0 0 1 4.44-4.44z"/>
</svg></a>
<a id="m-navbar-show" href="#navigation" title="Show navigation"></a>
<a id="m-navbar-hide" href="#" title="Hide navigation"></a>
</div>
<div id="m-navbar-collapse" class="m-col-t-12 m-show-m m-col-m-none m-right-m">
<div class="m-row">
<ol class="m-col-t-6 m-col-m-none">
<li><a href="pages.html">Pages</a></li>
<li><a href="modules.html">Modules</a></li>
</ol>
<ol class="m-col-t-6 m-col-m-none" start="3">
<li><a href="classes.html">Classes</a></li>
<li><a href="files.html">Files</a></li>
<li class="m-show-m"><a href="#search" class="m-doc-search-icon" title="Search" onclick="return showSearch()"><svg style="height: 0.9rem;" viewBox="0 0 16 16">
<use href="#m-doc-search-icon-path" />
</svg></a></li>
</ol>
</div>
</div>
</div>
</div>
</nav></header>
<main><article>
<div class="m-container m-container-inflatable">
<div class="m-row">
<div class="m-col-l-10 m-push-l-1">
<h1>
<div class="m-doc-include m-thin m-right-m m-text-right">
<a href="binary.html" class="m-doc">Binary image filters</a> module<br/><span class="m-code m-thin">#include <a href="file--diplib--binary-h.html">"diplib/binary.h"</a></span> </div>
<span class="m-breadcrumb"><a href="dip.html">dip</a>::<wbr/></span>Interval <span class="m-thin">class</span> </h1>
<p>Represents the shape of an interval for inf-generating and sup-generating operators.</p>
<div class="m-block m-default">
<h3>Contents</h3>
<ul>
<li>
Reference
<ul>
<li><a href="#typeless-methods">Constructors, destructors, assignment and conversion operators</a></li>
<li><a href="#function-members">Functions</a></li>
<li><a href="#related">Related</a></li>
</ul>
</li>
</ul>
</div>
<p>An interval is typically expressed as two structuring elements, one marking the foreground
pixels, one marking background pixels. Pixels not marked in either are the “don’t care” pixels.
An interval must always have at least one foreground pixel. If there are no background pixels
in the interval, consider using a plain dilation or erosion instead.</p>
<p>There are two constructors: one accepting two binary structuring elements, and one accepting a single
kernel containing <code>1</code> for foreground, <code>0</code> for background, and any other value for “don’t care”.
The constructors only take their input in the form of images, not as a <a href="dip-StructuringElement.html"><code>dip::StructuringElement</code></a>
or <a href="dip-Kernel.html"><code>dip::Kernel</code></a>. The generic shapes that are easier to generate using those classes are not often
useful in intervals.</p>
<section id="typeless-methods">
<h2>Constructors, destructors, assignment and conversion operators</h2>
<dl class="m-doc">
<dt>
<span class="m-doc-wrap-bumper"><a href="#dip-Interval-Interval-dip-Image-" class="m-doc">Interval</a>(</span><span class="m-doc-wrap"><a href="dip-Image.html" class="m-doc">dip::Image</a> image)</span>
</dt>
<dd>An interval can be constructed with a grey-value image, where <code>1</code> indicates foreground,
<code>0</code> indicates background, and any other value indicates “don’t care” pixels. <a href="#dip-Interval-Interval-dip-Image-">more...</a></dd>
<dt>
<span class="m-doc-wrap-bumper"><a href="#dip-Interval-Interval-dip-Image--dip-Image-" class="m-doc">Interval</a>(</span><span class="m-doc-wrap"><a href="dip-Image.html" class="m-doc">dip::Image</a> hit,
<a href="dip-Image.html" class="m-doc">dip::Image</a> miss)</span>
</dt>
<dd>An interval can be constructed with two binary images, one for the foreground mask
and one for the background mask. <a href="#dip-Interval-Interval-dip-Image--dip-Image-">more...</a></dd>
</dl>
</section>
<section id="function-members">
<h2>Functions</h2>
<dl class="m-doc">
<dt id="dip-Interval-Invert">
<span class="m-doc-wrap-bumper">void <a href="#dip-Interval-Invert" class="m-doc-self">Invert</a>(</span><span class="m-doc-wrap">)</span>
</dt>
<dd>Inverts the interval, swapping foreground and background pixels. Caution using this function, as
the <code>Interval</code> can potentially share data with other intervals.</dd>
<dt id="dip-Interval-Image-C">
<span class="m-doc-wrap-bumper">auto <a href="#dip-Interval-Image-C" class="m-doc-self">Image</a>(</span><span class="m-doc-wrap">) const -> <a href="dip-Image.html" class="m-doc">dip::Image</a> const&</span>
</dt>
<dd>Returns the interval image, a <a href="pixeltypes.html#dip-DT_SFLOAT"><code>dip::DT_SFLOAT</code></a> image with values 0, 1 and NaN (for don’t care).</dd>
<dt id="dip-Interval-HitImage-C">
<span class="m-doc-wrap-bumper">auto <a href="#dip-Interval-HitImage-C" class="m-doc-self">HitImage</a>(</span><span class="m-doc-wrap">) const -> <a href="dip-Image.html" class="m-doc">dip::Image</a></span>
</dt>
<dd>Returns the foreground mask image, a binary image.</dd>
<dt id="dip-Interval-MissImage-C">
<span class="m-doc-wrap-bumper">auto <a href="#dip-Interval-MissImage-C" class="m-doc-self">MissImage</a>(</span><span class="m-doc-wrap">) const -> <a href="dip-Image.html" class="m-doc">dip::Image</a></span>
</dt>
<dd>Returns the background mask image, a binary image.</dd>
<dt id="dip-Interval-Sizes-C">
<span class="m-doc-wrap-bumper">auto <a href="#dip-Interval-Sizes-C" class="m-doc-self">Sizes</a>(</span><span class="m-doc-wrap">) const -> <a href="supporttypes.html#dip-UnsignedArray" class="m-doc">dip::UnsignedArray</a> const&</span>
</dt>
<dd>Returns the sizes of the interval. The output array always has two elements.</dd>
<dt>
<span class="m-doc-wrap-bumper">auto <a href="#dip-Interval-GenerateRotatedVersions-dip-uint--String-CL-C" class="m-doc">GenerateRotatedVersions</a>(</span><span class="m-doc-wrap"><a href="supporttypes.html#dip-uint" class="m-doc">dip::uint</a> rotationAngle = 45,
<a href="supporttypes.html#dip-String" class="m-doc">dip::String</a> const& rotationDirection = S::INTERLEAVED_CLOCKWISE) const -> <a href="dip-Interval.html#dip-IntervalArray" class="m-doc">dip::IntervalArray</a></span>
</dt>
<dd>Returns rotated versions of the interval, applicable to 2D intervals only. <a href="#dip-Interval-GenerateRotatedVersions-dip-uint--String-CL-C">more...</a></dd>
</dl>
</section>
<section id="related">
<h2>Related</h2>
<dl class="m-doc">
<dt id="dip-IntervalArray">
using <a href="#dip-IntervalArray" class="m-doc-self">dip::<wbr />IntervalArray</a> = std::vector<Interval>
</dt>
<dd>An array of intervals.</dd>
<dt id="dip-Invert-IntervalArray-L">
<span class="m-doc-wrap-bumper">void <a href="#dip-Invert-IntervalArray-L" class="m-doc-self">dip::<wbr />Invert</a>(</span><span class="m-doc-wrap"><a href="dip-Interval.html#dip-IntervalArray" class="m-doc">dip::IntervalArray</a>& array)</span>
</dt>
<dd>Inverts the intervals in the array, swapping foreground and background pixels. Works correctly
if intervals in the array share data. However, this function could also affect other intervals not in
the array, if data is shared.</dd>
</dl>
</section>
<section>
<h2>Function documentation</h2>
<section class="m-doc-details" id="dip-Interval-Interval-dip-Image-"><div>
<h3>
<span class="m-doc-wrap-bumper">
</span><span class="m-doc-wrap"><span class="m-doc-wrap-bumper"><a href="#dip-Interval-Interval-dip-Image-" class="m-doc-self">Interval</a>(</span><span class="m-doc-wrap"><a href="dip-Image.html" class="m-doc">dip::Image</a> image)</span></span>
</h3>
<p>An interval can be constructed with a grey-value image, where <code>1</code> indicates foreground,
<code>0</code> indicates background, and any other value indicates “don’t care” pixels.</p>
<p>The image must be odd in size, the origin is in the middle pixel.</p>
<p>Such an image converts implicitly to an <code>Interval</code>.</p>
</div></section>
<section class="m-doc-details" id="dip-Interval-Interval-dip-Image--dip-Image-"><div>
<h3>
<span class="m-doc-wrap-bumper">
</span><span class="m-doc-wrap"><span class="m-doc-wrap-bumper"><a href="#dip-Interval-Interval-dip-Image--dip-Image-" class="m-doc-self">Interval</a>(</span><span class="m-doc-wrap"><a href="dip-Image.html" class="m-doc">dip::Image</a> hit,
<a href="dip-Image.html" class="m-doc">dip::Image</a> miss)</span></span>
</h3>
<p>An interval can be constructed with two binary images, one for the foreground mask
and one for the background mask.</p>
<p>The images must be odd in size, the origin is in the middle pixel.</p>
<p>The two images must be disjoint, meaning that <code>dip::Any( dip::Infimum( hit, miss ))</code> must be false.
An exception will be raised if this is not the case.</p>
</div></section>
<section class="m-doc-details" id="dip-Interval-GenerateRotatedVersions-dip-uint--String-CL-C"><div>
<h3>
<span class="m-doc-wrap-bumper"><a href="dip-Interval.html#dip-IntervalArray" class="m-doc">dip::IntervalArray</a>
</span><span class="m-doc-wrap"><span class="m-doc-wrap-bumper"><a href="#dip-Interval-GenerateRotatedVersions-dip-uint--String-CL-C" class="m-doc-self">GenerateRotatedVersions</a>(</span><span class="m-doc-wrap"><a href="supporttypes.html#dip-uint" class="m-doc">dip::uint</a> rotationAngle = 45,
<a href="supporttypes.html#dip-String" class="m-doc">dip::String</a> const& rotationDirection = S::INTERLEAVED_CLOCKWISE) const</span></span>
</h3>
<p>Returns rotated versions of the interval, applicable to 2D intervals only.</p>
<p><code>rotationAngle</code> can be 45, 90 or 180, the output vector will have 8, 4 or 2 intervals. Some
of the interval images might point at the same data. Rotation angles of 45 degrees are only
possible for square intervals. If the interval is not square, it will be made square by
adding “don’t care” pixels.</p>
<p><code>rotationDirection</code> affects the order of the intervals in the output vector:</p>
<ul>
<li><code>"interleaved clockwise"</code> sorts the angles as follows: 0, 180, 45, 225, 90, 270, 135, 315.</li>
<li><code>"interleaved counter-clockwise"</code> is the same, but goes around the other way.</li>
<li><code>"clockwise"</code> sorts the angles as follows: 0, 45, 90, 135, 180, 225, 270, 315.</li>
<li><code>"counter-clockwise"</code> is the same, but goes around the other way.</li>
</ul>
</div></section>
</section>
</div>
</div>
</div>
</article></main>
<div class="m-doc-search" id="search">
<a href="#!" onclick="return hideSearch()"></a>
<div class="m-container">
<div class="m-row">
<div class="m-col-m-8 m-push-m-2">
<div class="m-doc-search-header m-text m-small">
<div><span class="m-label m-default">Tab</span> / <span class="m-label m-default">T</span> to search, <span class="m-label m-default">Esc</span> to close</div>
<div id="search-symbolcount">…</div>
</div>
<div class="m-doc-search-content">
<form action="https://diplib.org/diplib-docs/#search">
<input type="search" name="q" id="search-input" placeholder="Loading …" disabled="disabled" autofocus="autofocus" autocomplete="off" spellcheck="false" />
</form>
<noscript class="m-text m-danger m-text-center">Unlike everything else in the docs, the search functionality <em>requires</em> JavaScript. Enable it or <a href="https://google.com/search?q=site:diplib.org+">use an external search engine</a>.</noscript>
<div id="search-help" class="m-text m-dim m-text-center">
<p class="m-noindent">Search for symbols, directories, files, pages or modules.
You can omit any prefix from the symbol or file path; adding a <code>:</code> or
<code>/</code> suffix lists all members of given symbol or directory.</p>
<p class="m-noindent">Use <span class="m-label m-dim">↓</span> / <span class="m-label m-dim">↑</span> to navigate through the list,
<span class="m-label m-dim">Enter</span> to go.
<span class="m-label m-dim">Tab</span> autocompletes common prefix.
You can copy a link to the result using <span class="m-label m-dim">⌘</span> <span class="m-label m-dim">L</span>,
or <span class="m-label m-dim">⌘</span> <span class="m-label m-dim">M</span> to copy a Markdown link.</p>
</div>
<div id="search-notfound" class="m-text m-warning m-text-center">Sorry, nothing was found.<br />Maybe try a full-text <a href="#" id="search-external" data-search-engine="https://google.com/search?q=site:diplib.org+{query}">search with external engine</a>?</div>
<ul id="search-results"></ul>
</div>
</div>
</div>
</div>
</div>
<script src="search-v1.js"></script>
<script src="searchdata-v1.js" async="async"></script>
<footer><nav>
<div class="m-container">
<div class="m-row">
<div class="m-col-l-10 m-push-l-1">
<p>DIPlib, a library for quantitative image analysis. Documentation compiled with <a href="https://crisluengo.github.io/doxpp/">dox++</a> and styled with <a href="https://mcss.mosra.cz/">m.css</a>.</p>
</div>
</div>
</div>
</nav></footer>
</body>
</html>