A binocular reconstruction based on perspective projection constraints and its application on robot eye‐hand coordination

IET Computer VisionVolume 16, Issue 4 p. 333-349 ORIGINAL RESEARCHOpen Access A binocular reconstruction based on perspective projection constraints and its application on robot eye-hand coordination Hui Wei, Corresponding Author Hui Wei [email protected] orcid.org/0000-0003-2696-0707 Laboratory of Algorithms for Cognitive Models, Shanghai Key Laboratory of Data Science, School of Computer Science, Fudan University, Shanghai, China Correspondence Hui Wei, Laboratory of Algorithms for Cognitive Models, Shanghai Key Laboratory of Data Science, School of Computer Science, Fudan University, Shanghai, China. Email: [email protected]Search for more papers by this authorLingjiang Meng, Lingjiang Meng Laboratory of Algorithms for Cognitive Models, Shanghai Key Laboratory of Data Science, School of Computer Science, Fudan University, Shanghai, ChinaSearch for more papers by this author Hui Wei, Corresponding Author Hui Wei [email protected] orcid.org/0000-0003-2696-0707 Laboratory of Algorithms for Cognitive Models, Shanghai Key Laboratory of Data Science, School of Computer Science, Fudan University, Shanghai, China Correspondence Hui Wei, Laboratory of Algorithms for Cognitive Models, Shanghai Key Laboratory of Data Science, School of Computer Science, Fudan University, Shanghai, China. Email: [email protected]Search for more papers by this authorLingjiang Meng, Lingjiang Meng Laboratory of Algorithms for Cognitive Models, Shanghai Key Laboratory of Data Science, School of Computer Science, Fudan University, Shanghai, ChinaSearch for more papers by this author First published: 15 February 2022 https://doi.org/10.1049/cvi2.12091AboutSectionsPDF ToolsRequest permissionExport citationAdd to favoritesTrack citation ShareShare Give accessShare full text accessShare full-text accessPlease review our Terms and Conditions of Use and check box below to share full-text version of article.I have read and accept the Wiley Online Library Terms and Conditions of UseShareable LinkUse the link below to share a full-text version of this article with your friends and colleagues. Learn more.Copy URL Share a linkShare onFacebookTwitterLinkedInRedditWechat Abstract Stereo matching algorithms have been developed for many years but basically focus only on the implementation of existing datasets and are rarely applied to real scenarios, such as industrial robot scenarios. Traditional stereo matching algorithms have a high error rate, and deep learning algorithms are difficult to obtain good results in real scenarios because of their weak generalisation ability and difficult access to training data. In order to use stereo matching algorithms for industrial robot guidance, it is better to design a new traditional algorithm with low time complexity for the characteristics of industrial robot scenarios dominated by planar facets. This paper proposes a new matching method based on subrows of pixels, instead of individual pixels, in order to improve robustness of matching and reduce running time. First, the pixel strings from the same row of the left and right images are divided into several colour-identical or colour-gradient segments. Then, the colour and length of the two left and right pixel segment are used as clues to determine a matching relation and obtain the matching type. Then, all match types can be determined according to non-crossing mapping. Each match type can reason backward to the corresponding spatial state of the stimulus source so that the disparity of pixels in pixel segments representing the spatial state can be calculated. This new matching method makes full use of the stimulus homology constraints and projective geometric constraints of row-aligned images. The method can obtain good results in industrial robot scenarios and be applied for industrial robot guidance. 1 INTRODUCTION Three-dimensional (3D) reconstruction methods make use of three approaches: time of flight, stereo, and structured light [1]. Sensors include Kinect [2], binocular cameras, multi-view cameras [3], and Lidar [4]. Kinect and Lidar work with the time-of-flight method, whose depth precision is limited for short-range measurement because of the high speed of light. Multiple-view cameras can achieve high accuracy, with a higher device cost and larger data volumes. Binocular systems can reconstruct high accuracy 3D maps and have many advantages in terms of cost and applicability. Binocular systems are also more similar to the vision systems of higher organisms. A large number of naturally binocular creatures, such as primates, are usually able to observe the world with their eyes horizontal at baseline so that stimuli from the outside world at the same horizontal height projected into the same latitudinal line of the left and right retinae [5]. The difference between the two lines of images on the left and right retinas is created by the jagged shape of stimuli in the physical world that is at the same horizontal height but at different distances from each other. This is caused by imaging the same stimulus into two disparate lenses at two different locations along two diverse projection paths. Whether this left-right difference is subtle or significant depends on the degree of jaggedness and where it occurs, so is this left-right difference sufficient for reconstructing the physical world? Perspective projection is a functionalised optical process, so can the original state of a jagged horizontal stimulus be resolved back out by left and right independent functional processes that are independent of each other? Or discover the differences and locate them between left and right row monocular images, and under what constraints can the original morphology be approximately analytically decomposed? A large number of animals in nature seem to give a positive answer and this solution is still low cost. In this paper, we want to discover the corresponding patterns that exist between binocular image differences and the original 3D morphology so that a low-cost method can be used to reconstruct the 3D scene. Binocular matching simulates the way a mammal's eyes work; the ultimate goal is to find the disparity of each pixel in the left or right image to reason backward the 3D structure. Although the biological vision system can perceive the world rapidly, the real-time effectiveness and applicability of binocular matching algorithms have restricted the application of the algorithm. In 3D scenes, the human vision first identifies the distances between different objects, which is sufficient for grabbing and moving, and then identifies the distance differences between different positions within the same object if needed. In order to avoid introducing high-level semantic information, we extract the stimuli in row colour segments. In order to simplify the calculation, we assume that the distance variation within the same stimulus is linear (the object is not curved) and that the colours of the left and right matchable stimuli are the same or similar; there are no objects too close to the camera in the image. Stimulus sources from the external world can be extracted by horizontal scanning. As binocular images capture the same stimulus source, the images can also be processed by horizontal row pixels. Adjacent stimuli can be grouped into one stimulus bar according to colour, so the pixel segment can also be performed according to colour (In this paper, the stimulus sources with the colour-identical or colour-gradient are combined into one stimulus bar, and the pixels with the colour-identical or colour-gradient are combined into one pixel segment). Furthermore, there is a natural topological consistency of the one-dimensional colour distribution in the same row of the left and right images. This paper utilises these properties to propose a new method. The stereo matching method can be said to consist of a global algorithm and a local algorithm [6]. The region matching method uses a pixel and its surrounding pixels to construct clues for match and then carries out the matching. The construction of matching clues is based on two-dimensional (2D) images. There are three ways to build: (1) using all or some pixels in the region directly, if n represents the number of pixels, the time complexity is O(n2); (2) using a tree structure to find pixels in the region with time complexity O(log n); (3) using randomly selected points in the region with time complexity O(n2), so the time complexity of constructing all matching clues is [O(log n) O(n2)]*O(n2). The time complexity of the entire matching process is [O(log n) O(n2)]*O(n2) + O(n2). Global matching algorithms take longer than region matching algorithms. The method in this paper generates pixel segments in one-dimensional rows and takes pixel segments as matching clues. The advantage of using pixel segments is that it dramatically reduces the time complexity. If n represents segment (in the worst case, a segment consists of one pixel), the time complexity of constructing matching clues is O(n)*O(n2), and the time complexity of pixel matching is O(n2). Therefore, the time complexity of the entire matching process is O(n)*O(n2)+ O(n2). The contributions of this paper are as follows: (1) this paper proposes a new theory that establishes the relationship between 3D spatial stimulus bars and 2D image pixel segments; (2) this paper proposes a low-time complexity algorithm that can be used on lightweight devices; (3) this paper proposes an algorithm that can be used for industrial robot guidance. 2 RELATED WORK Stereo matching includes traditional and deep learning methods. Local matching algorithms rely on local texture features. They have high efficiencies, as with the older local matching algorithm, block matching [7], and census-based stereo matching [8], BRIEF-based algorithm [9], and A Non-Local Cost Aggregation Method for Stereo Matching (NLCA) [10] algorithms. The census algorithm takes the relationship between the centre point and the surrounding pixels to generate a binary code stream for matching. The BRIEF descriptor uses a randomised point selection to generate binary streams to match. The NLCA algorithm uses a tree structure to build descriptors for matching. Local matching algorithms deal poorly with large low-texture areas and object occlusions. Global algorithms use global information for better accuracy. Global algorithms tend to be slow, but the segmentation contour is apparent and accurate. For example, Semi-Global Matching (SGM) and Semi-Global Block Matching (SGBM) [11] use a dynamic planning method to integrate global information. The results are accurate, but it is easy to produce holes. Efficient Large-Scale Stereo Matching (ELAS) [12] is fast, but its anchor point method is not robust. The method easily leads to the adhesion of the edge part of the object. LS-ELAS [13] is an improvement on ELAS, but the effect is similar to that of ELAS in general images. MGM (A Significantly More Global Matching for Stereovision) [14], an improved method based on SGM, solves the problem of SGM producing low-amplitude fringes. However, it will produce many matching errors. Mukherjee et al. [15] proposed a method that uses only 18% of the pixels of the entire image to build a block area to generate a depth map. It is fast, but the results are not very good. Xu et al. [16] proposed a pyramid-tree structure that finds cross-regional connections between regions with similar colours and depths. Some machine learning algorithms use limited rules and are classified as traditional. Yan et al. [17] used Markov random field and Bayesian prediction models to achieve stereo matching. Vázquez-Delgado et al. [18] first estimated disparity maps with different window sizes using the sum of absolute differences as a local correlation metric and then using Sobel gradient and Fuzzy Inference System to get the disparity image. Deep learning has developed rapidly [19] since the connected neural network (CNN) [20] was first used in stereo matching research. The first end-to-end deep stereo matching approach, DispNet [21], produces a shared dataset, which remains essential for pre-training deep learning algorithms until now. Mao et al. upgraded the CNN network [22] and achieved semi-dense stereo matching using dual CNNs. Guo et al. [23] proposed construction of the cost volume by group-wise correlation to enhance performance. Dominik et al. [24] proposed a lightweight fully convolutional densely CNN for stereo estimation. Poggi et al. [25] introduced weakly guided stereo matching, leveraging a small number of sparse yet reliable depth measurements retrieved from an external source for training. Alessio et al. [26] proposed unsupervised stereo matching algorithms with increased adaptability to the real world without training data. Wang et al. [27] proposed a generic disparity-attention mechanism that learns stereo correspondence in image pairs with large disparity variations in an unsupervised manner. However, current unsupervised or weakly supervised algorithms have results inferior to those of supervised algorithms. In our method, a pixel segment consists of neighbour pixels according to colour, so the construction of matching clues has very low time complexity, similar to that of the local matching algorithm. At the same time, the length of a pixel segment can change dynamically according to the situation. Because the colour topology consistency on the left and right rows is utilised in the matching process, the matching processing has the accuracy of the global algorithm. In addition, because data from different rows in the image are used in post-processing, the method has advantages similar to global algorithms. Finally, the method in this paper does not need to use datasets for training, and its hardware requirements are lower. 3 METHOD Figure 1 shows the basic principle of our method. A real 3D scene is projected to a binocular camera. According to the rule of lens imaging, Ol and Or are the left and right foci, respectively, and the solid lines represent paths of ray projection. To avoid the inconvenience caused by 'left and right, up and down reversal of image and object', this paper inverts the imaging plane to the front of the lens. The ground truth image is used to represent the distance of various stimulus sources in the scene. Left and right images are left and right shooting views of the 3D scene. The left and right images have been row-aligned through calibration and correction of the binocular camera. There are some differences between the left and right images, which are due to the perspective projection distinctions caused by the depth diversities of the original stimulus. By utilising left-to-right difference, we can reason backward the original depth of the real stimulus of the 3D scene. Each pixel row in the left and right images are segmented according to the principle of colour similarity and adjacency. Several consecutive pixels with an identical colour or the gradient (difference of 1) are regarded as one segment (In fact, the colour values of neighbouring pixels belonging to different segments are very different). In this way, a pixel row of the left and right images can be divided into several pixel segments. Some elements on the left and right pixel segments are used as matching clues to analyse whether the left and right pixel segments determine a matching relation, and if so, obtain the matching type. Because several matchable pixel segment pairs can be obtained according to non-crossing mapping, there are many matching types, and each matching type can reason backward the corresponding stimulus bar. This method aims to generate the depth map by finding all of the matchable pixel segments and reasoning backward the corresponding stimulus bars. FIGURE 1Open in figure viewerPowerPoint Basic principle of the method Types of pixel segments and type of stimulus bars In this paper, a stimulus bar in which all of the stimuli have the same colour is called a colour-identical stimulus bar (CIB). A stimulus bar with approximate but different stimuli colours is called a colour-gradient stimulus bar (CGB). A pixel segment in which all of the pixels have the same colour is called a colour-identical pixel segment (CIS). A segment with approximate but different pixel colours is called a colour-gradient pixel segment (CGS). Multiple colour stimuli or pixels are combined to form multiple stimulus bars or pixel segments. As shown in the Figure 2a, f is the focal length of two cameras, and b is the baseline of two cameras. (B1, …, Bk, …, Bn) are stimulus bars, which are mapped to the left and right pixel segments (L1, …, Li, …, Ln) and (R1, …, Rj, …, Rn). Because the information in a pixel segment is not needed while matching left and right pixel segments, we simply extract the endpoints' colour and length of the pixel segments Li and Rj to achieve the matching. FIGURE 2Open in figure viewerPowerPoint The schematic diagram of imaging: (a) imaging of stimulus bars; (b) geometric representation of the parameters of a stimulus bar We hope to find a sequence consistency correspondence between the left segment (L1, …, Li, …, Ln) and the right segments (R1, …, Rj, …, Rn). Li and Rj should meet some obvious constraints, such as that the pixel segments with significant colour differences cannot match. Figure 2b is a geometric representation of matched segments in the process of binocular imaging. The solid grey box represents the stimulus bar that blocks the adjacent bar. The dotted grey box represents the stimulus bar that does not block the adjacent bar. In the figure, vl1, vl2, vr1, vr2 are the abscissas of the left and right imaging points at the two ends of the stimulus source. C(vl1),C(vl2),C(vr1) and C(vr2) are pixel colours of vl1, vl2, vr1 and vr2 respectively. P1(x1, z1),P2(x2, z2),P3(x3, z3) and P2(x2, z2) are stimulus source points in the space corresponding to vl1, vl2, vr1, and vr2. The two boxes indicated by the arrow show the pixel segment of the left and right images. D1 represents the disparity of the leftmost end that the pixel segment can match; D2 represents the disparity of the rightmost end that the pixel segment can match. If the condition is C v l 1 = C v r 1 C v l 2 = C v r 2 , it is named 'the colours at both ends of the left and right segments correspond equal to each other' (to reduce word space, it is called 'two sides equal'). If the condition is C v l 1 = C v r 1 C v l 2 ≠ C v r 2 or C v l 1 ≠ C v r 1 C v l 2 = C v r 2 ., it is called 'the colours of the two ends of the left and right segments are only equal for one end' (it is called 'one side equal'). If the condition is abs(vl2−vl1) = abs(vr1−vr2), it is called 'the left and right segment lengths are equal' (it is called 'length equal'). If the condition is abs(vl2−vl1) ≠ abs(vr1−vr2), it is called 'the left and right segment lengths are not equal' (it is called 'length not equal'). Because there is no matching relation between CIS and CGS, a pair of matching pixel segments is either CGS or CIS, and so if the condition is C v l 1 = C v l 2 C v r 1 = C v r 2 C v l 1 = C v r 1 or C v l 2 = C v 2 ., it is named 'both left and right segments are CIS' (it is called 'both CIS'). If the condition is C v l 1 ≠ C v l 2 C v r 1 ≠ C v r 2 C v l 1 = C v r 1 or C v l 2 = C v r 2 ., it is called 'both left and right segments are CGS' (it is called 'both CGS'). Using 'permutation and combination' according to the following three criteria, the types of all the pixel-segment pairs that establish a matching relationship are then available. 1. 'Two sides equal'/'one side equal'. 2. 'length equal'/'length not equal'. 3. 'Both CIS'/'Both CGS'. Eight types of matching pixel-segment pairs are obtained. When two ends of a pixel segment have an identical colour, the situation that 'only one end of the left and right pixel segments are equal' does not occur, so two situations are removed. The remaining six cases are shown in the Figure 3a. In Section 'Description of the theory', the specific mathematical analyses of various types are given. FIGURE 3Open in figure viewerPowerPoint The types of pixel segment pairs and stimulus bars. CGB, colour-gradient stimulus bar; CGS, colour-gradient pixel segment; CIB, colour-identical stimulus bar; CIS, colour-identical pixel segment Stimulus bars are analysed as follows. If the condition is 'P1P2 parallel to b', it is called 'parallel'; otherwise, it is called 'tilt'. If the condition is 'P1 and P2 are colour-identical', it is called the 'CIB'; otherwise, it is called 'CGB'. If the condition is 'adjacent stimulus bar blocks P1P2', it is called 'blocked', otherwise, it is called 'unblocked'. By using 'permutation and combination', all of the stimulus bar types are shown in Figure 3b. Because a pair of left and right matching pixel segments corresponds to one stimulus bar, the problem of reasoning backward a 3D depth map from two 2D images is equivalent to solving the problem of how to map from six-pixel segments to eight-stimulus bars. Description of theory This section explains how to reason backward eight stimulus bars from six-pixel segments. 3.2.1 Pixel segment pair: Two sides equal, length equal, and both CIS The mathematical conditions of the type of pixel segment pair are C v l 1 = C v r 1 C v l 2 = C v r 2 C v l 1 = C v l 2 C v r 1 = C v r 2 a b s v l 1 − v l 2 = a b s v r 1 − v r 2 (1) Let us analyse which type of stimulus bar meets the requirements of this type of pixel segment pair. First of all, the stimulus bars, which are CGB, are excluded because 'colour-gradient' does not meet the requirement that the pixel segment is colour-identical. In the case that the stimulus bar is 'parallel, CIB, blocked', the length of the corresponding left and right pixel segments must not be equal, which does not meet the requirements of this type of pixel segment pair; therefore, it is excluded. For the case of 'parallel, CIB, unblocked', the condition of the pixel segment pair is satisfied. When the stimulus bar is 'tilt, CIB, blocked', the pixel segment pair's condition is also satisfied. In the case of 'tilt, CIB, unblocked', the length of the corresponding left and right pixel segments must be different, which does not meet the conditions of the pixel segment pair; therefore, it is excluded. Accordingly, the pixel segment pair corresponds to two kinds of stimulus bars: 'parallel, CIB, unblocked' or 'tilt, CIB, blocked'. There are three types of 'blocked': 'left unilateral blocked', 'right unilateral blocked', and 'bilateral blocked', as can be seen in Figure 4. FIGURE 4Open in figure viewerPowerPoint Stimulus bars corresponding to the situation (the colours at both ends of the left and right segments correspond equal to each other, the left and right segment lengths are equal, and both left and right segments are CIS): (a) 'Parallel, CIB, unblocked'; (b) 'Tilt, CIB, bilateral block'; (c) 'Tilt, CIB, left unilateral blocked'; and (d) 'Tilt, CIB, right unilateral blocked'. CIB, colour-identical stimulus bar; CIS, colour-identical pixel segment As shown in Figure 4, when the stimulus bar is CIB, and the left and right pixel segments have the same length, the left and right pixel segments are the same. It is impossible to distinguish whether the stimulus bar is 'parallel'. This phenomenon is caused by the projection of the stimulus bar of the identical colour onto the 2D image. The fundamental reason is that the relationship between P1 and P3, P2, and P4 cannot be determined. In this case, we must find a feasible solution. As shown in Figure 5, when the situation of the stimulus bar is 'tilt, CIB', the number of angles of the stimulus bar relative to 'b' is infinite. The concrete angle cannot be determined according to the left and right pixel segments. In fact, the angle is not very large. Once the angle is too large, the environment light will change the P1's or P2's colour, and P1P2 becomes a CGB. In addition, the number of angles of the 'parallel' stimulus bar is only one. Therefore, the best solution is to transform 'tilt' to 'parallel', which is shown in Figure 4. Figure 4b–d are equivalent to Figure 4a. In this case, D1 = D2, and the disparities in the segment are calculated as D 1 = D 2 = D n = v l 1 − v r 1 (2)where Dn represents the disparity of each pixel in the segment. In Figure 5a, 'tilt, CIB, unilateral blocked', the stimulus bar rotates at the origin of P1. The distance of the stimulus bar can be determined through P1. In contrast, for the case of 'tilt, CIB, bilateral blocked' in Figure 5b, the distance of the stimulus bar cannot be determined. A feasible solution is to detect homologous pixel segments from both sides in post processing. As shown in Figure 6, if one side or both sides have colour-identical or colour-gradient as the pixel segment, the disparity in the pixel segment is set as the disparity on the side. FIGURE 5Open in figure viewerPowerPoint The situation of (a) 'tilt, CIB, unilateral blocked' and (b) 'tilt, CIB, bilateral blocked'. CIB, colour-identical stimulus bar FIGURE 6Open in figure viewerPowerPoint 'Colour-identical stimulus bar, bilateral blocked' and its two sides 3.2.2 Pixel segment pair: Two sides equal, length not equal, and both CIS The mathematical conditions of the type of pixel segment pair are C v l 1 = C v r 1 C v l 2 = C v r 2 C v l 1 = C v l 2 C v r 1 = C v r 2 a b s v l 1 − v l 2 ≠ a b s v r 1 − v r 2 (3) This type of pixel segment can reason backward three types of stimulus bars: 'parallel, CIB, blocked', 'tilt, CIB, blocked', and 'tilt, CIB, unblocked'. As shown in Figures 7-9, the left and right images are the same between 'tilt, CIB, unblocked' and 'parallel, CIB, blocked'. The left and right images are the same between 'tilt, CIB, unilateral blocked' and 'parallel, CIB, bilateral blocked'. When the cases of stimulus bars are 'bilateral blocked', and the bars have different angles, the left and right images are the same. Therefore, it is impossible to distinguish whether the stimulus bar is tilt from the images, and the tilt angle is uncertain. The situations of 'tilt, CIB' are all replaced by the equivalent situation of 'parallel, CIB'. Figures 7-9 show the corresponding details. 'Tilt, CIB, unblocked' is equivalent to 'parallel, CIB, unilateral blocked'. 'Tilt, CIB, unilateral blocked' is equivalent to 'parallel, CIB, bilateral blocked'. 'Tilt, CIB, bilateral blocked' is equivalent to 'parallel, CIB, bilateral blocked'. FIGURE 7Open in figure viewerPowerPoint Equivalent schematic diagram of 'tilt, colour-identical stimulus bar, unblocked' FIGURE 8Open in figure viewerPowerPoint Equivalent schematic diagram of 'tilt, colour-identical stimulus bar, unilateral blocked' FIGURE 9Open in figure viewerPowerPoint Equivalent schematic diagram of 'tilt, colour-identical stimulus bar, bilateral blocked' In these cases, D1 ≠ D2. The lengths of the left and right pixel segments are different. For the case of 'unilateral blocked', if the left stimulus bar blocks the stimulus bar, the pixel segment length increases from left to right; otherwise, the reverse is true. Therefore, the disparity of 'left and right blocked' is calculated as follows: D 1 = v l 2 − v r 2 D 2 = v l 2 − v r 2 D n = v l 2 − v r 2 D 1 = v l 1 − v r 1 D 2 = v l 1 − v r 1 D n = v l 1 − v r 1 . (4) For the case of 'bilateral blocked', the disparity of this segment must be different from D1 and D2, but it cannot be determined at this point. The disparity can be temporarily set as min(D1, D2), and the subsequent processing is the same as that in Figure 6. 3.2.3 Pixel segment pair: Two sides equal, length not equal, and both CGS The mathematical conditions of the type of pixel segment pair are C v l 1 = C v r 1 C v l 2 = C v r 2 C v l 1 ≠ C v l 2 C v r 1 ≠ C v r 2 a b s v l 1 − v l 2 ≠ a b s v 1 − v r 2 (5) In this pixel segment, one kind of stimulus bar can be obtained: 'tilt, CGB, unblocked', as shown in Figure 10. The disparity is calculated as D 1 = v l 2 − v l 1 D 2 = v r 2 − v r 1 D n = D n ∗ max ( D 1 , D 2 ) − min ( D 1 , D 2 ) a b s v l 2 − v l 1 − v 2 − v r 1 ( D 1 > D 2 ) D 1 = v l 2 − v l 1 D 2 = v r 2 − v r 1 D n = D n ∗ max ( D 1 , D 2 ) − min ( D 1 , D 2 ) a b s v l 2 − v / 1 − v r 2 − v r 1 ( D 1 < D 2 ) (6) FIGURE 10Open in figure viewerPowerPoint Situation of 'tilt, colour-gradient stimulus bar, unblocked' 3.2.4 Pixel segment pair: One side equal, length not equal, and both CGS The mathematical conditions of the type of pixel segment pair are C v l 1 = C v r 1 C v l 2 ≠ C v r 2 C v l 1 ≠ C v l 2 C v r 1 ≠ C v r 2 a b s v l 1 − v l 2 ≠ a b s v r 1 − v r 2 o r C v l 1 ≠ C v r 1 C v l 2 = C v r 2 C v l 1 ≠ C v l 2 C v r 1 ≠ C v r 2 a b s v l 1 − v l 2 ≠ a b s v l 1 − v r 2