-
Notifications
You must be signed in to change notification settings - Fork 28
/
Copy pathboundingbox.html
214 lines (186 loc) · 13.1 KB
/
boundingbox.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
<!DOCTYPE html>
<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Get the bounding box of an image volume or object containing 3D vertices — boundingbox • nat</title><!-- favicons --><link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="../favicon-32x32.png"><link rel="apple-touch-icon" type="image/png" sizes="180x180" href="../apple-touch-icon.png"><link rel="apple-touch-icon" type="image/png" sizes="120x120" href="../apple-touch-icon-120x120.png"><link rel="apple-touch-icon" type="image/png" sizes="76x76" href="../apple-touch-icon-76x76.png"><link rel="apple-touch-icon" type="image/png" sizes="60x60" href="../apple-touch-icon-60x60.png"><!-- jquery --><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script><!-- Bootstrap --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous"><script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script><!-- bootstrap-toc --><link rel="stylesheet" href="../bootstrap-toc.css"><script src="../bootstrap-toc.js"></script><!-- Font Awesome icons --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous"><!-- clipboard.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script><!-- headroom.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script><!-- pkgdown --><link href="../pkgdown.css" rel="stylesheet"><script src="../pkgdown.js"></script><meta property="og:title" content="Get the bounding box of an image volume or object containing 3D vertices — boundingbox"><meta property="og:description" content="Set the bounding box of an im3d object"><meta property="og:image" content="/logo.svg"><!-- mathjax --><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script><!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]--></head><body data-spy="scroll" data-target="#toc">
<div class="container template-reference-topic">
<header><div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<span class="navbar-brand">
<a class="navbar-link" href="../index.html">nat</a>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="">1.10.4</span>
</span>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav"><li>
<a href="../index.html">
<span class="fa fa-home fa-lg"></span>
</a>
</li>
<li>
<a href="../reference/index.html">Reference</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
Articles
<span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu"><li>
<a href="../articles/neurons-intro.html">Introduction to neurons and neuronlists</a>
</li>
<li>
<a href="../articles/neurons-as-graph.html">Working with individual neurons as graph structures</a>
</li>
<li>
<a href="../articles/plotly.html">3D graphics</a>
</li>
<li>
<a href="../articles/NeuroGeometry.html">NeuroGeometry: Analysing 3D morphology of neurons</a>
</li>
</ul></li>
<li>
<a href="../articles/Installation.html">Installation</a>
</li>
<li>
<a href="../index.html#learn">Learn</a>
</li>
<li>
<a href="../index.html#help">Help</a>
</li>
<li>
<a href="../news/index.html">Changelog</a>
</li>
</ul><ul class="nav navbar-nav navbar-right"><li>
<a href="https://natverse.github.io" class="external-link">natverse</a>
</li>
<li>
<a href="https://github.com/natverse/nat" class="external-link">
<span class="fa fa-github fa-lg"></span>
</a>
</li>
</ul></div><!--/.nav-collapse -->
</div><!--/.container -->
</div><!--/.navbar -->
</header><div class="row">
<div class="col-md-9 contents">
<div class="page-header">
<h1>Get the bounding box of an image volume or object containing 3D vertices</h1>
<small class="dont-index">Source: <a href="https://github.com/natverse/nat/blob/HEAD/R/im3d.R" class="external-link"><code>R/im3d.R</code></a></small>
<div class="hidden name"><code>boundingbox.Rd</code></div>
</div>
<div class="ref-description">
<p>Set the bounding box of an im3d object</p>
</div>
<div id="ref-usage">
<div class="sourceCode"><pre class="sourceCode r"><code><span class="fu">boundingbox</span><span class="op">(</span><span class="va">x</span>, <span class="va">...</span><span class="op">)</span>
<span class="co"># S3 method for im3d</span>
<span class="fu">boundingbox</span><span class="op">(</span><span class="va">x</span>, dims <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/dim.html" class="external-link">dim</a></span><span class="op">(</span><span class="va">x</span><span class="op">)</span>, <span class="va">...</span><span class="op">)</span>
<span class="co"># S3 method for character</span>
<span class="fu">boundingbox</span><span class="op">(</span><span class="va">x</span>, <span class="va">...</span><span class="op">)</span>
<span class="co"># S3 method for default</span>
<span class="fu">boundingbox</span><span class="op">(</span><span class="va">x</span>, na.rm <span class="op">=</span> <span class="cn">FALSE</span>, <span class="va">...</span><span class="op">)</span>
<span class="fu">boundingbox</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="op"><-</span> <span class="va">value</span></code></pre></div>
</div>
<div id="arguments">
<h2>Arguments</h2>
<dl><dt>x</dt>
<dd><p>an <code>im3d</code> object or any object for which
<code><a href="xyzmatrix.html">xyzmatrix</a></code> can extract 3D points (e.g. neurons, surfaces etc),
or, for <code>boundingbox.character</code>, a character vector specifying a file.</p></dd>
<dt>...</dt>
<dd><p>Additional arguments passed to methods, and eventually to
<code><a href="makeboundingbox.html">makeboundingbox</a></code></p></dd>
<dt>dims</dt>
<dd><p>The number of voxels in each dimension when x is a BoundingBox
matrix.</p></dd>
<dt>na.rm</dt>
<dd><p>Whether to ignore NA points (default <code>FALSE</code>)</p></dd>
<dt>value</dt>
<dd><p>The object which will provide the new boundingbox information.
This can be be either an im3d object with a boundingbox or a vector or
matrix defined according to <code>boundingbox.default</code>.</p></dd>
</dl></div>
<div id="value">
<h2>Value</h2>
<p>a <code>matrix</code> with 2 rows and 3 columns with
<code>class='boundingbox'</code> or <em>NULL</em> when missing.</p>
</div>
<div id="details">
<h2>Details</h2>
<p>The bounding box is defined as the position of the voxels at the two
opposite corners of the cuboid encompassing an image, <em>when each voxel
is assumed to have a single position (sometimes thought of as its centre)
<strong>and no physical extent.</strong></em> When written as a vector it should look
like: <code>c(x0,x1,y0,y1,z0,z1)</code>. When written as a matrix it should look
like: <code>rbind(c(x0,y0,z0),c(x1,y1,z1))</code> where x0,y0,z0 is the position
of the origin.</p>
<p>Note that there are two competing definitions for the physical extent of an
image that are discussed e.g.
<a href="http://teem.sourceforge.net/nrrd/format.html" class="external-link">http://teem.sourceforge.net/nrrd/format.html</a>. The definition that
makes most sense depends largely on whether you think of a pixel as a
little square with some defined area (and therefore a voxel as a cube with
some defined volume) <em>or</em> you take the view that you can only define
with certainty the grid points at which image data was acquired. The first
view implies a physical extent which we call the <code>bounds=dim(x) *
c(dx,dy,dz)</code>; the second is defined as <code>BoundingBox=dim(x)-1 *
c(dx,dy,dz)</code> and assumes that the extent of the image is defined by a
cuboid including the sample points at the extreme corner of the grid. Amira
takes this second view and this is the one we favour given our background
in microscopy. If you wish to convert a <code>bounds</code> type definition into
an im3d BoundingBox, you should pass the argument <code>input='bounds'</code>.</p>
<p><code>boundingbox.default</code> is designed to be used on objects that
contain 3D point information. This includes any object for which an
<code><a href="xyzmatrix.html">xyzmatrix</a></code> method is defined including <code>matrix</code> or
<code>data.frame</code> objects describing 3D points as well as specialised
classes such as <code><a href="neuron.html">neuron</a></code>, <code><a href="neuronlist.html">neuronlist</a></code>, <code>rgl</code>
<code><a href="https://dmurdoch.github.io/rgl/dev/reference/mesh3d.html" class="external-link">mesh3d</a></code> objects.</p>
</div>
<div id="see-also">
<h2>See also</h2>
<div class="dont-index"><p><code><a href="makeboundingbox.html">makeboundingbox</a></code>, <code><a href="plot3d.boundingbox.html">plot3d.boundingbox</a></code></p>
<p>Other im3d:
<code><a href="as.im3d.html">as.im3d</a>()</code>,
<code><a href="im3d-coords.html">im3d-coords</a></code>,
<code><a href="im3d-io.html">im3d-io</a></code>,
<code><a href="im3d.html">im3d</a>()</code>,
<code><a href="imexpand.grid.html">imexpand.grid</a>()</code>,
<code><a href="imslice.html">imslice</a>()</code>,
<code><a href="is.im3d.html">is.im3d</a>()</code>,
<code><a href="mask.html">mask</a>()</code>,
<code><a href="origin.html">origin</a>()</code>,
<code><a href="projection.html">projection</a>()</code>,
<code><a href="threshold.html">threshold</a>()</code>,
<code><a href="unmask.html">unmask</a>()</code>,
<code><a href="voxdims.html">voxdims</a>()</code></p></div>
</div>
<div id="ref-examples">
<h2>Examples</h2>
<div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span class="co"># bounding box for a neuron</span></span>
<span class="r-in"><span class="fu">boundingbox</span><span class="op">(</span><span class="va">Cell07PNs</span><span class="op">[[</span><span class="fl">1</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span>
<span class="r-out co"><span class="r-pr">#></span> [,1] [,2] [,3]</span>
<span class="r-out co"><span class="r-pr">#></span> [1,] 186.8660 90.36325 88.20393</span>
<span class="r-out co"><span class="r-pr">#></span> [2,] 289.5364 132.70932 157.29700</span>
<span class="r-out co"><span class="r-pr">#></span> attr(,"class")</span>
<span class="r-out co"><span class="r-pr">#></span> [1] "boundingbox"</span>
</code></pre></div>
</div>
</div>
<div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar">
<nav id="toc" data-toggle="toc" class="sticky-top"><h2 data-toc-skip>Contents</h2>
</nav></div>
</div>
<footer><div class="copyright">
<p></p><p>Developed by Gregory Jefferis, James Manton, Sridhar Jagannathan.</p>
</div>
<div class="pkgdown">
<p></p><p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.0.1.</p>
</div>
</footer></div>
</body></html>