measure returns the measurement results in an object of type
dip_measurement. It contains all the measurements done on an image in a
Extracting measurement data
The data in the
dip_measurement object can be accessed in a very
simple way, but only for reading, not writing (i.e. data manipulation is
Indexing with parentheses is used to access the measurements belonging
to one or more objects. The index used must match the label ID of the
object in the image, and the returned value is an object of type
The dot operator is used to extract the values corresponding to a single
measurement. The array returned is of type
will return a
double array with five elements, being the sizes for
objects number 11 through 15. Note that element 11 doesn’t need to be
placed 11th in the list of measurements. If only objects starting at 10
were measured, the above example would be equivalent to
msr.Size returns a
double array, whose second element would be
the size of object number 11.
end method will return the last label ID in the object.
converts the data in the object to a
double array, loosing the names
of the measurements and the label IDs.
If you want to handle the measurement results as a data table, use the
table function. The
table class was introduced in MATLAB in release
R2013b, and provides a convenient way to work with tabular data.
Other information on the
Besides extracting the measured data, you might want to gain more knowledge on the object you are dealing with (e.g. which measurements were taken and how many of them are there). This section describes functions used for this purpose.
fieldnames returns the names of the measurements (features) present
in the object.
isfield tests for a given feature to be present.
isempty returns true if there is no data in the object.
size returns the number of IDs as the first dimension, and the number
of values per object as the second. Note that the number of values
returned by size does not need to be equal to the number of features
fieldnames. Some measurement features return more than one
value per object.
size(msr,'Size') returns the number of values for the
size(double(msr)) returns the same value as
length(msr) is equivalent to
size(msr,1), and returns the number of
Combining measurement data
To join measurements produced by different calls to
measure, use the
default MATLAB syntax. Horizontal and vertical concatenations produce
[A,B] joins two measurement objects with the same label IDs, but
different measurements. If some measurements are repeated, or if the
label IDs don’t match, an error is generated.
[A;B] joins two measurement objects with the same measurements, on
different label IDs. If some IDs are repeated, or if the measurements
don’t match, an error is generated.
In some cases, objects in different images have the same labels. These need to be changed before concatenation is possible. This is done by the following syntax:
msr.id = 51:73;
The length of the array assigned to the IDs must have the same number of elements as the measurement object.
Similarly, it is possible to measure the same thing on different images of the same objects. For example, one might measure the average grey value on all three channels of an RGB image. To join these measurements into a single object, it is possible to add a prefix to the names of the measurements:
msr1.prefix = 'red_'; msr2.prefix = 'green_'; msr3.prefix = 'blue_'; msr = [msr1,msr2,msr3];
Note that this prefix cannot be changed, only added to. For example,
msr.prefix = 'A'; msr.prefix = 'B';
causes the measurements in
msr to have names like
rmfield removes the values for a given measurement feature from the