ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/doc/man/man1/rmtxop.1
(Generate patch)

Comparing ray/doc/man/man1/rmtxop.1 (file contents):
Revision 1.11 by greg, Tue Sep 5 22:48:04 2017 UTC vs.
Revision 1.27 by greg, Sat Dec 2 00:42:21 2023 UTC

# Line 1 | Line 1
1   .\" RCSid "$Id$"
2 < .TH RMTXOP 1 7/8/97 RADIANCE
2 > .TH RMTXOP 1 5/31/2014 RADIANCE
3   .SH NAME
4   rmtxop - concatenate, add, multiply, divide, transpose, scale, and convert matrices
5   .SH SYNOPSIS
# Line 9 | Line 9 | rmtxop - concatenate, add, multiply, divide, transpose
9   ][
10   .B \-f[afdc]
11   ][
12 < .B \-t
12 > .B "\-C {symbols|file}"
13   ][
14 + .B "\-c ce .."
15 + ][
16   .B "\-s sf .."
17   ][
18 < .B "\-c ce .."
18 > .B \-t
19 > ][
20 > .B "\-rf|\-rb"
21   ]
22   .B m1
23   [
24 < .B "+*/"
24 > .B ".+*/"
25   ]
26   .B ".."
27   .SH DESCRIPTION
# Line 30 | Line 34 | Each file must have a header containing the following
34   NROWS={number of rows}
35   NCOLS={number of columns}
36   NCOMP={number of components}
37 < FORMAT={ascii|float|double|32-bit_rle_rgbe|32-bit_rle_xyze}
34 < .sp
37 > FORMAT={ascii|float|double|32-bit_rle_rgbe|32-bit_rle_xyze|Radiance_spectra}
38   .fi
39 + .sp
40   The number of components indicates that each matrix element is actually
41   composed of multiple elements, most commonly an RGB triple.
42   This is essentially dividing the matrix into planes, where each component
# Line 47 | Line 51 | instead of a file by
51   using quotes and a beginning exclamation point ('!').
52   .PP
53   Two special cases are handled for component matrices that are either
54 < XML files containing BTDF data, or Radiance picture files.
55 < In the first case, a BSDF library is used to load and interpret the
56 < transmission matrix.
54 > XML files containing BSDF data, or Radiance picture files.
55 > In the first case, the BSDF library loads and interprets the
56 > transmission matrix by default.
57 > Alternatively, the front (normal-side) reflectance is selected if the
58 > .I \-rf
59 > option precedes the file name, or the backside reflectance if
60 > .I \-rb
61 > is specified.
62   (XML files cannot be read from the standard input or from a command.)\0
63   In the second case, the RGBE or XYZE values are loaded in a 3-component
64   matrix where the number of columns match the X-dimension of the picture, and
65   the number of rows match the Y-dimension.
66   The picture must be in standard pixel ordering, and the first row
67   is at the top with the first column on the left.
68 + Any exposure changes that were applied to the pictures before
69 + .I rmtxop
70 + will be undone, similar to the
71 + .I pcomb(1)
72 + .I \-o
73 + option.
74 + Radiance spectral pictures with more than 3 components are also supported.
75 + These are typically produced by
76 + .I rtrace(1)
77 + or
78 + .I rfluxmtx(1).
79   .PP
80   Before each file, the
81   .I \-t
82   and
63 .I \-s
64 or
83   .I \-c
84 + and/or
85 + .I \-s
86   options may be used to modify the matrix.
87   The
88   .I \-t
89   option transposes the matrix, swapping rows and columns.
90   The
71 .I \-s
72 option applies the given scalar factor(s) to the elements of the matrix.
73 If only one factor is provided,
74 it will be used for all components.
75 If multiple factors are given, their number must match the number of matrix
76 components.
77 Alternatively, the
91   .I \-c
92 < option may be used to "transform" the element values, possibly changing
92 > option can "transform" the element values, possibly changing
93   the number of components in the matrix.
94   For example, a 3-component matrix can be transformed into a single-component
95   matrix by using
# Line 88 | Line 101 | the first new component, and the second four coefficie
101   yield the second new component.
102   Note that the number of coefficients must be an even multiple of the number
103   of original components.
104 + .PP
105 + Alternatively, a set of symbolic output components may be given to the
106 + .I \-c
107 + option, with the following definitions:
108 + .sp
109 + .nf
110 + R       - red channel
111 + G       - green channel
112 + B       - blue channel
113 + X       - CIE X channel
114 + Y       - CIE Y channel (aka., luminance or illuminance)
115 + Z       - CIE Z channel
116 + S       - scotopic luminance or illuminance
117 + M       - melanopic luminance or illuminance
118 + A       - average component value
119 + .fi
120 + .sp
121 + These letters may be given in any order as a single string, and if
122 + .I "-c RGB"
123 + or
124 + .I "-c XYZ"
125 + is specified with
126 + .I "-fc"
127 + option, the output will be written as a RGBE or XYZE picture, respectively.
128 + Note that conversion from a float or RGBE color space applies a conversion
129 + of 179 lumens/watt (for CIE or melanopic output) or 412 (for scotopic output),
130 + and the reverse happens for conversion from XYZE input to RGB or RGBE output.
131 + .PP
132 + If a matrix or picture file is given to the
133 + .I \-c
134 + option, then the color space of that file will be used, instead.
135 + .PP
136   The
137 + .I \-C
138 + option takes either a symbolic color space or an input file, and will be
139 + applied to all subsequent matrices that do not have their own associated
140 + .I \-c
141 + option.
142 + .PP
143 + Additionally, the
144   .I \-s
145 < and
145 > option applies the given scalar factor(s) to the elements of the matrix.
146 > If only one factor is provided,
147 > it will be used for all components.
148 > If multiple factors are given, their number must match the number of matrix
149 > components
150 > .I after
151 > application of any
152   .I \-c
153 < options are mutually exclusive, insofar as they cannot be applied together
96 < to the same input matrix.
153 > option for this input matrix or picture.
154   .PP
155   If present, the second and subsequent matrices on the command
156 < line are concatenated to the result unless separated by a plus ('+'),
156 > line are concatenated together, unless separated by a plus ('+'),
157   asterisk ('*'), or forward slash ('/') symbol,
158 < in which case the matrix elements are added, multiplied, or divided together,
159 < respectively.
160 < (Note that the asterisk must be quoted or escaped in most shells.)\0
158 > in which case the individual matrix elements are added,
159 > multiplied, or divided, respectively.
160 > The concatenation operator ('.') is the default and need not be specified.
161 > Note also that the asterisk must be quoted or escaped in most shells.
162   In the case of addition, the two matrices involved must have the same number
163   of components.
164 + If subtraction is desired, use addition ('+') with a scaling parameter of -1
165 + for the second matrix (the
166 + .I \-s
167 + option).
168   For element-wise multiplication and division, the second matrix is
169 < permitted instead to have a single component per element, which will be
169 > permitted to have a single component per element, which will be
170   applied equally to all components of the first matrix.
171   If element-wise division is specified, any zero elements in the second
172   matrix will result in a warning and the corresponding component(s) in the
173   first matrix will be set to zero.
174   .PP
175 < The number of components in the new matrix after applying any
175 > Evaluation proceeds from left to right, and all operations have
176 > the same precedence.
177 > If a different evaluation order is desired, pipe the result of one
178 > .I rmtxop
179 > command into another, as shown in one of the examples below.
180 > .PP
181 > The number of components in the next matrix after applying any
182   .I -c
183   transform must agree with the prior result.
184   For concatenation (matrix multiplication), the number of columns
185 < in the prior result must equal the number of rows in the new matrix, and
185 > in the prior result must equal the number of rows in the next matrix, and
186   the result will have the number of rows of the previous and the number
187 < of columns of the new matrix.
187 > of columns of the next matrix.
188   In the case of addition, multiplication, and division,
189   the number of rows and columns of the prior result and the
190 < new matrix must match, and will not be changed by the operation.
190 > next matrix must match, and will not be changed by the operation.
191   .PP
192 + A final transpose or transform/scaling operation may be applied to
193 + the results by appending the
194 + .I \-t
195 + and
196 + .I \-c
197 + and/or
198 + .I \-s
199 + options after the last matrix on the command line.
200 + .PP
201   Results are sent to the standard output.
202   By default, the values will be written in the lowest resolution format
203   among the inputs, but the
204   .I \-f
205   option may be used to explicitly output components
206 < as ASCII (-fa), binary doubles (-fd), floats (-ff), or RGBE colors (-fc).
206 > as ASCII (-fa), binary doubles (-fd), floats (-ff), or common-exponent
207 > colors/spectra (-fc).
208   In the latter case, the actual matrix dimensions are written in the resolution
209   string rather than the header.
210 < Also, matrix results written as Radiance pictures must have either one
210 > Also, matrix results will be written as standard
211 > Radiance pictures if they have either one
212   or three components.
213   In the one-component case, the output is written as grayscale.
214 + If more than 3 components are in the final matrix and
215 + .I -fc
216 + is specified, the output will be a Radiance spectral picture.
217   .PP
218   The
219   .I \-v
# Line 146 | Line 228 | To convert a BTDF matrix into a Radiance picture:
228   .IP "" .2i
229   rmtxop -fc blinds.xml > blinds.hdr
230   .PP
231 + To extract the luminance values from a picture as an ASCII matrix:
232 + .IP "" .2i
233 + rmtxop -fa -c .265 .670 .065 image.hdr > image_lum.mtx
234 + .PP
235 + To render a melanopic illuminance image with
236 + .I rtrace\:
237 + .IP "" .2i
238 + vwrays -ff -x 1024 -y 1024 -vf myview.vf |
239 + rtrace -fff -cs 18 -co+ -i+ `vwrays -x 1024 -y 1024 -vf myview.vf -d` scene.oct |
240 + rmtxop -fc -c M - > scene_meli.hdr
241 + .PP
242   To scale a matrix by 4 and add it to the transpose of another matrix:
243   .IP "" .2i
244 < rmtxop -s 4 left.mtx + -t right.mtx > result.mtx
244 > rmtxop -s 4 first.mtx + -t second.mtx > result.mtx
245   .PP
246 + To multiply elements of two matrices, then concatenate with a third,
247 + applying a final transpose to the result:
248 + .IP "" .2i
249 + rmtxop first.mtx \\* second.mtx . third.mtx -t > result.mtx
250 + .PP
251 + To left-multiply the element-wise division of two matrices:
252 + .IP "" .2i
253 + rmtxop -fd numerator.mtx / denominator.mtx | rmtxop left.mtx - > result.mtx
254 + .PP
255   To send the elements of a binary matrix to
256   .I rcalc(1)
257   for further processing:
258   .IP "" .2i
259   rmtxop -fa orig.mtx | rcollate -ho -oc 1 | rcalc [operations]
260 + .SH NOTES
261 + Matrix concatenation is associative but not commutative, so order
262 + matters to the result.
263 + .I Rmtxop
264 + takes advantage of this associative property to concatenate
265 + from right to left when it reduces the number of basic operations.
266 + If the rightmost matrix is a column vector for example, it is
267 + much faster to concatenate from the right, and the result will
268 + be the same.
269 + Note that this only applies to concatenation;
270 + element-wise addition, multiplication, and division are always
271 + evaluated from left to right.
272   .SH AUTHOR
273   Greg Ward
274   .SH "SEE ALSO"
275 < cnt(1), getinfo(1), histo(1), neaten(1), rcalc(1), rcollate(1),
276 < rcontrib(1), rfluxmtx(1), rlam(1), tabfunc(1), total(1), wrapBSDF(1)
275 > cnt(1), getinfo(1), histo(1), neaten(1), pcomb(1),
276 > ra_xyze(1), rcalc(1),
277 > rcollate(1), rcontrib(1), rcrop(1), rfluxmtx(1), rlam(1),
278 > rsplit(1), rtrace(1), tabfunc(1), total(1), vwrays(1),
279 > wrapBSDF(1)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines