1 Introduction

1.1 Review of Related Work

Photogrammetry has a high potential in deformation measurement in civil engineering material testing due to its high accuracy and high resolution. Classical methods such as inductive displacement transducers, inclinometers, or strain gauges offer only point-wise measurements. During the last few years, several contributions about photogrammetry in material testing were published. Early photogrammetric applications in the field of deformation measurement dealt with artificial targets that were tracked in an image sequence of monocular or multi-ocular camera systems (Maas 1998; Fraser and Riedel 2000; Whiteman et al. 2002; Benning et al. 2004; Lange et al. 2006; Hampel and Maas 2003; Barazzetti and Scaioni 2010). For example, Barazzetti and Scaioni (2009) presented a 2D image-based method for crack analysis using a digital camera, an orientation frame, and a pair of signalized supports. Other authors used digital image correlation techniques for tracking natural points or artificial random patterns on the surface of the probe (Maas and Hampel 2006; Hampel and Maas 2009; Koschitzki et al. 2011; Liebold and Maas 2016, 2018). There are further publications considering image processing techniques (edge detection) to extract cracks as the Route-Finder algorithm as well as the Fly-Fisher algorithm (Dare et al. 2002; Niemeier et al. 2008; Detchev et al. 2012). In addition, Detchev et al. (2016) also used a multi-camera system to observe beams in a cyclic load test. There, the amplitudes and offsets of a sinusoidal function for each coordinate as a function of time were determined in a least-squares fit. Concerning crack movements, Lange and Benning (2006) pointed out that the crack opening vector has got three components. The first one is the crack width that is normal to the crack, the second one is parallel to the crack course, and the third one is perpendicular to the first two components (perpendicular to the surface). Lange and Benning (2006) also refer to Irwin (1958) describing several theoretical modes of fracture. Not all of them can be captured correctly by monocular image observations. In case of movements perpendicular to the surface (out-of-plane movements), 3D systems like stereo cameras have to be used. Görtz (2004) presented an algorithm to compute crack widths in rectangle elements based on the displacement vectors of the vertices. He considered two components: parallel and perpendicular to the crack course. However, global rotations between the reference and the subsequent epochs are not considered.

Furthermore, there exist several companies offering stereo systems and software using digital image correlation (DIC) techniques (e.g., GOM ARAMIS or VIC-3D from Correlated Solutions). These commercial software packages analyze image sequences, compute displacement fields, and visualize principal strains. However, actual metric crack widths have to be measured manually by clicking points to define distances that should be observed. In the work of Liebold and Maas (2018), three approaches for automatic crack width computation in triangle meshes are presented. These methods also consider rotations between the epochs of monocular image sequences and represent an extension to the approach of Görtz (2004). In this publication, the work of Liebold and Maas (2018) is continued. One of the algorithms is extended and applied to analyze multiple crack patterns rather than single cracks. The extension includes the subdivision of the mesh in critical areas and a least-squares refinement for the crack width computation. Multiple crack structures appear in tension tests of specimens consisting of special composites (here, SHCC: Strain-Hardening Cement-based Composites). This multiple cracking ensures the ductility behavior that is intended for special applications in civil engineering and the measurement of crack widths is an important issue (Curosu et al. 2017). Figure 1 shows an example of a multiple crack pattern of a deformed SHCC specimen.

Fig. 1
figure 1

Example of a multiple crack structure

1.2 Image Analysis—Basic Algorithm

The basic algorithm of crack detection on the basis of analyzing discontinuities in deformation vector fields determined by least-squares matching has been described in detail by Liebold and Maas (2018). An overview is also given here: a tension test is performed on an SHCC specimen with a planar surface. This experiment is observed by a monocular camera system whose optical axis is perpendicular to the surface. During the whole experiment, the relative orientation between camera and surface must not change and deformations must only appear in the plane to be observed. In addition, the surface must show a suitable natural or artificial pattern, such that there is enough texture for the matching process. During the tension test, an image sequence is recorded whose first image under zero load is defined as reference image. In this image, a set of points is defined. These vertices can be arranged in a regular gird or can be computed by an interest operator; for instance, the Harris operator (Harris and Stephens 1988). In the subsequent images, the displacements of the points are determined with sub-pixel accuracy by least-squares matching (Ackermann 1984; Förstner 1984; Grün 1985, 2012). In each epoch, the vertices are triangulated into a mesh using the Delaunay algorithm, see Fig. 2.

Fig. 2
figure 2

Triangle mesh of interest points (according to Liebold and Maas 2018)

Subsequently, the triangles are analyzed for changes. Deformations can be detected by the computation of principal strains (Appendix A) as shown by Liebold and Maas (2016). A visualization of these values is depicted in Fig. 3.

Fig. 3
figure 3

Color-coded visualization of the principal strains

The principal strains only show deformed regions. However, there is no information about the actual crack widths yet.

1.3 Limitations of Monocular Observations

Monocular observations of crack patterns require some assumptions. If these assumptions are not fulfilled, systematic errors can influence the measurements:

  • There are alignment errors if the optical axis is not perfectly perpendicular to the surface.

  • Moreover, errors due to relative movements between camera and specimen during the experiment are possible.

  • In addition, there are perspective errors due to out-of-plane movements on the surface of the specimen.

  • If the measured values are transformed from image to object space, scaling errors can appear.

  • There are further errors due to lens distortion which are minimized by camera calibration for instance using the Brown parameters (Brown 1971).

The projective errors of the first and the second point could be minimized using a orientation frame with at least four targets with known coordinates (similar to approach of Barazzetti and Scaioni 2009). The inner geometry of the frame has to stay constant during the load test and the frame has to be attached to the surface, such that it stays undeformed but parallel to it. The measured image coordinates can then be corrected using a projective transformation to the frame system. However, this is not applied in the experiments of this publication.

1.4 Differences of Principal Strains and Crack Widths

This subsection explains why we use another model for the deformation measurement (crack width algorithm). Several free and commercial software packages as well as Liebold and Maas (2016) use the computation of principal strains to detect deformed areas as it is shown for triangle meshes in Appendix A. Another way for deformation detection is the determination of crack widths in triangle meshes is presented by Liebold and Maas (2018), a short overview is given in Appendix B. An important difference between both quantities is the underlying model. For principal strains, it is assumed that the surface element is deformed in a nonrigid way. Mathematically, the model is based on an affine transformation (see Appendix A). On the other hand, the crack width computation assumes that the triangle is split into two parts and one of these parts has experienced a relative rigid movement, see also Appendix B, Figs. 4 and  5 for the effect in the mesh.

Fig. 4
figure 4

Differences of models. a Reference triangle, b model of nonrigid deformation which is assumed for principal strains, and c splitting the triangle into two parts at the crack front and relative rigid movement of the upper part (assumed for crack width computation)

Fig. 5
figure 5

Differences of the models in the meshes. a Reference state with the crack line of a later crack, b mesh in the deformed epoch with nonrigid model, and c mesh in deformed epoch with the split triangles

Another difference is that the principal strain is a unit-less quantity, whereas the crack width is a metric quantity. The principal strain can be interpreted as a ratio of lengths, while the crack width represents the distance of the perpendicular movement between the parts left and right of the crack.

In the following, some additional considerations to the work of Liebold and Maas (2018) are presented. First, the effect of the triangle size on principle strains is considered. The principle strains are varying according to the size, because they represent a relative change. The following example illustrates this effect, see Fig. 6. There are two triangles; the bigger one has twice the size of the smaller one. Due to a crack opening with the width r, the triangles are deformed.

Fig. 6
figure 6

Effect of the triangle size on the strains if the crack width r is constant; \(\mathbf {n}\): crack normal; h: height of the triangle

We consider the simple case that the heights \(h_i\) of the triangles are parallel to the crack normal. Then, the principal strain for the smaller triangle can be computed as follows: it can be obtained by the stretch ratio \(d_1\) of the heights of the subsequent and the reference triangle:

$$\begin{aligned} d_1 = \frac{h_1+r}{h_1}. \end{aligned}$$
(1)

Or rather, the Cauchy strain \(e_1\) is:

$$\begin{aligned} e_1 = d_1-1 = \frac{r}{h_1}. \end{aligned}$$
(2)

The strain \(d_2\) of the second triangle with twice the size of the first triangle (\(h_2\)\(=\)\(2 \cdot h_1\)) and the same crack width r is:

$$\begin{aligned} d_2 = \frac{h_2+r}{h_2} = \frac{2 \cdot h_1+r}{2 \cdot h_1} = \frac{h_1 + \frac{r}{2}}{h_1}. \end{aligned}$$
(3)

And the Cauchy strain \(e_2\) is:

$$\begin{aligned} e_2 = d_2-1 = \frac{r}{2 \cdot h_1}. \end{aligned}$$
(4)

The Cauchy strain is halved if the triangle edge sizes are doubled in this example:

$$\begin{aligned} e_1 = 2 \cdot e_2. \end{aligned}$$
(5)

In particular, this effect leads to two problems: first, if there are different triangle sizes in a mesh, then the principal strain values are not comparable. Second, it is difficult to define thresholds for critical strains if the sizes differ. Figure 7 depicts the latter case. In the figure, some matches fail (red points), because the crack runs through the corresponding patches (gray squares). Therefore, some triangles are larger in the crack region.

Fig. 7
figure 7

a Triangulation of the reference points (black nodes); b triangulation of the points (black nodes) of the subsequent epoch with successful matches, matching fails for the red points. The matching patches are shown as gray squares

The computation of crack widths avoids these problems, as the crack width is an absolute quantity and not a ratio as the strain. Therefore, crack widths are used for the analysis in this paper. Nevertheless, the calculation of crack widths also has got some limits. An important intermediate result is the relative translation vector. Different relative movements within a triangle mesh could lead to the same relative translation vector of the upper point (single point on one side of the crack) in the triangle, see Fig. 8. The cases (a) and (b) illustrate that it is not possible to say where the crack runs through the triangle. It is somewhere between the baseline and the upper point. Moreover, it is not unambiguous which direction that the crack has got if only the displacements of the triangle vertices are analyzed; compare (a) and (c). Further information is required. With the help of the crack normal \(\overrightarrow{n}\), the direction of the crack is given and the crack width can be computed by projecting the relative translation vector \(\overrightarrow{t}_{rel}\) onto this normal vector \(\overrightarrow{n}\). Otherwise, only an upper limit for the crack width can be computed with the length of the relative translation vector. Appendix C shows the computation of the crack normals as shown by Liebold and Maas (2018). As one can see from Fig. 8d, it is possible that the upper part has an additional relative rotation. If only the displacements of the triangle vertices are given, the relative rotation cannot be derived. In the model, it is assumed that there is no relative rotation.

Fig. 8
figure 8

Possible cases of the course of the crack if the same relative translation vector (red) is given: a translation of the upper part, b translation of the upper part but the crack is shifted, c translation of the upper part but the crack has another direction, and d translation and rotation of the upper part

Although the whole SHCC specimen has a ductile behavior, the concrete between cracks can be considered as a stiff material, especially if there are multiple cracks, such that the model with two rigid parts inside the triangle fits better than the affine model using the principle strains. For other, more ductile materials as steel, the affine model should be used, especially if cracks do not appear.

2 Image Analysis for Multiple Crack Patterns

In this section, a strategy for the deformation analysis of multiple crack patterns is presented. The single steps are explained in the following subsections. Figure 9 depicts the steps of the presented algorithm in a flowchart. The algorithm is designed hierarchically to analyze critical regions by a denser mesh. The workflow begins with the tracking of a dense point grid due to the narrow crack paths. In the second step, a uniformly distributed selection of these points is triangulated into a mesh to avoid small triangles due to inaccuracies in computing crack widths. Next, the mesh is densified in regions where cracks appear. Then, the relative translation vectors are computed including points inside the triangles from the dense point grid. At the end, crack normals and widths are calculated for deformed triangles.

Fig. 9
figure 9

Flowchart of the analysis. \(\delta \) and \(\epsilon \) are user-defined thresholds

2.1 Dense Displacement Field

Due to the narrow crack structures of the fiber-reinforced probes, a dense regular grid of points is used, such that the patches have a big overlap. These points are tracked using least-squares matching (LSM) in the following epochs. If cracks cross patch, the assumption of a linear patch deformation in LSM may not be justified, and either the standard deviation of the shifts becomes large or the algorithm does not converge and fails, see Fig. 10a. The first case is typical for thin cracks and large patch sizes. In this approach, it is considered to be failed if the standard deviations of the shifts exceed a threshold. To increase the success rate, the patches of the matching points where LSM fails can be adapted, such that the crack does not cross the patch anymore. LSM is repeated with different predefined patch sizes, but in several cases, LSM fails for all these patch sizes. As shown in Fig. 10b, LSM succeeds for the blue patches now, but it still fails for the red patches. In Fig. 10, possible overlap of the patches is not shown. Successful matching requires suitable texture within the patch in both coordinate directions, and, thus, requires a certain minimum patch size.

Fig. 10
figure 10

a Cracks are running through a grid of points (black points) enclosed by their matching patches. Crossed patches are labeled as red squares; the other patches are depicted in green. b Adaption of patch size in cases where cracks are running through. The crack does not cross the blue adapted patches (blue triangles) anymore. Some patches are still crossed by the crack (red rectangles)

2.2 Triangle Mesh Creation and Analysis

The crack width analysis for small triangles is inaccurate. In addition, when using larger triangles, areas not affected by cracks can be detected more efficiently. Therefore, a coarse set of points is used for the triangulation. These points can be obtained as follows: all successful matching points from the dense grid are inserted in a regular grid with a defined grid size. Then, the nearest neighbors to the centers of the grid cells are used to define the coarse set of points, see also Fig. 11a. If the cell is empty (no successful matching points inside), it is not considered. After this, the coarse set of points (red encircled points in Fig. 11) is triangulated into a mesh using the Delaunay algorithm, see Fig. 11b. The blue points are the centers of the grid cells. Points where matching fails have a gray color. The triangle edges of the thinned-out mesh are depicted in green.

Fig. 11
figure 11

a Regular grid cells with the matching points inside (black, matching patches are not shown). The red encircled points are the nearest neighbors to the center of the cells (blue points). Points where matching fails are depicted in gray. b Triangulation (green edges) of those points that are the nearest neighbors of the cell centers (blue points) and that are also matched successfully

Figure 12 shows a thinned-out triangle mesh of a regular coarse set of points from an experiment.

Fig. 12
figure 12

Example of a thinned-out triangle mesh of the coarse set of points

Next, for each triangle, the norm of the relative translation vector \(||\overrightarrow{t}_{\mathrm{rel}}||\) is computed using the algorithm shown in Appendix B.

2.3 Densification of the Mesh

Subsequently, the resolution of the mesh is increased in regions where cracks appear. To achieve the densification, triangles with lengths of the relative translation vectors (Appendix B) larger than a user-defined threshold (\(||\overrightarrow{t}_{rel}||>\delta \)) are split into three parts, see Fig. 13. The threshold \(\delta \) should be in the same order of magnitude as the precision of least-squares matching [sub-pixel precision, in bad cases 0.1 px (Grün 2012)]. In the experiments presented in this approach, a threshold \(\delta \) of 0.075 px is used. The triangle is split as follows: the new vertex for the mesh is in the set of successful matching points inside the triangle (green points in Fig. 13) and it is also the nearest neighbor to the triangle center (red point in Fig. 13). A triangle will not be subdivided if the new triangles would have too small edge lengths. The minimal possible edge length is set to 5 px. This subdivision procedure is repeated for some iterations (here, five iterations).

Fig. 13
figure 13

