* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

# Download Computing upper and lower bounds of rotation angles from digital

Survey

Document related concepts

Cardinal direction wikipedia , lookup

History of trigonometry wikipedia , lookup

Multilateration wikipedia , lookup

Integer triangle wikipedia , lookup

Pythagorean theorem wikipedia , lookup

Rational trigonometry wikipedia , lookup

Line (geometry) wikipedia , lookup

Perceived visual angle wikipedia , lookup

Trigonometric functions wikipedia , lookup

Euclidean geometry wikipedia , lookup

Rotation matrix wikipedia , lookup

Rotation formalisms in three dimensions wikipedia , lookup

Rotations in 4-dimensional Euclidean space wikipedia , lookup

Plane of rotation wikipedia , lookup

Transcript

Computing upper and lower bounds of rotation angles from digital images Yohan Thibault, Yukiko Kenmochi, Akihiro Sugimoto To cite this version: Yohan Thibault, Yukiko Kenmochi, Akihiro Sugimoto. Computing upper and lower bounds of rotation angles from digital images. Pattern Recognition, Elsevier, 2009, 42 (8), pp.1708-1717. <10.1016/j.patcog.2008.12.027>. <hal-00622416> HAL Id: hal-00622416 https://hal-upec-upem.archives-ouvertes.fr/hal-00622416 Submitted on 18 Feb 2013 HAL is a multi-disciplinary open access archive for the deposit and dissemination of scientific research documents, whether they are published or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers. L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés. Computing Upper and Lower Bounds of Rotation Angles From Digital Images Yohan Thibault a,b Yukiko Kenmochi b Akihiro Sugimoto a,b a National b Université Institute of Informatics, Japan Paris-Est, Laboratoire d’Informatique de l’Institut Gapard-Monge, UMR CNRS 8049, ESIEE Paris, France Abstract Rotations in the discrete plane are important for many applications such as image matching or construction of mosaic images. We suppose that a digital image A is transformed to another digital image B by a rotation. In the discrete plane, there are many angles giving the rotation from A to B, which we called admissible rotation angles from A to B. For such a set of admissible rotation angles, there exist two angles that achieve the lower and the upper bounds. To find those lower and upper bounds, we use hinge angles as used in [7]. A sequence of hinge angles is a set of particular angles determined by a digital image in the sense that any angle between two consecutive hinge angles gives the identical rotation of the digital image. We propose a method for obtaining the lower and the upper bounds of admissible rotation angles using hinge angles from a given Euclidean angle or from a pair of corresponding digital images. 1 Introduction Rotations in the discrete plane are required in many applications for image computation such as image matching or construction of mosaic images [4]. For the moment, the most popular method to estimate the rotation angle is to approximate the rotation matrix by minimizing errors [4]. In the continuous plane, the Euclidean rotation is well-defined and possesses the property of bijectivity. This implies that for two angles γ1 , γ2 and a set of points A, if the Euclidean rotation with angle γ1 applied to A gives the Email addresses: [email protected] (Yohan Thibault), [email protected] (Yukiko Kenmochi), [email protected] (Akihiro Sugimoto). Preprint submitted to Pattern Recognition August 1, 2008 same result as the Euclidean rotation with angle γ2 applied to A, then we have γ1 = γ2 . In the discrete plane, however, two different points can arrive at the same grid point after a discretization of the Euclidean rotation (DER). Because of this reason, two different angles can give the same rotation result for a set A of grid points 1 . In other words, we can define a set of admissible rotation angles S such that any angle in S gives the same rotation result for A. Note that S depends on A. The two most interesting angles in S are the lower and the upper bounds because with only these two angles we can deduce the other angles in S. This paper aims to find these two angles from a given rotation angle or from two given corresponding sets of grid points. In order to identify the exact bounds, we should not involve any computation error. Thus, we work with discrete geometry tools which guarantee to avoid computation with real numbers. Moreover, because we assume that our data are discretized from continuous images of an object, we enforce the property that the discrete rotation 2 between two different sets of grid points gives the same result as DER. Some work on discrete rotations already exists. The most widely used discrete rotation in the beginning is the CORDIC algorithm [10]. The rotation angle is estimated with addition or subtraction using pre-computed values to achieve the required precision. It gives almost the same result as DER but an approximation of the angle. Andres described in [1],[2] some discrete rotations such as the rotation by discrete circles, the rotation by Pythagorean lines or the quasi-shear rotation. Computation executed during these rotations are exact. However, because they preserves the bijectivity, they cannot give the same results as DER. On the other hand, Nouvel and Rémila proposed in [7] another discrete rotation based on hinge angles, which gives the same results as DER. It is known that a sequence of hinge angles is a set of particular angles determined by a digital image in the sense that any angle between two consecutive hinge angles gives the identical rotated digital image. This means that hinge angles correspond to the discontinuity of DER. Nouvel and Rémila showed that each hinge angle is represented by an integer triplet, so that any discrete rotation of a digital image is realized only with integer calculation. Because their algorithm gives the same rotation results as DER, we see that hinge angles represented by integer triplets give sufficient information for executing any digital image rotation. In this paper, we propose a discrete method for finding the lower and the 1 Accordingly, DER is not bijective. A discrete rotation is a rotation designed for the discrete space. It transforms a set of grid points into another set of grid points. 2 2 upper bounds of admissible rotation angles. Our method uses hinge angles because we can obtain the same result as DER and because they allow exact computations. The input data of our method is two sets of grid points where point correspondences across the two sets are known. The output is two hinge angles that give the lower and the upper bounds of the admissible rotation angles for the two sets. Note that a part of this work was presented in [9]. 2 Discrete Rotation It can appear strange that the Euclidean rotation used for the common task in geometric computation is problematic for many applications. Data are usually represented in the computer by integers or rational numbers. But the Euclidean rotation which requires sine and cosine functions is designed for real numbers. Therefore, the computation results given by a Euclidean rotation are, in most cases, represented by floating numbers which are approximations of real numbers. When an algorithm uses the Euclidean rotation for integer or rational data and then converts the obtained floating values into integer or rational numbers, precisions of these results may decrease. Another problem also arises for rotations in discrete space. It is well known that the Euclidean rotation is bijective and transitive. But when we convert the result obtained by the Euclidean rotation into a discrete space, it is easy to see that these two properties are lost [5,8]. The loss of these two properties leads to research on the discrete rotation. There are two ways to compute a discrete rotation: using floating numbers and using only integers. The first way, in most cases, is easiest and allows us to use floating computation followed by the rounding function to obtain the set of grid points as the output. The main problem with the rounding function is the approximation due to the loss of the value after the decimal point. This approximation leads to lack of precision during computation. The second way does not have this problem, but avoiding floating numbers implies that sine and cosine functions should not be used. Computing rotations without trigonometrical functions requires development of a new method, which is a tough problem. 3 Hinge Angles We consider grid points in Z2 as the centers of pixels and rotate them in such a way that the rotation center has integer coordinates. Hinge angles are particular angles that make some points in Z2 rotated to points on the frontier 3 between adjacent pixels. In this section, we give the definition of hinge angles and their properties related to Pythagorean angles. 3.1 Definition of Hinge Angles R Let x = (x, y) be a point in 2 . We say that x has a semi-integer coordinate if x + 12 ∈ or y + 21 ∈ . The set of points each of which has a semi-integer coordinate is called the half-grid and is denoted by H . Thus, H represents the set of points on the frontiers of all pixels whose centroids are points in 2 . Z Z Z Definition. 1 An angle α is called a hinge angle if at least one point in exists such that its image by the Euclidean rotation with α belongs to H . Z2 Because H can be seen as the discontinuity of the rounding function, hinge angles can be regarded as the discontinuity of the discretized Euclidean rotation. More simply, hinge angles determine a transit of a grid point from a pixel to its adjacent pixel during the rotation. The following theorem is important because it shows that we can represent every hinge angle with three integers. Theorem. 2 ([7]) An angle α is a hinge angle for a grid point (P, Q) ∈ if and only if there exists K ∈ such that Z Z2 (1) 2Q cos α + 2P sin α = 2K + 1. Geometrically, a hinge angle α is formed by two rays going through (P, Q) and a half-grid point (K + 12 , λ) where the two rays share the origin as their endpoints as shown in Figure 1 (left). This theorem indicates that all calculations related to hinge angles can be done only with integers. Hereafter, α indicates a hinge angle. We denote by α(P, Q, K) q the hinge angle generated by an integer triplet (P, Q, K). Setting λ = P 2 + Q2 − (K + 21 )2 , we easily derive the following equations from (1) and Figure 1 (left), cos α = P λ + Q(K + 12 ) , P 2 + Q2 sin α = 4 P (K + 21 ) − Qλ . P 2 + Q2 (2) Fig. 1. A hinge angle α(P, Q, K) (left) and four symmetrical hinge angles (right). Note that we have a case where a half-grid point is (λ, K + 12 ) instead of (K + 12 , λ). In such a case, the above equations become cos α = Qλ + P (K + 21 ) , P 2 + Q2 sin α = P λ − Q(K + 12 ) . P 2 + Q2 (3) The symmetries on hinge angles are important because it allows us to restrict rotations in the first quadrant of the circle such that α ∈ [0, π2 ]. Corollary. 3 Each triplet (P, Q, K) corresponds to four symmetrical hinge where k = 0, 1, 2, 3. angles α + πk 2 Figure 1(right) gives an example of Corollary 3. In order to distinguish the case of (K + 21 , λ) from that of (λ, K + 12 ), we change the sign of K; we use α(P, Q, K) for the case of (K+ 21 , λ), and α(P, Q, −K) for the case of (λ, K+ 21 ). Because the symmetries allow us to restrict α to the range [0, π2 ], as mentioned above, we may assume that K is positive. 3.2 Properties Related to Pythagorean Angle Because hinge angles are strongly related to Pythagorean angles, certain properties of Pythagorean angles are required to prove some properties of hinge angles. Thus, we first give the definition of Pythagorean angles and their properties. Definition. 4 An angle θ is called Pythagorean if and only if both its cosine and sine belong to the set of rational numbers . Q 5 We can deduce from Definition 4 that a Pythagorean angle θ is represented by an integer triplet (a, b, c) such that b sin θ = . c a cos θ = , c (4) In the following, θ indicates a Pythagorean angle. The lemma below for Pythagorean angles is well known. Lemma. 5 Let (a, b, c) be an integer triplet generating a Pythagorean angle where |c| = max{| a |, | b |, | c |}. If gcd(a, b, c) = 1, then c is odd. If gcd(a, b, c) = i, then gcd( ai , bi , ci ) = 1 and the triplet of integers ( ai , bi , ci ) generates the same Pythagorean angle as (a, b, c). Theorem. 6 Let Eh be the set of hinge angles and Ep be the set of Pythagorean T angles. Then we have Eh Ep = ∅. Proof. Assume that there exists an angle α such that α ∈ Eh and α ∈ Ep . Since α ∈ Ep , we can find an integer triplet (a, b, c) generating α where gcd(a, b, c) = 1. By substitution of (4) in (2), we obtain 2 Qa + P b = 2K + 1, c (5) b from which we derive 2 Qa+P ∈ Z. Because we know that c is odd according c Qa+P b to Lemma 5, we obtain c ∈ Z. However, this contradicts the fact that for any pair n, m ∈ Z, we never have 2n = 2m + 1. Therefore α cannot belong to Eh and Ep simultaneously. This theorem shows that it is not possible to rotate a point (i, j) ∈ Z2 to a point (x, y) such as x = i + 12 , y = j + 21 , if the angle of the rotation is a hinge angle. The next theorem shows an interesting relation between hinge angles and Pythagorean angles. Theorem. 7 ([6]) Let θ be a Pythagorean angle and α be a hinge angle. The angle α′ = α + θ is a hinge angle. 6 4 Computing the Lower Bound Rotation Angle from a Pythagorean Angle Because we work here in the discrete space, the rotation of a grid point by two different angles can give the same result. Namely, two different angles give the same result after the rotation of a grid point followed by discretization. Generally there exists a range of angles in which the same result is obtained. We thus define admissible rotation angles, abbreviated hereafter by ARA, to represent this range of angles. In this section, we propose a method for computing the lower bound αinf of ARA for a given digital image from a given angle. Note that with minor modifications, this method can also find the upper bound αsup of ARA. Thus applying any rotation to the given digital image with an angle between αinf and αsup gives the same result. We note that both αinf and αsup are hinge angles. Our input is a Euclidean angle. However, we can replace it by a Pythagorean angle because there exists a method with linear time complexity O(m) to approximate a given Euclidean angle with a Pythagorean angle with a precision of 101m [3], where m is a fixed integer that represents the quality of approximation. Below, we assume that we are given a Pythagorean angle, as the one in [7]. Nouvel and Rémila presented a method for computing all possible hinge angles for a grid point or a pixel in a digital image [7]. Their method can be used for finding our interesting hinge angle which is the lower bound of the admissible rotation angles. Its time complexity is O(n log(n)) where n is the number of all hinge angles for a given grid point. Note that n depends on the coordinates of the grid point. 4.1 Computing the Lower Bound Rotation Angle for a Grid Point √ For each grid point p = (P, Q) ∈ Z2 , there are less than n = ⌊ P 2 + Q2 + 12 ⌋ different hinge angles in each quadrant [7]. We can compare in magnitude any pair of hinge angles. This means that we have a totally ordered set {α(P, Q, K1 ), α(P, Q, K2 ), ..., α(P, Q, Kn )} of hinge angles in the ascending order where Ki ∈ Z. Given a Pythagorean angle θ, in order to find the lower bound rotation angle α(P, Q, Ki ) such that α(P, Q, Ki ) < θ < α(P, Q, Ki+1 ), we use a tree structure. The binary search allows us to find α(P, Q, Ki ) in O(log(n)), providing that we can compare a hinge angle with a Pythagorean angle in a constant time. The algorithm is described in Figure 2. 7 Function: Find the lower bound rotation angle for a point Input (Point p(P, Q), Pythagorean angle θ) Output (α(P,√ Q, K)) var Kmax = ⌊ P 2 + Q2 − 1⌋; var Kmin = 0; min var K = ⌊ Kmax +K ⌋; 2 While (Kmax − Kmin 6= 1) if (α(P, Q, K) > θ) Kmax = K; else Kmin = K; min K = ⌊ Kmax +K ⌋; 2 end while return α(P, Q, K); Fig. 2. Function for the lower bound rotation angle for a point. The following theorem shows that the comparison between a hinge angle and a Pythagorean angle is executed in a constant time. Theorem. 8 Let α be a hinge angle and θ be a Pythagorean angle. We can check whether α > θ in a constant time with integer calculation. Proof. Let α(P, Q, K) be a hinge angle in [0, π2 ] and θ(a, b, c) be a Pythagorean angle in [0, π2 ]. From (2) and (4), we obtain cos α − cos θ = Q(K + 21 ) + P λ a − . P 2 + Q2 c If θ is greater than α, cos α − cos θ > 0. Thus cQ(2K + 1) − 2a(P 2 + Q2 ) > −2cP λ. (6) Since we know that c, P, λ are positive, the right-hand side of (6) is always negative. Thus, if the left-hand side of (6) is not negative, then θ > α. Otherwise, we take the square of (6), so that we only have to check whether the following inequality holds: h cQ(2K + 1) − 2a(P 2 + Q2 ) i2 < 4c2 P 2 λ2 . q (7) Note that because λ = P 2 + Q2 − (K + 21 )2 , we see that 4λ2 in the righthand side of (7) contains only integer values. Therefore, we can verify (7) with 8 integer calculation. If it is true, θ > α; otherwise, α > θ. Note that because of Theorem 6, it is impossible to obtain θ = α. We claim that this comparison of a hinge angle and a Pythagorean angle is executed in a constant time because even in the worst case, we only have to check two equations (6) and (7). We mention the importance of the rotation with angle π2 and its multiplications. In fact, if the angle of a rotation is equal to π2 , π, 3π , we just have to flip 2 x and/or y-coordinates by changing their signs. It gives the justification that we can restrict the input angle θ to 0 < θ < π2 . 4.2 Computing the Lower Bound Rotation Angle for a Set of grid Points In this subsection, we present an algorithm for computing the lower bound rotation angle from a given Pythagorean angle θ for a digital image consisting of m grid points A. The output is a triplet of integers that represents the lower bound rotation angle for A. We note that the lower bound rotation is a hinge angle. The algorithm computes all hinge angles for all points in A, and sorts them to keep the largest one. More precisely, we first compute the lower bound rotation angle for the first point of A, and store it as a reference. Then, we compute the lower bound rotation angle for the second point in A and compare it with the reference to keep the larger one. After repeating this procedure for all points in A, our algorithm returns the lower bound rotation angle α such that α < θ. The time complexity of this algorithm is O(m log(n)) because we call m times the binary search (Figure 2) whose time complexity is O(log(n)). Figure 3 illustrates our algorithm. As shown in Theorem 9, the comparison between two hinge angles is realized in a constant time, so that our algorithm does not change the global complexity. Theorem. 9 Let α1 , α2 be two hinge angles. We can check whether α1 > α2 in a constant time and with integer calculation. Proof. Let α1 (p, q, k) and α2 (r, s, l) be two hinge angles in [0, π2 ]. From (3) we obtain cos α1 − cos α2 = p(k + 12 ) + qλ1 r(l + 12 ) + sλ2 − . p2 + q 2 r 2 + s2 If α2 is greater than α1 , cos α1 − cos α2 > 0. Thus 9 (8) (r2 + s2 )p(2k + 1) − (p2 + q 2 )r(2l + 1) > 2(p2 + q 2 )sλ2 − 2(r2 + s2 )qλ1(9) . If the left-hand side of (9) is negative and the right-hand side of (9) is positive, then α1 > α2 . If the left-hand side of (9) is positive and the right-hand side of (9) is negative, then α2 > α1 . We can easily check the signs of the lef-hand side and the right-hand side of (9) with integer computation. Note that p, q, k, r, s, l are all positive, and that (2(p2 + q 2 )sλ2 )2 and (2(r2 + s2 )qλ1 )2 contain only integer values. If the signs of the left-hand side and the right-hand side of (9) are the same, we first compute the square of each side and then compare the values to identify which is the greater. For simplicity, we assume that the signs of the both sides of (9) are positive, and let A = (r2 + s2 )p(2k + 1), B = (p2 + q 2 )r(2l + 1), C = (r2 + s2 )q and D = (p2 + q 2 )s. Now (9) is rewritten by A − B > 2Dλ2 − 2Cλ1 . (10) Then we take the square of equation (10) to obtain (A − B)2 − 4(C 2 λ21 + D2 λ22 ) > −8CDλ1 λ2 . (11) If the sign of the left-hand side of (11) is positive, we can deduce that α2 > α1 . Otherwise, taking the square of each side gives us h i2 (A − B)2 − 4(C 2 λ21 + D2 λ22 ) < 64C 2 D2 λ21 λ22 . (12) We note that we can easily verify whether (12) is satisfied with integer computation alone. If (12) is true, α1 < α2 ; otherwise α2 < α1 . The same logic can be applied to the case where the signs of the both sides of (9) are negative. This comparison of a pair of hinge angles is executed in a constant time because in the worst case, we only have to check three equations (9), (11) and (12). 5 Digital Image Rotation by a Lower Bound Rotation Angle This section uses the results obtained in Section 4 to present an algorithm for rotating a digital image with a given lower bound rotation angle. It is already proved in [7] that we can obtain the same result as the DER with respect to the original rotation angle. Note that our input is a lower 10 Function: Find the lower bound rotation angle for a digital image Input (Digital image A, Pythagorean angle θ) Output (hinge angle) var HA, HAtemps \* hinge angle *\; HA = Find the lower bound rotation angle for a point (first point p1 of A, θ); for each p ∈ A\{p1 } HAtemps = Find the lower bound rotation angle for a point (p, θ); if (HA < HAtemps ) HA = HAtemps ; end for Return (HA); Fig. 3. Function for finding the lower bound rotation angle for a digital image. Function: Discrete rotation Input (a digital image A, a lower bound rotation angle α) Output (the rotated image A′ ) var HA : hinge angle; for each p ∈ A HA = Find the lower bound rotation angle for a point (p, α); move p to (K, ⌊λ + 21 ⌋) or (⌊λ + 12 ⌋, K), depending on the sign of K and put it to A′ ; end for Return (A′ ); Fig. 4. Discrete rotation algorithm by a lower bound rotation angle. bound rotation angle and the input of the algorithm presented in Figure 2 is a Pythagorean angle. In spite of this difference, we can apply the same algorithm thanks to Theorem 9, since we are looking for K, which gives the arriving pixel (K, ⌊λ + 21 ⌋), for each pixel (P, Q). The algorithm is presented in Figure 4. It supposes that the center of rotation is the origin. For each point, our algorithm calls the binary search (Figure 2) to find the corresponding hinge angle, which designates its new position. If we consider n as the biggest coordinate of all points in A, we can assume that there are less than 4n2 points in A. Thus we can conclude that the complexity of our algorithm is O(n2 log(n)). The first advantage of our method is that it does not require any floating number calculation. The second advantage is that the exact rotation of the digital image is obtained with only an integer triplet. We need neither matrices nor angles for realizing the rotation. 11 6 Obtaining Admissible Rotation Angles from Two Digital Images Let us assume that a set of grid points in the first image and its corresponding set in the second image are given: A = {p1 , p2 , ..., pl } and B = {q 1 , q 2 , ..., q l } are given where pi corresponds to q i . Given A and B, we obtain a hinge angle pair {αinf , αsup }. This pair of hinge angles is the lower and the upper bounds of the ARA. Therefore each γ such that αinf ≤ γ < αsup is consistent with the point correspondences between A and B. Hereafter, we assume that A is the original point set and B is the rotated point set by angle γ. In this section, we show how to obtain the ARA from A and B. 6.1 Setting Rotation Centers For any rotation, we need to set a rotation center. Without loss of generality, we may choose any grid point in a digital image for the rotation center. Assuming that rotation centers for A and B are p1 and q 1 respectively, we define two translation functions TA and TB such that TA (pi ) = pi − p1 , TB (q i ) = q i − q 1 , for all pi ∈ A, q i ∈ B. We can regard the origin as the rotation centers after these translations. Hereafter, we assume that these translations have been already applied in order to obtain A = {p1 , p2 , ..., pl } and B = {q 1 , q 2 , ..., q l }. 6.2 Computing Lower and Upper Bounds of Rotation Angles from Two Corresponding Point Pairs In this subsection, we consider a special case of two corresponding point pairs. We let A = {p1 , p2 } and B = {q 1 , q 2 } where pi = (Pi , Qi ) and q i = (Ri , Si ). We then define a circle C (p2 ) going through p2 whose center is p1 . Thus the radius of C (p2 ) is r = d(p1 , p2 ) where d(p1 , p2 ) is the Euclidean distance between p1 and p2 . Let us define the half-grid H (q 2 ) around q 2 : 12 Fig. 5. The corners of H (q), namely, four corners of a pixel around q. 1 1 ≤ y ≤ S2 + if x = R2 + 12 , 2 2 1 1 R2 − ≤ x ≤ R2 + if y = S2 + 12 }. 2 2 H (q 2 ) = {(x, y) ∈ H : S2 − We set p1 and q 1 to be the rotation centers. Then, we need to detect intersections between C (p2 ) and H (q 2 ) in order to find a hinge angle pair. We thus investigate which corners of H (q 2 ) are inside of C (p2 ). Setting four corners of H (q 2 ) to be C1 (q 2 ) = (R2 − 12 , S2 − 21 ), C2 (q 2 ) = (R2 − 12 , S2 + 12 ), C3 (q 2 ) = (R2 + 12 , S2 + 12 ), C4 (q 2 ) = (R2 + 21 , S2 − 21 ) as shown in Figure 5, we define a binary function F : F (Ci (q 2 )) = 1 if Ci (q 2 ) is inside of C (p2 ), 0 otherwise. In order to obtain F (Ci (q2 )) with integer calculation, we compare each of k(2(R2 ± 12 ), 2(S2 ± 21 ))k2 with (2r)2 . Note that we may assume that C (p2 ) and H (q 2 ) always intersect with each other. This is because no intersection between C (p2 ) and H (q 2 ) indicates that p2 and q 2 are not corresponding. The following lemmas are needed to prove Theorem 12 below. Lemma. 10 For a circle C (p2 ) centered on p1 , any Ci (q 2 ) = (R2 ± 12 , S2 ± 21 ) cannot be on C (p2 ) for i ∈ {1, 2, 3, 4} where R2 , S2 ∈ Z. Proof. Let r be the radius of C (p2 ). Because C (p2 ) goes through p2 , r2 ∈ Z. Let us assume that Ci (q 2 ) is on C (p2 ). Thus the Euclidean distance between the origin and Ci (q 2 ) is equal to r. This indicates that r2 = (R2 ± 12 )2 +(S2 ± 12 )2 . However, this contradicts the above fact that r2 ∈ Z. Lemma. 11 Let D be a line that belongs to H . If C (p2 ) is a circle centered on p1 . Then, the number of distinct intersections of C (p2 ) and D is two or zero. Proof. Let p2 = (P2 , Q2 ) ∈ Z and the equation representing D be x = i + 21 (i ∈ Z). Letting (x1 , y1 ) be the coordinates of the intersecting point of D and 13 C (p2 ). Then we have x2 + y 2 1 1 x1 = P12 + Q21 , = i + 12 . From these equations, we obtain y12 = P12 + Q21 − (i + 12 )2 . Because P12 + Q21 − (i + 21 )2 does not belong to Z, y1 cannot be equal to 0. Therefore there is two distinct solutions for y1 if P12 +Q21 −(i+ 21 )2 > 0; no solution otherwise. Similar discussion can be done for the case of y = j + 12 . Theorem. 12 If two points p2 and q 2 are corresponding, the circle C (p2 ) and the half-grid H (q 2 ) always have two or four distinct intersections. Proof. In general, if a circle intersects with a square and the center of the circle is not inside of the square, we have 1, 2 or 4 intersections. Having just one intersection means that the circle goes through one corner of the square or the circle is tangential to a half-grid. Lemma 10 shows that the circle cannot goes through one corner. Lemma 11 shows that the circle cannot be tangential to any half-grid. Therefore we have only 2 or 4 intersections. From Theorem 12, we always have two or four distinct intersections between C (p2 ) and H (q 2 ), and we see that there are five cases corresponding to different possibilities to have 0,1,2 or 3 corners inside of C (p2 ), as illustrated in Figure 6. Remark. 13 The cases represented in (a) and (c) in Figure 6 never happen unless two conditions are satisfied. (1) q 2 is on the x-axis or on the y-axis. (2) The radius r of C (p2 ) is sufficiently close to a half-integer. The case of Figure 6(c) is problematic because it generates two distinctive ranges of admissible rotation angles. These two ranges are symmetric with respect to the x-axis or the y-axis. However, this case rarely occurs as explained below. Supposing that q 2 is neither on the x-axis nor the y-axis, we see R2 or S2 is not zero. We assume that they are positive. In the first quadrant, the ycoordinate (respectively x-coordinate) of points in C (p2 ) is strictly decreasing with respect to x (respectively y). Thus it cannot intersect twice with a line parallel to the x-axis (respectively y-axis). Supposing that q 2 is on the y-axis (respectively on the x-axis), we see that the distance between the 2 )) is greater than r. qorigin and C1 (q 2 ) (respectively C3 (qq 1 2 1 2 Thus we have r < (R2 − 2 ) + ( 2 ) (respectively r > (R2 + 12 )2 + ( 21 )2 ). 14 (a) ΣF (Ci (q 2 )) = 0 (b) ΣF (Ci (q 2 )) = 1 (c) ΣF (Ci (q 2 )) = 2 (d) ΣF (Ci (q 2 )) = 2 (e) ΣF (Ci (q 2 )) = 3 Fig. 6. Illustration of cases ΣF (Ci (q 2 )) = 0,1,2 or 3. Letting ǫ = r − (R2 − 21 ) (respectively ǫ = r − (R2 + 12 )) where ǫ < 12 , we obtain ǫ(8r − 4ǫ) < 1 (in both cases). We experimentally observe that as far as r ≤ 105 , ǫ(8r − 4ǫ) < 1 never holds. On the other hand, if r is sufficiently 1 , which means that r is large enough to have 8r − 4ǫ ≈ 8r then we have ǫ < 8r sufficiently close to a half-integer. We can thus conclude that (2) in Remark 13 is satisfied only if r is sufficiently large. As explained above, the case of Figure 6(c) occurs extremely rarely. Thus, we take no account of this case from now on, which causes no problem from the practical point of view. The main function of our algorithm for finding the lower and the upper bounds of admissible rotation angles, consists of three steps. The first step sets the rotation center at p1 and q 1 , as described in Section 6.1. The second step computes which corners are inside of C (q 2 ) and then compute the index Iq2 = P i i 2 × F (Ci (q2 )). Therefore we can easily identify which corners are inside of C (p2 ) from Iq2 . The third step calls a function that returns hinge angles corresponding to Iq2 . There exist fourteen possible values for Iq2 from 0 till 15 except for 5 and 10. Note that geometrically Iq2 can be neither 5 nor 10. The value 15 of Iq2 implies an error such that all corners are inside of C (q 2 ). Since 15 Table 1 Corners of H (q 2 ) inside of C (p2 ) and ARA. Value of Iq2 αinf αsup Iq2 = 1 or Iq2 = 14 α(P1 , Q1 , R2 − 1) α(P1 , Q1 , 1 − S2 ) Iq2 = 2 or Iq2 = 13 α(P1 , Q1 , R2 − 1) α(P1 , Q1 , −S2 ) Iq2 = 3 or Iq2 = 12 α(P1 , Q1 , 1 − S2 ) α(P1 , Q1 , −S2 ) Iq2 = 4 or Iq2 = 11 α(P1 , Q1 , R2 ) α(P1 , Q1 , −S2 ) Iq2 = 6 or Iq2 = 9 α(P1 , Q1 , R2 − 1) α(P1 , Q1 , R2 ) Iq2 = 7 or Iq2 = 8 α(P1 , Q1 , R2 ) α(P1 , Q1 , 1 − S2 ) Iq2 = 0 and R2 = 0 α(P1 , Q1 , 1 − S2 ) α(P1 , Q1 , 1 − S2 ) Iq2 = 0 and S2 = 0 α(P1 , Q1 , R2 − 1) α(P1 , Q1 , R2 − 1) Iq2 whose value is 0 corresponds to the case ΣF (Ci (q 2 )) = 0, we should verify whether H (q 2 ) really intersects with C (p2 ). Note that for the other values for Iq2 , we can make a pair (d, e) such that d + e = 15. The two indices of each pair design the same pair of lower and upper bounds of ARA. Table 6.2 gives the corresponding lower and upper bound rotation angles for each value of Iq2 . Each step of this algorithm has the constant time complexity. Thus the global complexity of this algorithm is also O(1). 6.3 Incremental Computing Lower and Upper Bounds of Rotation Angles In general, the corresponding point sets contain more than two points. Therefore, in this section, we extend our algorithm in Section 6.2 to two sets of corresponding point pairs, A and B, each of which has l points where l > 2. To simplify the notation, we denote by ARA(pi , q i ) = (αi inf , αi sup ) the pair of angles that gives the lower and the upper bounds of admissible rotation angles for the pair of points (pi , q i ). Note that αi inf , αi sup are hinge angles. ARA(An , Bn ) denotes the two most restrictive angles for all points i such as T i ≤ n. We recursively define it by ARA(An , Bn ) = ARA(An−1 , Bn−1 ) ARA(pn , q n ). A new algorithm handles all points incrementally. This algorithm is divided into two parts. The first part is to initialize the algorithm by computing ARA(p2 , q 2 ). The second part computes ARA(Ai , Bi ) for i = l. Note that ARA(p1 , q 1 ) cannot be computed because p1 and q 1 are the centers of the rotation. The time complexity of this algorithm is O(l). As explained in Section 6.2, 16 Fig. 7. Running of the incremental algorithm. the function giving a pair of lower and upper bound rotation angles from a pair of points is realized in a constant time O(1). Moreover, as explained in Section 3, we can compare two hinge angles in a constant time O(1). Therefore, the computation of this algorithm for l points takes the time complexity of l × (O(1) + O(1)) = O(l) as a whole. Figure 7 gives an example of the incremental algorithm for two sets of three points. Given input data of the algorithm as shown in Figure 7 (A), we first obtain the result of the translation described in Section 6.1 as illustrated in (B). We then compare, for each pair of points (pi , q i ) with i ≥ 2, the distance of pi from the origin with that of each corner from H (q i ) to deduce the corresponding hinge angle as explained in Section 6.2. Finally, we obtain (D) which shows the intersection of all ARA(pi , q i ) obtained in (C). 7 Experimental Evaluation using Synthetic Data We evaluated our algorithm using synthetic data and verified the quality of obtained admissible rotation angles. To test our algorithm, we need two sets of points. We randomly generated the set F of 100 floating points in a 200 × 200 square. The first set I is obtained by discretizing F . The second set I ′ is obtained by applying the DER with angle θ = 50◦ to the first set I (Figure 8). 17 150 Generated points Rotated points 100 50 0 -50 -100 -150 -150 -100 -50 0 50 100 150 Fig. 8. Randomly generated points and their corresponding rotated points. 55 Lower hinge angle Upper hinge angle Lower bound hinge angle Upper bound hinge angle 54 value of hinge angle 53 52 51 50 49 48 0 10 20 30 40 50 60 IDs of pair of points 70 80 90 100 Fig. 9. Result of our algorithm applied on the sets of points in Figure 8 . We assumed that the point correspondences across the two sets I and I ′ are known. Figure 9 shows the hinge angles obtained by our algorithm. The green and the red curves give the lower and the upper bound rotation angles for each pair of point in correspondence. We can see that lower bound rotation angles are always lower than θ and that upper bound rotation angles are greater than θ. The blue and purple lines give the lower and the upper bound rotation angles for points with the lower IDs than the point of interest. As we can see, after only ten pairs of points, the range of admissible rotation angles becomes less 18 than 0.1◦ while the range is reduced to 0.02◦ after twenty pairs of points. Then the precision increases slowly. This shows that the precisions of admissible rotation angles acquired after twenty pairs of points are not significant in this particular case. Figure 9 also indicates that most pairs of points give the admissible rotation angle range smaller than 1◦ (for example, pair #39). Pair #34 and pair #66, however, give a range greater than 4◦ . In fact, the maximum range for a pair of points is directly related to the distance between the center of rotation and the pair of points. We denote by d the distance between the rotation center and the pair of points. Then, the maximum difference between the√lower and √ the upper bound rotation angles is sin−1 d2 . For the pair #34, d = 173; thus √ the maximum range is approximately 6.1◦ . For the pair #39, d = 16505 and thus the maximum range is approximately 0.63◦ . This is consistent with our experimental result. We cannot expect that just by applying our algorithm only to the farthest pairs of points from the rotation center, we will obtain the exact bounds of admissible rotation angles. This can be confirmed by the pair #34, for example. We see that the range is greater than 4◦ but the upper bound hinge angle gives a close approximation to the rotation angle. On the other hand, by keeping only the farthest pairs of points, our algorithm might become faster. But we need an additional procedure for determining which pairs of points have to be kept. If we set distance δ and keep only the pairs of points whose distance from the rotation center is greater than δ, we have to compute the distances of all pairs of points from the rotation center. Then the complexity required by this approach is still O(n). Accordingly, we conclude that keeping only the farthest pairs of points is a does not contribute toward the complexity improvement. 8 Discussion on practical application to digital images In the previous section, we start with grid points in the discrete plane. In other words, all coordinates of the points are integers. But in reality, points in the Euclidean space are not represented by integers but real numbers. Thus we start here with the set of floating points to see how our algorithm works. Then we test our algorithm with real data acquired by a digital camera. 19 60 Lower hinge angle Upper hinge angle Lower bound hinge angle Upper bound hinge angle 58 value of hinge angle 56 54 52 50 48 46 44 0 10 20 30 40 50 60 IDs of pair of points 70 80 90 100 Fig. 10. Result of our algorithm applied on a sets of floating points. 8.1 Synthetic data To test our algorithm using synthetic data more similar to real data, we applied the Euclidean rotation with angle θ = 50◦ directly to the set F that is used in Section 7. Then we discretized the rotated image to obtain the second set I ′′ . To the two sets I and I ′′ , we applied our algorithm. We note that the set I comes from Section 7. Figure 10 shows the obtained hinge angles. Because we started with the set of floating points, we observe some errors in bounding admissible rotation angles. In fact, we see that some pairs of points, the pairs #64 and #73 for instance, do not contain θ. Figure 11 (left) explains how errors arise in rotating floating points. Let assume that the point q 1 is obtained after the Euclidean rotation of the floating point p1 with angle γ. Let p2 and q 2 denote the discretization of p1 and q 1 . If we apply our algorithm to the pair of points {p2 , q 2 }, we obtain ARA(p2 , q 2 ) = (αinf , αsup ). In this case, γ does not belong to the interval [αinf , αsup ] (Figure 11 (right)). We see that this is caused by discretization of the floating points. We can give a bound for this error. In fact, this bound directly depends on the distance between the rotation center and the pair of√points. If we denote by d this distance, the maximum error is equal to sin−1 2d2 . Note that the pair of points {p3 , q 3 } and the angle ρ bring the same problem. To avoid this problem, we modify our algorithm for example as follows. We keep all the pairs of bound rotation angles determined by all pairs of points. After sorting all lower and upper bound rotation angles into two lists Linf , Lsup , we remove all hinge angles αinf from Linf such that for ∃αsup ∈ Lsup , αinf > αsup . We also remove all hinge angles αsup from Lsup such that for ∃αinf ∈ Linf , αsup < αinf . 20 Fig. 11. Examples of errors for computing lower and upper bounds of rotation angles introduced by rotation of floating points. With this procedure, we can guarantee that the lower bound hinge angle is smaller than the rotation angle applied to the points and that the upper bound hinge angle is larger than the rotation angle. The complexity O(n log n) is required in sorting the remaining hinge angle pairs, which does not increase the computational cost of the algorithm as a whole. Another way to avoid the problem is to compute the smallest distance d of all the points from the √ rotation center and then compute a Pythagorean angle θ −1 2 satisfying θ > sin 2d . We then add (subtract) θ to the upper (lower) bound rotation angle obtained by our algorithm in Section 6. As a result we obtain the upper and the lower rotation angles that define the interval accurately including the true rotation angle. Both methods return a valid ARA. It is preferable to use the second method when there are few pairs of points because it does not remove any hinge angles. The first method is preferable when data contains many pairs of points in correspondence because the obtained ARA is more restrictive than the ARA obtained by the second method. 8.2 Real data We applied our algorithm to see its practical usefulness. We used a turntable that is rotated with respect to the vertical axis with respect to a digital image plane. The precision of rotations in control is 10−3 degrees. We put a toy block on the turntable and then took its image using a standard digital camera where the camera was fixed so that its optical axis is parallel with the rotation axis (Figure 12(a)). Next we rotated the turntable with the angle of 44.99◦ and then took another image of the toy block by the fixed 21 camera (Figure 12(b)). We manually selected five points in the first image and their corresponding points in the second image. Then we applied our algorithm to the five pairs of corresponding points. Our algorithm might return the empty result (Figure 12(c)). This is because no intersection between C (pi ) and H (q i ) was found for all i = 1, 2, . . . , 5. In the case of real data, we cannot always guarantee to detect correct corresponding pairs of points even manually. This indicates that a problem different from the discretization problem (see Section 8.1) arises 3 . Namely the maximum difference of distances from the rotation center between two points in √ correspondence can become greater than 2. This is illustrated in Figure 13 where points p and q are in correspondence and ǫd = |dp − dq | is greater than √ 2 where dp , dq are respectively the distances from p, q to the origin. We see that no intersection exists between the circle C (p) going through p and H (q). To avoid this problem on corresponding points, we can change the resolution of the images. Namely, we degrade the image resolution until we find an intersection between C (p) and H (q). Because of the change in image resolution, we cannot accept the obtained hinge angles as they are. Instead, we add (subtract) a Pythagorean angle θ from the obtained upper (lower) hinge angle, in order to, let assume that dp < dq and that H (q) is defined for the image whose resolution is degraded with 2−n from the original one. Then we have to √ n 2 choose θ satisfying θ > 2dp . Figure 12 (d) shows the results obtained by the modification above to the same data. We can see that the real rotation angle (44.99◦ ) is included in the ARA obtained by our algorithm with this modification. Accordingly, we can conclude that our modification is effective. 9 Conclusion In this paper, we have introduced problems of rotations in the discrete space. Because rotations are mathematically defined for the continuous space, it is necessary to develop new operational tools for such discrete rotations. Our problem was from two digital images to find all possible rotation angles to rotate the first image into the second. Namely, to find the admissible rotation 3 We assume here that we are to find ARA from given correspondences 22 (a) (b) (c) (d) Fig. 12. Result of our algorithm applied on real data. Fig. 13. Problem of corresponding points with real data. angles between two digital images. Since we need to have only exact computation without any approximation. We decide to adopt hinge angles which allow us rotations using only integer computation. By using their properties, we have proposed a method for incrementally computing the lower/upper bound rotation angles from a Pythagorean angle for a set of discrete points. Based on this method, we have also proposed a linear algorithm for finding from two digital images the lower and the upper bound rotation angles representing the admissible rotation angles between them. In addition, we have shown with experiments that our algorithm is efficient 23 with synthetic data and gives consistent results. Then we also have done some experiments to real data. Results given by our algorithm were not consistent because of the loss of correct point correspondences in our input. We then explained why these problems appear and gave necessary modifications to obtain consistent results. These modifications did not increase the time complexity while keeping the integer computation. The range size of ARA can be considered as the unreliability of the point correspondence. In other words, the larger the range of ARA between two points becomes, the less the reliability of their point corresepondence is. Therefore, it may be interesting if we can propose a new method for evaluating "good" point correspondences from a given pair of digital images by using our results. Another future work is to extend our proposed method to the 3D space. Because in 3D hinge angles are not yet defined in 3D, the first direction we should take is to design 3D hinge angles and develop a 3D discrete rotation algorithm based on 3D hinge angles. Then we will improve such a rotation algorithm in order to find admissible rotation angles in 3D as we did for 2D in this paper. Acknowledgment This work was supported by grants from Région Ile-de-France. References [1] Andres, E.: Cercles discrets et rotations discr tes. Thesis, Université Louis Pasteur, Strasbourg, 1992. [2] Andres, E.: The quasi-shear rotation. in Proceedings of DGCI, SpringerVerlag LNCS 1176 (1996), 307–314. [3] Anglin, W. S.: Using Pythagorean triangles to approximate angles. American Mathematical Monthly 95 (1988), 540–541. [4] Hansen, M., Anandan, P., Dana, K., van der Wal, G., Burt, P.: Real-time scene stabilization and mosaic construction. in Proceedings of the 2nd IEEE workshop on Applications of Computer Vision, IEEE (1994), 54-64. [5] Hersch, R D.: Raster rotation of bilevel bitmap images. in Proceedings of Eurographics85, Elsevier Science Publishers, 1985, 295-308. [6] Nouvel, B.: Rotations discr tes et automates cellulaires. PhD thesis, Ecole Normal Supérieur Lyon, 2006. 24 [7] Nouvel, B., Rémila, E.: Incremental and transitive discretized rotations. in Proceedings of IWCIA, Springer-Verlag LNCS 4040 (2006), 199–213. [8] Paeth, A W.: A fast algorithm for general raster rotation. Graphics Gems (1990), 179–195. [9] Thibault, Y., Kenmochi, Y., Sugimoto, A.: Computing admissible rotation angles from rotated digital images . in Proceedings of IWCIA, SpringerVerlag LNCS 4953 (2008), 99–111. [10] Volder, J.E.: The CORDIC trigonometric computing technique. IRE Transactions on Electronic Computers EC-8 (1959), 330–334. 25