Subdivision of a triangle crossed by a crack. Points being inside the triangle are shown in green, for the gray points, matching fails, because the crack crosses their patches (patches are not shown here), the center point of the triangle is depicted in red, and the black points are outside the triangle. The nearest neighbor of the green points to the red center is added to the mesh

The effect of densification is visualized in Fig. 14.

Fig. 14
figure 14

Triangle mesh after densification in critical regions

2.4 Crack Width Computation in a Dense Displacement Field

This section deals with the refinement of the relative translation vectors, which is the central innovation of the algorithm presented in this paper.

2.4.1 Model

First, the displacement vectors of the matching points are computed as follows:

$$\begin{aligned} \overrightarrow{\varDelta }_j = \overrightarrow{p}_j - \overrightarrow{p}_{\mathrm{ref},j}. \end{aligned}$$
(6)

To model the crack movement, the displacement vectors are partitioned into two clusters (set \(M_1\) and set \(M_2\)). Each set belongs to one side of the crack, see Fig. 15. A method for clustering is described in the following subsection.

Fig. 15
figure 15

Sets of displacements belonging to two crack sides

The mathematical description can be done as follows: The points of set \(M_1\) are transformed using a rigid transformation with the parameters \(\overrightarrow{t}\) and \(\mathbf{R} \) due to some movement in the planar space as a consequence of the application of a force to the specimen. For the second set (\(M_2\)), a relative translation vector \(\overrightarrow{t}_{\mathrm{rel}}\) is added to the transformation due to the crack opening, see Eq. (7). The presented model is a simplification of the model used for extended finite-element method (Moes et al. 1999). For each triangle, there is a separate set of parameters:

$$\begin{aligned} \overrightarrow{p}_j = {\left\{ \begin{array}{ll} \overrightarrow{t} + \mathbf{R} \cdot \overrightarrow{p}_{\mathrm{ref},j} &\quad \forall j \in M_1 \\ \overrightarrow{t} + \mathbf{R} \cdot \overrightarrow{p}_{\mathrm{ref},j} + \overrightarrow{t}_{\mathrm{rel}} &\quad \forall j \in M_2, \end{array}\right. } \end{aligned}$$
(7)

where \(\overrightarrow{p}_j\) is the coordinates of the subsequent epoch, \(\overrightarrow{p}_{\mathrm{ref},j}\) is the coordinates of the reference epoch, \(\overrightarrow{t}\) is the translation vector, \(\mathbf{R} \) is the rotation matrix, and \(\overrightarrow{t}_{\mathrm{rel}}\) is the relative translation vector.

The rotation matrix \(\mathbf{R} \) is parameterized with two parameters (c and s, see Eq. 8). They are linear in the observation equations, but necessitate a constraint:

$$\begin{aligned} \mathbf{R} = \begin{pmatrix} c &\quad s \\ -s &\quad c \end{pmatrix} \text{ subject } \text{ to } c^2+s^2=1, \end{aligned}$$
(8)

where c is the \(\cos {\alpha }\), first rotation parameter, s is the \(\sin {\alpha }\), second rotation parameter, and \(\alpha \) is the rotation angle.

The first step for the computation is the cluster analysis to know which point belongs to which set. The next subsection concentrates on this.

2.4.2 Clustering

For the classification, the parameters from Appendix B (\(\mathbf{R} \), \(\overrightarrow{t}\), \(\overrightarrow{t}_{\mathrm{rel}}\)) derived from the three vertices of the triangle can be used. According to Eq. (7), it is tested for each point inside the triangle if the upper part or the lower part of the equation leads to a smaller deviation \(\epsilon _i\).

Equation 9 shows how to decide whether the point with index k is assigned to the set \(M_1\) or to the set \(M_2\):

$$\begin{aligned}&\epsilon _1 = || \overrightarrow{p}_j - \overrightarrow{t} - \mathbf{R} \cdot \overrightarrow{p}_{\mathrm{ref},j}|| \nonumber \\&\epsilon _2 = || \overrightarrow{p}_j - \overrightarrow{t} - \mathbf{R} \cdot \overrightarrow{p}_{\mathrm{ref},j} - \overrightarrow{t}_{\mathrm{rel}}|| \nonumber \\&\text{ If } \epsilon _1 < \epsilon _2 \text{, } \text{ then } k \in M_1 \text{, } \text{ otherwise } k \in M_2. \end{aligned}$$
(9)

Figure 16 shows an example from experimental data. One triangle is shown, and the red and blue points belong to the two sets of the clustering result. The crack running through the triangle is visible and separates the two sets.

Fig. 16
figure 16

Experimental example of the clustering method

2.4.3 Alternative Method for Clustering

There are also alternatives to partition sets. Several methods are known from machine learning. In our case, the unsupervised k-means algorithm (Lloyd 1982) with \(k=2\) can be used. The input data for k-means are the displacement vectors of the matching points. Due to the relative translation of set \(M_2\), the displacement vectors should differ from the first set. Initial centroids for the can be obtained with k-means\(++\) (Arthur and Vassilvitskii 2007). Figure 17a depicts the displacement vectors between the epochs if there is only a translation and a relative shift. Figure 17b shows the two clusters of their coordinates. The scattering is only caused by random errors in the matching process.

Fig. 17
figure 17

a Displacement vectors due to global translation and relative translation from reference to subsequent epoch. b k-means clustering of the displacement vector coordinates

If there are global rotations, the displacement vectors will show according systematic effects. Figure 18a, b depict the effect. The scattering of the vector clusters that is visible is only caused by the global rotation, not by random errors from matching. This could lead to wrong classifications if the relative translations are smaller than the systematic scattering. In most of our experiments, global rotations were very small such that the effect can be ignored in the clustering with k-means.

Fig. 18
figure 18

a Displacement vectors due to global translation, global rotation and relative translation from reference to subsequent epoch. b Variations of the displacement vectors of \(M_1\) (magenta) and \(M_2\) (cyan) due to a global rotation

If there are significant rotations, the k-means method can fail. In that case, the first presented algorithm should be preferred for clustering.

2.4.4 Least-Squares Adjustment

The dense displacement field offers the possibility to consider more than the three triangle vertices for computing the relative translation vector. Therefore, the model is overdetermined and the parameters can be calculated in a least-squares fit. The observation equations are derived from Eq. 10:

$$\begin{aligned} \overrightarrow{p}_j + \overrightarrow{v}_j= {\left\{ \begin{array}{ll} \overrightarrow{t} + \mathbf{R} \cdot \overrightarrow{p}_{\mathrm{ref},j} &\quad \forall j \in M_1 \\ \overrightarrow{t} + \mathbf{R} \cdot \overrightarrow{p}_{\mathrm{ref},j} + \overrightarrow{t}_{\mathrm{rel}} &\quad \forall j \in M_2 \end{array}\right. } \end{aligned}$$
(10)

where \(\overrightarrow{v}_j\) is the residual vector of point j.

The number of points n is equal to the cardinality (#) of the union of set \(M_1\) and \(M_2\) and is also the sum of the individual cardinalities of the sets.

$$\begin{aligned} n = n_1 + n_2 = \# M_1 + \# M_2 = \# (M_1 \cup M_2). \end{aligned}$$
(11)

The coordinates of the subsequent epoch are considered as observations. The translation vector \(\overrightarrow{t}\), the rotation matrix \(\mathbf{R} \) of the rigid body transformation and the relative translation vector \(\overrightarrow{t}_{\mathrm{rel}}\) are unknowns. Next, the observation equations have to be linearized. Only rotation parameters are linearized applying Taylor’s theorem because they are nonlinear in the constraint equation:

$$\begin{aligned} c_0^2 + s_0^2 + 2 \cdot c_0 \cdot \mathrm{dc} + 2 \cdot s_0 \cdot \mathrm{ds} = 1 \end{aligned}$$
(12)

where \(c_0,s_0\) is the initial values of c and s, \(\mathrm{dc},\mathrm{ds}\) is the corrections to c and s.

If there are small global rotations, the initial value of \(c_0\) can be set to 1 and \(s_0\) can be set to 0. The linearized observation equations can be expressed as:

$$\begin{aligned}&\begin{array}{ll} \overrightarrow{l}_j + \overrightarrow{v}_j = {\left\{ \begin{array}{ll} \overrightarrow{t} + \mathbf{dR} \cdot \overrightarrow{p}_{\mathrm{ref},j} &\quad \forall j \in M_1 \\ \overrightarrow{t} + \mathbf{dR} \cdot \overrightarrow{p}_{\mathrm{ref},j} + \overrightarrow{t}_{\mathrm{rel}} &\quad \forall j \in M_2 \end{array}\right. }\\ \text{ with } \\ \overrightarrow{l}_j = \overrightarrow{p}_j - \mathbf{R} _0 \cdot \overrightarrow{p}_{\mathrm{ref},j} \text{, } \\ \mathbf{R} _0 = \begin{pmatrix} c_0 &\quad s_0 \\ -s_0 &\quad c_0 \end{pmatrix} \text{ and } \mathbf{dR} = \begin{pmatrix} \mathrm{dc} &\quad \mathrm{ds} \\ -\mathrm{ds} &\quad \mathrm{dc} \end{pmatrix} \end{array} \end{aligned}$$
(13)

where \(\overrightarrow{l}_j\) is the reduced observation for \(\overrightarrow{p}_j\), \(\mathbf{R} _0\) is the initial rotation matrix, \(\mathbf{dR} \) is the matrix with corrections to \(\mathbf{R} \).

The parameters are collected in the vector of unknowns \(\mathbf{x} \):

$$\begin{aligned} \mathbf{x} = \begin{pmatrix} t_x&t_y&c&s&t_{\mathrm{rel},x}&t_{\mathrm{rel},y} \end{pmatrix}^\mathrm{T} \end{aligned}$$
(14)

and it can be decomposed in the vector of initial parameters \(\mathbf{x} _0\) and the vector of corrections to the unknowns \(\mathbf{dx} \).

$$\begin{aligned} \mathbf{x} = \mathbf{x} _0 + \mathbf{dx} . \end{aligned}$$
(15)

The initial parameter vector \(\mathbf{x} _0\) is

$$\begin{aligned} \mathbf{x} _0 = \begin{pmatrix} 0&0&c_0&s_0&0&0 \end{pmatrix}^\mathrm{T}. \end{aligned}$$
(16)

The vector of corrections to the unknowns \(\mathbf{dx} \) is

$$\begin{aligned} \mathbf{dx} = \begin{pmatrix} t_x&t_y&\mathrm{dc}&\mathrm{ds}&t_{\mathrm{rel},x}&t_{\mathrm{rel},y} \end{pmatrix}^\mathrm{T}. \end{aligned}$$
(17)

In matrix notation, the linearized observation equations can be written as:

$$\begin{aligned} \mathbf{l} + \mathbf{v} = \mathbf{A} \cdot \mathbf{dx} \text{ subject } \text{ to } \mathbf{B} \cdot \mathbf{dx} = \mathbf{w} \end{aligned}$$
(18)

where \(\mathbf{l} \) is the reduced observation vector, \(\mathbf{v} \) is the residual vector, \(\mathbf{A} \) is the Jacobian matrix, \(\mathbf{B} \) is the condition matrix, \(\mathbf{w} \) is the vector of inconsistencies.

The Jacobian matrix \(\mathbf{A} \) is

$$\begin{aligned} \mathbf{A} = \begin{pmatrix} 1 &{} 0 &{} x_{\mathrm{ref},1} &{} y_{\mathrm{ref},1} &{} 0 &{} 0 \\ 0 &{} 1 &{} y_{\mathrm{ref},1} &{} -x_{\mathrm{ref},1} &{} 0 &{} 0 \\ \vdots &{} \vdots &{} \vdots &{} \vdots &{} \vdots &{} \vdots \\ 1 &{} 0 &{} x_{\mathrm{ref},n_1} &{} y_{\mathrm{ref},n_1} &{} 0 &{} 0 \\ 0 &{} 1 &{} y_{\mathrm{ref},n_1} &{} -x_{\mathrm{ref},n_1} &{} 0 &{} 0 \\ 1 &{} 0 &{} x_{\mathrm{ref},n_1+1} &{} y_{\mathrm{ref},n_1+1} &{} 1 &{} 0 \\ 0 &{} 1 &{} y_{\mathrm{ref},n_1+1} &{} -x_{\mathrm{ref},n_1+1} &{} 0 &{} 1 \\ \vdots &{} \vdots &{} \vdots &{} \vdots &{} \vdots &{} \vdots \\ 1 &{} 0 &{} x_{\mathrm{ref},n} &{} y_{\mathrm{ref},n} &{} 1 &{} 0 \\ 0 &{} 1 &{} y_{\mathrm{ref},n} &{} -x_{\mathrm{ref},n} &{} 0 &{} 1 \\ \end{pmatrix} \end{aligned}$$
(19)

where

\(n_1 \hbox {is the number of points in set}\,M_1\).

The reduced observation vector \(\mathbf{l} \) is

$$\begin{aligned} \mathbf{l} = \begin{pmatrix} x_{1} - c_0 \cdot x_{\mathrm{ref},1} - s_0 \cdot y_{\mathrm{ref},1}\\ y_{1} + s_0 \cdot x_{\mathrm{ref},1} - c_0 \cdot y_{\mathrm{ref},1}\\ \vdots \\ x_{n} - c_0 \cdot x_{\mathrm{ref},n} - s_0 \cdot y_{\mathrm{ref},n}\\ y_{n} + s_0 \cdot x_{\mathrm{ref},n} - c_0 \cdot y_{\mathrm{ref},n}. \end{pmatrix} \end{aligned}$$
(20)

The condition matrix \(\mathbf{B} \) is

$$\begin{aligned} \mathbf{B} = \begin{pmatrix} 0&0&2 \cdot c_0&2 \cdot s_0&0&0 \end{pmatrix}. \end{aligned}$$
(21)

The vector of inconsistencies \(\mathbf{w} \) can be written as:

$$\begin{aligned} \mathbf{w} = \begin{pmatrix} 1 - c_0^2 - s_0^2 \end{pmatrix}. \end{aligned}$$
(22)

Due to the constraint, the Gauss–Markov model is extended with the method of the Lagrange multipliers \(\mathbf {\lambda }\).

$$\begin{aligned} \varOmega = \mathbf{v} ^\mathrm{T} \cdot \mathbf{v} + \mathbf{{\lambda }}^\mathrm{T} \cdot (\mathbf{B} \cdot \mathbf{dx} - \mathbf{w} ) \rightarrow \underset{\mathbf{dx }}{\min }. \end{aligned}$$
(23)

The solution of this system can be obtained with the extended normal equations:

$$\begin{aligned} \begin{pmatrix} \mathbf{A} ^\mathrm{T} \cdot \mathbf{A} &{} &{} \mathbf{B} ^\mathrm{T}\\ \mathbf{B} &{} &{} \mathbf 0 \end{pmatrix} \cdot \begin{pmatrix} \mathbf{dx} \\ \mathbf{k} \end{pmatrix} = \begin{pmatrix} \mathbf{A} ^\mathrm{T} \cdot \mathbf{l} \\ \mathbf{w} \end{pmatrix} \end{aligned}$$
(24)

where \(\mathbf{k} \)\(=\)\(\frac{1}{2} \cdot \mathbf{{\lambda }}\), vector of Lagrangian multipliers.

$$\begin{aligned} \mathbf{A} ^\mathrm{T} \cdot \mathbf{A} = \begin{pmatrix} n &{} 0 &{} \sum _{i=1}^n x_{\mathrm{ref},i} &{} \sum _{i=1}^n y_{\mathrm{ref},i} &{} n_2 &{} 0 \\ {} &{} n &{} \sum _{i=1}^n y_{\mathrm{ref},i} &{} -\sum _{i=1}^n x_{\mathrm{ref},i} &{} 0 &{} n_2 \\ {} &{} {} &{} \sum _{i=1}^n (x_{\mathrm{ref},i}^2+y_{\mathrm{ref},i}^2) &{} 0 &{} \sum _{i \in M_2} x_{\mathrm{ref},i} &{} \sum _{i \in M_2} y_{\mathrm{ref},i} \\ {} &{} {} &{} {} &{} \sum _{i=1}^n (x_{\mathrm{ref},i}^2+y_{\mathrm{ref},i}^2) &{} \sum _{i \in M_2} y_{\mathrm{ref},i} &{} -\sum _{i \in M_2} x_{\mathrm{ref},i} \\ {} &{} {} &{} {} &{} {} &{} n_2 &{} 0 \\ {} &{} {} &{} {} &{} {} &{} {} &{} n_2 \end{pmatrix} \end{aligned}$$
(25)

where \(n_2\) is the number of points in set \(M_2\).

$$\begin{aligned} \mathbf{A} ^\mathrm{T} \cdot \mathbf{l} = \begin{pmatrix} \sum _{i=1}^n x_i - c_0 \cdot \sum _{i=1}^n x_{\mathrm{ref},i} - s_0 \cdot \sum _{i=1}^n y_{\mathrm{ref},i} \\ \sum _{i=1}^n y_i - c_0 \cdot \sum _{i=1}^n y_{\mathrm{ref},i} + s_0 \cdot \sum _{i=1}^n x_{\mathrm{ref},i} \\ \sum _{i=1}^n (x_{\mathrm{ref},i} \cdot x_i + y_{\mathrm{ref},i} \cdot y_i) - c_0 \cdot \sum _{i=1}^n (x_{\mathrm{ref},i}^2 + y_{\mathrm{ref},i}^2) \\ \sum _{i=1}^n (y_{\mathrm{ref},i} \cdot x_i - x_{\mathrm{ref},i} \cdot y_i) - s_0 \cdot \sum _{i=1}^n (x_{\mathrm{ref},i}^2 + y_{\mathrm{ref},i}^2) \\ \sum _{i \in M_{2}} x_i - c_0 \cdot \sum _{i \in M_{2}} x_{\mathrm{ref},i} - s_0 \cdot \sum _{i \in M_{2}} y_{\mathrm{ref},i} \\ \sum _{i \in M_{2}} y_i - c_0 \cdot \sum _{i \in M_{2}} y_{\mathrm{ref},i} + s_0 \cdot \sum _{i \in M_{2}} x_{\mathrm{ref},i}. \end{pmatrix} \end{aligned}$$
(26)

The upper part of the normal matrix \(\mathbf{A} ^\mathrm{T} \cdot \mathbf{A} \) can be computed directly (see Eq. 25) such that it is not necessary to compute the Jacobian matrix \(\mathbf{A} \) and the observation vector \(\mathbf{l} \) in order to be more efficient. The right hand side vector \(\mathbf{A} ^\mathrm{T} \cdot \mathbf{l} \) is expressed in Eq. 26.

The parameter vector \(\mathbf{dx} \) is obtained by solving the extended normal equations (Eq. 24). The translation parameters \(\overrightarrow{t}\) and \(\overrightarrow{t}_{\mathrm{rel}}\) can be found directly in the \(\mathbf{dx} \) vector. The rotation parameters c and s have to be corrected:

$$\begin{aligned} c&= c_0+\mathrm{dc} \nonumber \\ s&= s_0+\mathrm{ds}. \end{aligned}$$
(27)

The process of the computing of the normal equations with the new \(\mathbf{B} \)-matrix should be repeated until the absolute corrections to the unknowns dc and ds fall below a threshold. Considering the relative translation vector \(\overrightarrow{t}_{\mathrm{rel}}\), it can be decomposed in a part perpendicular to the crack and another part parallel to the crack. The crack width r is computed by the scalar projection of the relative translation vector \(\overrightarrow{t}_{\mathrm{rel}}\) onto the crack normal \(\overrightarrow{n}\), see Appendix B (crack width computation in triangles), Appendix C (crack normal determination), Fig. 32b and Eq. 28.

$$\begin{aligned} r = \frac{||\overrightarrow{n}^\mathrm{T} \cdot \overrightarrow{t}_{\mathrm{rel}}||}{||\overrightarrow{n}||} \le ||\overrightarrow{t}_{\mathrm{rel}}||. \end{aligned}$$
(28)

The algorithm for the computation of the absolute value of the relative translation vector \(||\overrightarrow{t}_{\mathrm{rel}}||\) can also be applied on triangles on 3D surfaces. The 3D coordinates of the vertices of the triangle can be transformed to a local 2D system in the reference and in the subsequent epoch. Then, the 2D algorithm can be applied. Global translation and rotation have to be discarded due to the transformation to 2D.

3 Experimental Results

In this section, some results of a quasi-static tension test of a SHCC specimen are shown. The loading force is increased stepwise that leads to increasing multiple cracking. The resolution of the observing camera is \(5184~\times ~2912\) px. The width of the probe is 4 cm and the length between the clamps is approximately 10 cm. The following parameters are used for the geometric analysis:

  • The size of the grid cells for the definition of the coarse subset of points is set to 150 px.

  • The number of iterations for the densification of the mesh is set to 5.

  • A triangle is subdivided if \(||\overrightarrow{t}_{\mathrm{rel}}|| > \delta =0.075\) px and if the side lengths of the new triangles are greater than 5 px.

  • The 1st method of Sect. 2.4.2 is used for clustering in the least-squares method.

  • If \(||\overrightarrow{t}_{\mathrm{rel}}|| > \epsilon =0.15\) px, the triangle is considered as crack candidate (Appendices B and C).

The crack widths r (or rather \(||\overrightarrow{t}_{\mathrm{rel}}||\) for triangles with \(||\overrightarrow{t}_{\mathrm{rel}}||\le \delta \)) can be visualized in a color-coded map. The triangle crack widths are depicted for four epochs of an experiment in Fig. 19. The increasing multiple cracking is shown and this behavior is typical for SHCC. It ensures the ductility of the material.

Fig. 19
figure 19

Color-coded visualization of the crack widths of different epochs: a epoch 10, b epoch 30, c epoch 50, d epoch 80

Furthermore, it is possible to create 3D visualizations where triangles are transformed to prisms whose heights correspond to the crack widths in addition to the color code, see Fig. 20.

Fig. 20
figure 20

Color-coded 3D visualization of the crack widths. The heights of the prisms as well as their colors correspond to the crack widths

As already described in Sect. 1.4, principal strains depend on triangle size, whereas the crack width values should not change. In Fig. 21, the influence of different triangle sizes on the principal strains and on the crack widths is shown. In the right images, the edge lengths of the triangles are divided in half, and as expected, the strains appear much greater in the right image. Considering the crack widths, only small differences caused by discretization can be seen.

Fig. 21
figure 21

Upper part: visualization of principal strains in triangle meshes using different triangle sizes. Lower part: crack widths

As already mentioned, the presented results in this section show a typical behavior of a tension test with a SHCC specimen. The comparison to other measuring methods is very difficult: Strain gauges cannot be fixed to the probe, because they would influence the development of the multiple cracking. Two inductive displacement transducers are used to measure the entire extension between the measuring area between the clamps, but they only give single values.

4 Detailed Test of the Algorithm on the Basis of Synthetic Image Data

The photogrammetric crack pattern analysis procedure as described above delivers results with rather high internal precision figures and rather high spatial resolution. As a consequence, it is almost impossible to provide independent reference measurements which could serve for an external accuracy test. Therefore, we decided to use a synthetic data set with synthetic images containing defined deformations as a basis to test the developed algorithms.

Herein, precision, accuracy, and reliability are analyzed. Accuracy describes the deviations between the measurements and the true values including systematic errors, whereas precision shows how measurements differ from each other due to random errors. In this paper, reliability describes the robustness of the algorithm, and therefore, the ratio of outliers is used for the evaluation. The given shifts are compared to the measured vectors in two ways: the first one is the analysis of the 2D relative translation vectors and the second one is the 1D analysis of the computed crack widths. The following parameters are used for the geometric analysis:

  • The size of the grid cells for the definition of the coarse subset of points is set to 75 px.

  • The number of iterations for the densification of the mesh is set to 5.

  • A triangle is subdivided if \(||\overrightarrow{t}_{\mathrm{rel}}|| > \delta =0.075\) px and if the side lengths of the new triangles are greater than 5 px.

  • The 1st method of Sect. 2.4.2 is used for clustering in the least-squares method.

  • If \(||\overrightarrow{t}_{\mathrm{rel}}|| > \epsilon =0.15\) px, the triangle is considered as crack candidate (Appendices B and C).

4.1 Generation of the Images

To get a reference image (undeformed state), a random pattern is generated onto a gray (almost white) background. The resolution of the image is set to 300 \(\times \) 2000 px. Because of sharp edges, the image is blurred with a Gaussian smoothing filter, see Fig. 22a. For the deformed state, a rotation with an angle of \(\vartheta =2^{\circ }\) (rotation about the image center \(\begin{pmatrix} x_{c};&y_{c} \end{pmatrix}^\mathrm{T}\)) and a translation of \(\overrightarrow{t}=\begin{pmatrix} 3~\mathrm{px};&-1~\mathrm{px} \end{pmatrix}^\mathrm{T}\) was simulated for the whole image. For the right part of the image, an additional relative translation \(\overrightarrow{t}_{\mathrm{rel}}\) is applied. The left and the right parts are transformed in different ways. The gray values of the deformed images are computed according to the indirect method using bicubic interpolation, while the gray values of the crack are set to zero. Equation (29) shows the transformation formula applied to the right and the left side of the image:

$$\begin{aligned} \begin{array}{l} \text{ For } \text{ the } \text{ left } \text{ side } \text{ of } \text{ the } \text{ crack: } \\ \begin{pmatrix} x_{\mathrm{ref}} \\ y_{\mathrm{ref}} \end{pmatrix} = \mathbf{R} ^\mathrm{T} \cdot \overrightarrow{\varDelta } + \begin{pmatrix} x_{c} \\ y_{c} \end{pmatrix} \\ \text{ For } \text{ the } \text{ right } \text{ side } \text{ of } \text{ the } \text{ crack: } \\ \begin{pmatrix} x_{\mathrm{ref}} \\ y_{\mathrm{ref}} \end{pmatrix} = \mathbf{R} ^\mathrm{T} \cdot \overrightarrow{\varDelta } + \begin{pmatrix} x_{c} \\ y_{c} \end{pmatrix} - \overrightarrow{t}_{\mathrm{rel,ref}} \\ \text{ with } \\ \overrightarrow{\varDelta } = \begin{pmatrix} x \\ y \end{pmatrix} - \begin{pmatrix} x_{c} \\ y_{c} \end{pmatrix} - \overrightarrow{t} \text{ and } \\ \begin{pmatrix} x_{c} \\ y_{c} \end{pmatrix} = \begin{pmatrix} 0.5 \cdot \text{ number } \text{ of } \text{ columns } \\ 0.5 \cdot \text{ number } \text{ of } \text{ rows } \end{pmatrix} \text{ and } \\ \mathbf{R} = \begin{pmatrix} \cos {\vartheta } &{} \sin {\vartheta }\\ -\sin {\vartheta } &{} \cos {\vartheta } \end{pmatrix}, \end{array} \end{aligned}$$
(29)

where \(x_{\mathrm{ref}}, y_{\mathrm{ref}}\) is the coordinates in the reference, \(x_{\mathrm{ref}}, y_{\mathrm{ref}}\) is the image, and xy is the coordinates in the deformed image.

In addition, a zero mean Gaussian noise with a standard deviation of \(\sigma _{\mathrm{Gauss}}=5\) is added to each pixel for each image. \(14 \times 3\) deformed images were generated with different relative translation vectors. Fourteen different shifts v are simulated (0.2 px; 0.3 px; 0.4 px; 0.5 px; 0.6 px; 0.7 px; 0.8 px; 0.9 px; 1 px; 1.5 px; 2 px; 3 px; 4 px; 5 px) with the three cases: \(\overrightarrow{t}_{\mathrm{rel,ref}} = \begin{pmatrix}v;&0 \end{pmatrix}^\mathrm{T}\), \(\overrightarrow{t}_{\mathrm{rel,ref}} = \begin{pmatrix} 0;&v \end{pmatrix}^\mathrm{T}\) and \(\overrightarrow{t}_{\mathrm{rel,ref}} = \begin{pmatrix}v;&v \end{pmatrix}^\mathrm{T}\). Figure 22b–d shows three examples of the three different cases of relative translation vectors.

Fig. 22
figure 22

a Random pattern, b only relative shift in x, c relative shift in y, and d relative shift in x and y

4.2 Measurements

For all generated images, the procedure of Sect. 2 is applied. For each triangle, the relative translation vector and the crack width are computed and the data are analyzed below. The test is done with the three-point algorithm (labeled with 3p, Appendix B) where only the three vertices of the triangle are used and it is done with the least-squares adjustment algorithm (labeled with ls, Sect. 2.4) including also the matching points not belonging to the mesh inside the triangle. Figure 23 shows the result of the algorithm for the crack width computation of one of the cases. The deformed triangles are detected correctly.

Fig. 23
figure 23

a Color-coded visualization of crack widths, b extracted crack triangles

4.3 Statistics of the Relative Translation Vectors

First, the relative translation vectors are considered. The relative shifts are measured in the coordinate system of the deformed state. To compare the given values used in the image generation step (Sect. 4.1), these reference vectors have to be transformed:

$$\begin{aligned} \overrightarrow{\mu } = \mathbf{R} \cdot \overrightarrow{\mu }_{\mathrm{ref}} = \begin{pmatrix} \cos {\vartheta } &{} \sin {\vartheta }\\ -\sin {\vartheta } &{} \cos {\vartheta } \end{pmatrix} \cdot \overrightarrow{\mu }_{\mathrm{ref}}, \end{aligned}$$
(30)

where \(\overrightarrow{\mu }\) is the expected relative translation vector, \(\overrightarrow{\mu }\) is the vector in the deformed state, \(\overrightarrow{\mu }_{\mathrm{ref}}\) is the expected relative translation, and \(\overrightarrow{\mu }_{\mathrm{ref}}\) is the vector in the undeformed state.

The vectors of the measurements are composed of x and y coordinates:

$$\begin{aligned} \overrightarrow{t}_{\mathrm{rel},i} = \begin{pmatrix} x_i \\ y_i \end{pmatrix}, \end{aligned}$$
(31)

where i is the index of the crack triangle. The mean of the n relative translation vectors for all crack triangles is:

$$\begin{aligned} \overrightarrow{x}_{m} = \begin{pmatrix} \frac{1}{n} \cdot \sum _{i=1}^n x_i \\ \frac{1}{n} \cdot \sum _{i=1}^n y_i \end{pmatrix}, \end{aligned}$$
(32)

where

n is the number of crack triangles/observations.

The empirical covariance matrix \({\varvec{\Sigma }}\) is computed as follows:

$$\begin{aligned} \begin{array}{l} {\varvec{\Sigma }} = \begin{pmatrix} s_x^2 &{} s_{xy} \\ s_{xy} &{} s_y^2 \end{pmatrix} \\ \text{ with } \\ s_x^2 = \frac{1}{n-1} \cdot \sum _{i=1}^n (x_i - x_m)^2 \\ s_y^2 = \frac{1}{n-1} \cdot \sum _{i=1}^n (y_i - y_m)^2 \\ s_{xy} = \frac{1}{n-1} \cdot \sum _{i=1}^n (x_i - x_m) \cdot (y_i - y_m), \end{array} \end{aligned}$$
(33)

where \(s_x^2\) is the variance of the x values of \(\overrightarrow{t}_{\mathrm{rel}}\), \(s_y^2\) is the variance of the y values of \(\overrightarrow{t}_{\mathrm{rel}}\), and \(s_{xy}\) is the covariance of x and y of \(\overrightarrow{t}_{\mathrm{rel}}\).

To find multivariate outliers, the Mahalanobis distance can be used if the data are normally distributed. The squared Mahalanobis distance MD\(^2\) is distributed according to the \(\chi ^2\) distribution:

$$\begin{aligned} \mathrm{MD}^2(\overrightarrow{x}_i) = (\overrightarrow{x}_i - \overrightarrow{x}_m)^T \cdot {{\varvec{\Sigma }}}^{-1} \cdot (\overrightarrow{x}_{i} - \overrightarrow{x}_m) \sim \chi _b^2, \end{aligned}$$
(34)

where b is the dimension (here \(b=2\)).

According to the 3-\(\sigma \) rule in the one-dimensional case, the confidence level \(\gamma =1-\alpha \) is set to \(99.73\%\). A data vector is considered as outlier if the following condition for the squared Mahalanobis distance is fulfilled:

$$\begin{aligned} \overrightarrow{x}_i \text{ is } \text{ an } \text{ outlier } \text{ if } \mathrm{MD}^2(\overrightarrow{x}_i) > \chi _{b,1-\alpha }^2, \end{aligned}$$
(35)

where \(\alpha \) is the significance level.

The outlier test is done in an iterative process. The mean vector and the empirical covariance matrix are computed in each iteration and only the data vector with the highest Mahalanobis distance is rejected if Eq. (35) is fulfilled. The process is repeated until the maximum of the squared Mahalanobis distances is below the critical value from the \(\chi ^2\) distribution.

To evaluate the precision, an eigenvalue decomposition of the empirical covariance \({\varvec{\Sigma }}\) is conducted:

$$\begin{aligned} {{\varvec{\Sigma }}} = \mathbf{V} \cdot {\varvec{\Lambda }} \cdot \mathbf{V} ^\mathrm{T} = \mathbf{V} \cdot \begin{pmatrix} s_1^2 &{} 0 \\ 0 &{} s_2^2 \end{pmatrix} \cdot \mathbf{V} ^\mathrm{T}, \end{aligned}$$
(36)

where \(\mathbf{V} \) is the eigenvector matrix; \({\varvec{\Lambda }}\) is the eigenvalue matrix (diagonal).

\(s_1\) and \(s_2\) are the square roots of the eigenvalues and can be used as a quantity for the precision measurement.

Figure 24 shows the scatter plots for the smallest shift distance of \(v=0.2\) px computed with the three-point algorithm. Table 1 depicts the relative translation vectors in the reference coordinate system and the corresponding vectors in the deformed state. On the left side of Fig. 24, some outliers are visible. In the center plots, the outliers are removed and the confidence ellipses with a confidence level of 95 % (red dashed ellipses) and 99.73 % (red dotted ellipses) are plotted. On the right side, the histograms of the crack widths and the kernel density estimation (magenta dashed line) are depicted. There, the red dotted vertical lines mark the reference values.

Fig. 24
figure 24

Simulated shift of \(v=0.2\) px with different relative translation directions (from top to bottom); left: scatter plot of relative translation vectors with the three-point algorithm for all triangles along the crack; center: scatter plot without outliers; blue: reference vector; red: mean vector and confidence ellipses with 95 % and 99.73 %; right: histogram of the corresponding crack widths, the expected value is shown as red vertical dotted line, and the kernel density estimate (Gaussian kernel) is depicted as magenta dashed line

Table 1 Expected relative translation vectors in the undeformed state \(\mathbf {\mu }_{\mathrm{ref}}\) and in the deformed state \(\mathbf {\mu }\) with \(v=0.2\) px used for the analysis

Figure 25 depicts the plots for the simulated shift \(v=0.2\) px computed with the least-squares algorithm. In Figs. 26 and  27, there are the plots for the simulated shift of \(v=0.6\) px.

Fig. 25
figure 25

Simulated shift of \(v=0.2\) px with different relative translation directions (from top to bottom); left: scatter plot of relative translation vectors with the least-squares algorithm for all triangles along the crack; center: scatter plot without outliers; blue: reference vector; red: mean vector and confidence ellipses with 95 % and 99.73 %; right: histogram of the corresponding crack widths; the expected value is shown as red vertical dotted line; the kernel density estimate (Gaussian kernel) is depicted as magenta dashed line

Fig. 26
figure 26

Simulated shift of \(v=0.6\) px with different relative translation directions (from top to bottom); left: scatter plot of relative translation vectors with the three-point algorithm for all triangles along the crack; center: scatter plot without outliers; blue: reference vector; red: mean vector and confidence ellipses with 95 % and 99.73 %; right: histogram of the corresponding crack widths; the expected value is shown as red vertical dotted line; the kernel density estimate (Gaussian kernel) is depicted as magenta dashed line

Fig. 27
figure 27

Simulated shift of \(v=0.6\) px with different relative translation directions (from top to bottom); left: scatter plot of relative translation vectors with the least-squares algorithm for all triangles along the crack; center: scatter plot without outliers; blue: reference vector; red: mean vector and confidence ellipses with 95 % and 99.73 %; right: histogram of the corresponding crack widths; the expected value is shown as red vertical dotted line; the kernel density estimate (Gaussian kernel) is depicted as magenta dashed line

To evaluate the accuracy, the empirical covariance matrix \({\varvec{\Sigma }}^{*}\) is computed using the given expected vector \(\overrightarrow{\mu }\) used for the image generation:

$$\begin{aligned} \begin{array}{l} {\varvec{\Sigma }}^{*} = \begin{pmatrix} s_x^{*2} &{} s_{xy}^{*} \\ s_{xy}^{*} &{} s_y^{*2} \end{pmatrix} \\ \text{ with } \\ s_x^{*2} = \frac{1}{n} \cdot \sum _{i=1}^n (x_i - \mu _x)^2 \\ s_y^{*2} = \frac{1}{n} \cdot \sum _{i=1}^n (y_i - \mu _y)^2 \\ s_{xy}^{*} = \frac{1}{n} \cdot \sum _{i=1}^n (x_i - \mu _x) \cdot (y_i - \mu _y), \end{array} \end{aligned}$$
(37)

where \(s_x^{*2}\) is the variance of the x values of \(\overrightarrow{t}_{\mathrm{rel}}\), \(s_y^{*2}\) is the variance of the y values of \(\overrightarrow{t}_{\mathrm{rel}}\), and \(s_{xy}^{*}\) is the covariance of x and y of \(\overrightarrow{t}_{\mathrm{rel}}\).

The principal standard deviations can be obtained by an eigenvalue decomposition of the empirical covariance matrix \({{\varvec{\Sigma }}}^*\):

$$\begin{aligned} {{\varvec{\Sigma }}}^* = \mathbf{V} ^* \cdot {\varvec{\Lambda }}^* \cdot \mathbf{V ^*}^\mathrm{T} = \mathbf{V} ^* \cdot \begin{pmatrix} {s_1^*}^2 &{} 0 \\ 0 &{} {s_2^*}^2 \end{pmatrix} \cdot \mathbf{V ^*}^\mathrm{T}, \end{aligned}$$
(38)

where \(\mathbf{V} ^{*}\) is the eigenvector matrix; \({\varvec{\Lambda }}^{*}\) is the eigenvalue matrix (diagonal).

\(s_1^*\) and \(s_2^{*}\) can be used as a quantity for the accuracy measurement. In addition, the accuracy can also be estimated by the following three quantities:

The distance from the mean to the reference vector is:

$$\begin{aligned} d_{\mu -m} = ||\overrightarrow{x}_m - \overrightarrow{\mu }||. \end{aligned}$$
(39)

The mean distance to reference vector is:

$$\begin{aligned} \overline{d}_{\mu } = \frac{1}{n} \sum _{i=1}^n ||\overrightarrow{x}_i - \overrightarrow{\mu }||. \end{aligned}$$
(40)

The maximum distance to reference vector is:

$$\begin{aligned} \hat{d}_{\mu } = \underset{i}{\max }( ||\overrightarrow{x}_i - \overrightarrow{\mu }||). \end{aligned}$$
(41)

To conclude the results, the precision and accuracy measurements are plotted in diagrams, see Fig. 28. The plots for the precision and accuracy are very similar. The maximum principal standard deviations are about 0.06 px. The maximum distance between the mean and the expected value is \(\max (d_{\mu -m})=0.026\) px in case of a relative shift \(v=0.2\) px along the crack (\(\overrightarrow{t}_{\mathrm{rel}}=\begin{pmatrix} 0.01~\mathrm{px};&0.20~\mathrm{px} \end{pmatrix}^\mathrm{T}\)). This deviation can also be seen in Fig. 24 and in Fig. 25. It is much greater than the distance between the red point and the blue point in Figs. 26 and  27 with \(v=0.6\) px. Considering all the other experiments, the distances between the mean and the expected value \(d_{\mu -m}\) are below 0.015 px. The mean distance to the expected value is about \(\overline{d}_{\mu }\approx 0.05\) px in all experiments. The maximum distances to the expected values \(\hat{d}_{\mu }\) are in a range of 0.1–0.2 px.

Fig. 28
figure 28

Precision and accuracy of the relative translation vectors for all reference crack widths for the three-point (3p) and the least-squares algorithm (ls). Left: precision using principle standard deviations from the empirical covariance matrix; center: accuracy using principle standard deviations from the covariance matrix with the given reference shift as average; right: other quantities for accuracy measurement, distance from the mean to the reference relative shift, mean distance from the single to the reference relative translation vector, and maximum distance to the reference relative shift vector

The reliability is evaluated with the help of the outlier ratio. The Gaussian noise added to the images leads to noise in the displacements. Sometimes, the wrong base edge is determined by Eq. 51 in Appendix B due to noise effects. In such cases, outliers appear. Figure 29 depicts the outlier ratios of all the experiments. The mean outlier ratio is approximately 2%. The highest outlier ratio appears in the experiment with \(\overrightarrow{t}_{\mathrm{rel}}=\begin{pmatrix} 0.05~\mathrm{px};&1.50~\mathrm{px} \end{pmatrix}^\mathrm{T}\). Again, the experiment with \(\overrightarrow{t}_{\mathrm{rel}}=\begin{pmatrix} 0.01~\mathrm{px};&0.20~\mathrm{px} \end{pmatrix}^\mathrm{T}\) shows a special behavior, too. It has one of the highest outlier ratios and it has a high number of crack triangles that were not detected (false negatives). In this case, the small relative shift is almost perpendicular to one triangle edge crossed by the crack, such that its length rarely changes (smaller than the precision of LSM). Because of that, there are two edges that have almost constant side lengths. In such cases, it is difficult for the algorithm to decide which edge is the baseline for the crack width computation. If the wrong side is chosen, the computed relative translation vector is an outlier.

Fig. 29
figure 29

Reliability: outlier ratio \(\beta \) in percent for all experiments [three-point algorithm (3p) and the least-squares algorithm (ls)]

In conclusion, the precision and accuracy of the relative translation vector components is below 0.06 px. Under suboptimal conditions, the accuracy may reach values up to 0.2 px. The ratio of outliers as a measure of reliability is on average 2%, but the maximum value is about 7%.

4.4 Statistics of the Crack Widths

After computing the crack width by projecting the relative translation vector onto the crack normal (Eq. 28), these values can also be analyzed statistically. Because of the projection, the crack normal \(\overrightarrow{n}\) is a further quantity that influences the scattering. It is to be expected that the accuracy of the crack normal \(\overrightarrow{n}\) is not that high due to discretization errors (line fit with the center points of the crack triangle and its neighbors, see Appendix C), such that the accuracy of the crack widths should be worse than the accuracy of the relative translation vectors.

The expected crack widths \(\mu _\mathrm{r}\) are the x components of the relative translation vector \(\overrightarrow{t}_{\mathrm{rel,ref}}\) used for image generation:

$$\begin{aligned} \mu _\mathrm{r} = t_{\mathrm{rel,ref},x}. \end{aligned}$$
(42)

The mean of the measured crack widths \(r_\mathrm{m}\) is:

$$\begin{aligned} r_\mathrm{m} = \frac{1}{n} \cdot \sum _{i=1}^n r_i, \end{aligned}$$
(43)

where \(r_i\) is the crack width of the ith crack triangle; n is the number of crack triangles.

The standard deviation of the crack widths \(s_\mathrm{r}\) is used as a quantity for precision:

$$\begin{aligned} s_\mathrm{r} = \sqrt{\frac{1}{n-1} \cdot \sum _{i=1}^n (r_i - r_m)^2 }. \end{aligned}$$
(44)

The standard deviation \(s_\mathrm{r}^*\) with the reference crack width \(\mu _\mathrm{r}\) as expected value is used as a quantity for the accuracy:

$$\begin{aligned} s_\mathrm{r}^* = \sqrt{\frac{1}{n} \cdot \sum _{i=1}^n (r_i - \mu _\mathrm{r})^2 }. \end{aligned}$$
(45)

Figure 30 shows the precision and accuracy of the crack widths of all experiments in two charts. The difference between the three-point and the least-squares algorithm is very small. Considering the experiments with the relative translation vector in x-direction \(\left( \overrightarrow{t}_{\mathrm{rel,ref}}=\begin{pmatrix} v;&0\end{pmatrix}^\mathrm{T} \right) \), the precision and the accuracy values are similar and on a constant level at 0.03 px. In case of \(\overrightarrow{t}_{\mathrm{rel,ref}}=\begin{pmatrix} v;&v\end{pmatrix}^\mathrm{T}\), the precision and the accuracy of the crack widths are also similar. Only the y-direction \((\overrightarrow{t}_{\mathrm{rel,ref}}=\begin{pmatrix} 0;&v\end{pmatrix}^\mathrm{T} )\) is an exception, because the mean and the expected value differ (\(s_{r,y} < s_{r,y}^*\)). The expected value \(\mu _{r,y}\) is zero, because there are only movements along the crack, whereas the mean is greater than zero, because all computed crack widths are positive (absolute values), see also the histograms in the second rows of Figs. 24, 25, 26, and 27. The crack widths are not normally distributed. For the shifts in y as well as in x and y, the precision and accuracy values are higher in case of higher shifts v. This behavior is expected due to the fluctuation in the crack normal estimation. Higher relative shifts should lead to higher deviations.

Fig. 30
figure 30

Accuracy and precision of crack widths

In summary, the precision and accuracy of the crack widths is better than 0.10 px for crack widths below 2 px. The accuracy and the precision depends on the crack width itself. Crack widths up to 5 px can lead to accuracy values up to 0.25 px.

4.5 Further Remarks

In real monocular experiments, there are further systematic errors. Some of the points are already listed in Sect. 1.3. In addition to these points, in case of measurements with inductive displacement transducers as comparing method, clamps can cause occlusions.

However, the error analysis in this section only considers the computation of displacements and the geometric analysis and is separated from the other effects mentioned in Sect. 1.3 and at the begin of this subsection, although the results may be too optimistic.

5 Conclusion and Outlook

This paper presents a strategy to detect cracks and compute their widths in multiple crack structures. The method is based on the deformation analysis of triangle meshes. The reliability, the precision, and the accuracy are checked using different simulated images with known deformations. Crack widths can be determined with an accuracy of better than 0.1 px in most cases, with lesser accuracy up to 0.25 px under suboptimal conditions. Further work should concentrate on model extensions using angles obtained by least-squares matching. Another extension could be the rotation of the upper part of the triangle. In addition, the accuracy can be determined with other reference measurements. A further interesting issue would be the application of the algorithm on triangle meshes of 3D surfaces.