A set of height levels (thresholds) are applied to generate binary masks, from where straight lines that mainly represent wires are extracted. The goal is to generate a range of heuristic height masks such that at some height level the trees will fall beneath. Convex hulls are formed around each cluster of parallel lines at each height level. Using the overlap among the hulls across successive height levels, series of hulls, which are used to estimate the height gap along a corridor, are obtained. The series of hulls is also used to extract PLCs in the form of 2D polygons.
The height gap indicates the vacant space that exists between the vegetation and the lowest point of the bottom-most wire. Only pylon points exist within the gap and therefore each pylon is located using the points within the gap. These points also serve as the seed for extraction of the pylon. The seed is grown downward first and, then, all its components are merged to get a complete cross-section of the pylon at a low height range. Finally, in the upward growth, the scaling of the pylon is considered to extract the whole pylon while considering possible diverging and connections through the cross arms.
At last, the points within each PL span (between the two successive pylons) are used to extract individual wires. The number of wires within the span is counted using two masks, specifically the vertical mask across the PL direction and the PL mask along the PL direction. “Bundle” wires, with up to two wires in each bundle, are correctly counted. For each wire, an initial wire segment is generated and extended towards both ends to get the points of the whole wire.
The overall idea of the proposed methodology is to reduce the number of input points that are processed in the subsequent steps. The extraction of PLCs help remove the vast amount of points that reside outside the corridors. Thus, only the non-ground points within the corridors are used to detect and extract pylons. Moreover, it is mainly the non-ground points above the height gap and between the successive pylons that are involved in the individual wire extraction process.
4.1. Mask and Convex Hull Generation
In the literature, other researchers have usually applied a height threshold
h (e.g.,
m [
10]) in order to separate ground and non-ground points. The non-ground points are expected to represent only desired objects such as pylons and wires. However, when there are tall trees below the PLs, as can be seen in
Figure 2b, both trees and wires exist as non-ground points. For instance,
Figure 2c shows the PL mask at
m [
5] indicating that vegetation exists in all three corridors, but especially in Corridor 3. Thus, a small value of
h will not be effective to separate the expected objects from the unexpected objects. Moreover, in the same scene there can be multiple PLCs in which the pylons and wires exist at different heights. As a result, a single value of
h may not work.
To overcome this issue, a set of height values
m (relative to the ground) are used (see
Figure 3). At every height level
h, a PL mask
is generated following the procedure presented in Awrangjeb and Islam [
5].
Figure 2d–f shows
generated for different
h values. While Corridors 1 and 2 are obtained clearly at
m, Corridor 3 is obtained at
m. After its first clear appearance at a low
h, a corridor may look identical for the next one or more
h values. It may then start disappearing at a high
h. This is because in the corridor there are wires at various heights. Each wire in a corridor can appear at different height levels (hence, in different masks) depending on the amount of sag in the wire and the height of the two connected pylons. When no wire points exist at a high
h, the corridor completely disappears.
Consequently, at a given
h, each corridor is either partially or fully extracted or completely missed. To combine them, straight lines
, where
, are extracted on each
, again following the procedure of Awrangjeb et al. [
21].
Figure 2g shows the extracted straight lines at
. Assuming that wires between two consecutive pylons are longer than 6 m and the maximum width of a PLC is
m,
from each
are organised into clusters of parallel lines. For each cluster, a convex hull
, where
, is finally generated using the end points of the lines. An axis
that passes through the centre of
is also obtained. The axis works as a representative for all lines within the cluster.
Figure 2h–i shows the convex hulls and their axes in blue and pink, respectively.
4.2. Estimating The Height Gap
Figure 4a shows the input points between two pylons from the sample scene shown in
Figure 2. Given that no vegetation (trees) touches any wires, a vertical height gap
, where there are no points (except pylon points), always exists between the vegetation and the bottom-most wire. As mentioned above, the gap can vary along the span due to hilly terrain, vegetation height and the extent of sag in the wire. The smallest gap indicated in the figure is common to all variations. Ideally, therefore, it is this gap which must be estimated.
However, since the location of any two given pylons is unknown, the smallest cannot be estimated. Moreover, on the one hand an estimated value of for a span can be used for many other neighbouring spans along the same PLC. On the other hand, should any vegetation (trees) touch any wires within a span, there can be more than one value that needs to be estimated for that span. Thus, the purpose of the research presented herein is to attempt to estimate one or more such gaps within a straight PLC segment, which covers any number of spans of a PLC, using the convex hulls based on the observation below.
As shown in
Figure 2i, convex hulls within a straight segment overlap one another vertically. If high vegetation does not exist underneath the wires, a large hull exists for each segment at a low
h and it maximally overlaps the hulls at the next levels. However, as the height level increases, wire points completely disappear from the middle of some spans and there may be two or more hulls obtained for the same segment now. All four segments of Corridors 1 and 2 in
Figure 2i reflect this fact. In contrast, if there are high trees underneath the wires then hulls are found to be small at low
h. As
h increases tree points gradually disappear and hulls merge and become larger. When no tree points exist at a high
h, only a large hull exists within a segment and it maximally overlaps with the hulls at the next levels. The same trend is now displayed with the increase of
h further when hulls become large in number but small in size. Two segments of Corridor 3 in
Figure 2i illustrate this scenario.
Therefore, to estimate
, a series
, where
, of hulls that largely overlap each other across neighbouring height levels are obtained (see
Figure 5). Two hulls
and
are in
if the two overlapping percentages (with respect to both hulls) are above the overlapping threshold
(e.g.,
). A series stops after the percentage with respect to
does not satisfy the condition, i.e.,
seems to be smaller than
. For the sample scene shown in
Figure 2,
Figure 4b shows the series of hulls in different colours. There is only one series covering each segment of Corridors 1 and 2. However, for the left hand side segment (Segment 1) of Corridor 3, there are two series (blue and pink). Since the pink series is short and completely contained within the blue series in a 2D top view, the former is ignored.
Ideally, one or more series covering a whole PLC are obtained as above. However, exceptions to this can happen when, for example, the vegetation between pylons grows as high as the wire is strung or where there is a considerable change in height in the wire. In these situations, convex hulls do not satisfy the above overlap condition and
cannot be formed in some areas along a segment. To find these exceptions, all the current series are projected on a horizontal plane and checked if there are long gaps between consecutive series.
Figure 4c shows a 1.285 km long segment (see the red polygon at the bottom; this segment is from a test dataset presented in
Section 6.1), where two series cover two areas of the segment: Areas 1 and 2 are covered by the green and blue series. Both series are shown at the top of the figure. They are found at low height levels, e.g.,
m. However, because of high vegetation and hilly terrain, no hulls were extracted at these low height levels in Area 3, which is about 180 m long and situated between Areas 1 and 2. Hulls in this area were found at high height levels, e.g.,
m, as shown at the top of
Figure 4c (yellow series). These hulls are not in any series obtained above, because their overlap percentages are below
. To obtain these hulls in a series and, thereby, to fill up Area 3 in the segment, only hulls that cover a major part of the missing area (more than
) are considered. All the yellow hulls shown in
Figure 4c satisfy this condition and, thus, form a series that covers Area 3 in the segment.
After having the entire series of hulls that completely cover each PLC, for a series
, its height gap
is recorded as [
] and estimated as the difference in heights between the lowest
and the second highest
hulls.
Figure 4b shows the estimated height values for two series of hulls: 25 m for yellow series (
m and
m) and 5 m for green series (
m and
m). This is a relative value with respect to the ground height provided by the DTM metadata, thus the actual value can be different at different locations.
4.4. Detecting Pylons
To locate pylons, the area of each segment or sub-segment
of a corridor is individually investigated (see
Figure 6).
Figure 7a shows the points for the right segment (blue) of Corridor 1 in
Figure 4b. The estimated
is 5 m, i.e.,
m and
m for this segment.
Within , there are only points from the pylons, no points exist from either the vegetation or the wires. However, in practice, this gap can be too narrow (5 m in this case) to find enough points for pylon detection in low density input point data. Thus, based on the following observations, the gap is extended to and scrutinised after being divided into slices. Firstly, since pylons are usually wider at the bottom than at the top, there are more points reflected from the former than the latter. Thus, is set to have points above 1 m or more from the ground. Secondly, the sections of the wires nearest to the pylons are at a greater height than the sections of the wires further away from the pylon. Moreover, there may be no, or only a few, points in the short height of the pylon. Therefore, the height of each slice is set at m and is set. Given that the pylons in the test scenes are at least 20 m high, is set accordingly.
Figure 7b shows the points within height slices in different colours. A binary mask
, where
, is generated with points in each slice following the procedure of Awrangjeb and Islam [
5]. The left side of
Figure 7c shows three masks
,
and
for Slices 1 (red), 2 (cyan) and 3 (blue), respectively, in
Figure 7b. Given that pylons should extend upwards through all slices, and that vegetation does not continue after a certain height, the binary AND operation between masks of successive slices will preserve pylons, but remove vegetation. The binary masks in the middle and right sides of
Figure 7c show the outcome of the two-step extraction process using AND operations:
and
after the Step 1 and Step 2 AND operations, where
and
.
It has also been observed that pylons always remain present either fully or partly in all binary masks, including after the AND operations. To remove high trees which exhibit similar properties of a pylon, a connected component analysis is carried out on all binary masks in
,
and
. By verifying the common pixels, a double check is carried out for each component in
. Firstly, a check is conducted on whether its related components exist in both
and
. If they do, then its related components are checked in previous levels by tracking back to
and
, respectively. The orange coloured dashed lines in
Figure 7c show the tracking paths for a pylon in the sample test scene (i.e., only masks that created
are checked in the tracking). Thereafter, all related components for each potential pylon are obtained in
and a convex hull is formed around each set of all related components that reside close to one another.
Figure 4d shows all three pylon locations (convex hulls,
, where
) for the sample scene.
Note that the above pylon detection works fine based on the observation that for a true pylon there will be points in every slice. In contrast, for a tree, there may be no or a very few points that get reflected from some parts of its trunk. Thus, some slices at the bottom part of the tree will be (almost) empty. Thus, using the involved two-step AND operations while the pylon is detected, the tree is removed. However, if a tree has the same structure as a pylon (i.e., points get reflected from top to bottom of a tree), the algorithm may detect a false pylon.
4.5. Pylon Extraction
Electric pylons can be significantly different in both shape and structure.
Figure 8a shows five types of pylon as provided by online (Hydro-Quebec,
https://www.hydroquebec.com/securite/servitudes-droits-propriete/lignes-transport-postes-transformation.html (accessed on 10 June 2019).). Some of the obvious observations about pylons include: First, there can be more than one leg connected to the ground (Types II and V). Second, different parts or legs of the same pylon can be connected through cross arms (Type II) or merged into one (Type V). Third, a single pylon can be split (diverged) into two or more parts and then connected by cross arms (Type V). Fourth, there can be two or more pairs of cross arms at different heights (Types II and III). Last, the area of horizontal cross-section decreases with the increase of height (Types III and IV), except when the pylon diverges (Type V). An actual Type V pylon is shown in
Figure 8b (
m). As can be seen, missing points are an almost regular phenomenon in the input point cloud data for both pylons and wires. As a result, a single component of a pylon can be found in two or more parts which makes the extraction of pylons a much more difficult task.
The proposed research here introduces a merging-diverging approach based on a connected component analysis (see
Figure 9). The approach has three main steps: (1) select a seed region and grow pylon downward; (2) merge if two or more components of the same pylon are obtained in the downward growth; and (3) grow the pylon upward. The purpose of Steps 1 and 2 is to get a complete cross-section of the pylon at a low height range where the area of the cross-section is large. In Step 3, the scaling of the pylon is considered in order to extract the whole pylon while also considering all possible divergence and connections through cross arms. The pylon in
Figure 8b is used below to describe the proposed procedure.
4.5.1. Growing Downward
For each pylon
detected in
Section 4.4, only points that reside within
and the three consecutive slices above
are considered as the seed. This avoids inclusion of any non-pylon points that may reside within the aforementioned extended height gap. For the pylon in
Figure 8b,c shows the seed points
(heights of 5–11 m) in magenta dots. A (convex) seed hull
is obtained around
. Considering that the pylon may have other parts (e.g., a second leg) outside
, outside points within 1.5
m from the centroid of
are also considered and designated as the non-seed points
(black dots in
Figure 8c), which may be merged with
later.
To count the number of possible pylon parts and, thereby, to add points iteratively to the correct part, a connected component analysis is carried out at each iteration by converting the points into a binary mask. In practice, each of and may generate one or more components. All components generated by are combined into one to consider one pylon, but those generated by are considered individual non-seed components and are checked to determine whether any of them can be merged with . The convex hulls of the connected components are used to combine (within ) or form individual components (outside ).
Figure 10a shows each of
and
forms only one connected component in Iteration 1. Let the hulls of these components be
and
, respectively. By using the point-in-polygon test, all components within
are found and a combined hull is obtained to update
and
. In our example, we have only
within
and, thus,
is the updated seed hull.
does not get updated since there are no points from
close to
. However, when there are points from
that reside close to
they may form a common component with some points in
. In such a case,
is updated with all previous points and new points from
. Each of the remaining component hulls, which reside outside
, needs to be preserved to track whether it continues in successive iterations. We have only one such hull (i.e.,
), thus
and all points within
are assigned to
, where
.
The pylon is then grown downward iteratively, one slice at a time, and new points are added to
and
. New components may be found and existing components may disappear in any iterations.
Figure 8d shows the points that are added in the next two iterations (slices at 5 to 3 and 3 to 1 m). Points added to
are shown in blue, and those added to
are shown in cyan.
Figure 10b shows that there are still two non-overlapping components at Iteration 3 when the downward growth stops at the 1 m mark.
In addition, in each iteration, points in
are used to generate a minimum bounding rectangle
to track whether
gets shrunk or enlarged in successive iterations. For example, the red dashed rectangle in
Figure 8c is generated in Iteration 1. The updated
in Iteration 3, shown in
Figure 8d, is found enlarged, especially in the north direction.
is used below to merge pylon components and to grow the pylon upward.
4.5.2. Merging
The downward growth of the pylon stops at the lowest slice (3 to 1 m). Before the pylon is grown upward, however, it needs to be investigated to determine whether any non-seed point sets
can be merged with
. To do that, slices above the current top slice (
: 9–11 m in this case) are considered and points within each of these slices are scrutinised.
Figure 10b shows the gap that exists between the two connected components generated by
and
(
), respectively. If any points exist within the slices above
, they can fill up the gap, which signifies
can be merged with
.
To investigate the possibility of merging the two minimum bounding rectangles
and
around
and
are shown in green and yellow, respectively. A combined bounding rectangle
, shown in red, and has been calculated so that it includes
and the gap between
and
. For each slice above
the number of points are counted and if there are points within
in a majority of slices (more than 50%), then
is merged with
.
Figure 10c shows the points within
from the higher height slices and the combined mask shows that the gap is now filled and only one connected component was obtained. In merging, points in
are added to
and
is updated with the convex hull of the updated
.
4.5.3. Growing Upward
While growing upward one slice at a time, starting from Slice
, only points from the last three slices below
are included into
and
is formed around
. This is because the pylon being extracted may slowly shrink as in Types I–IV in and/or diverge as in Type V (see
Figure 8a). In both cases, the current pylon in
is only extracted upward and no new objects are added from outside
. Considering only the last three slices (i.e., in 6 m height range) provides enough points to estimate the approximate cross-section of the pylon at a particular height range being examined.
To estimate the scaling factor
, points within a new slice are checked to determine whether they are within
or outside it (see
Figure 10d). If all points are within
, then the closest point
from any side of
is found and the intersection point
between the line
and the side is obtained, where
is the centre of
. Thus,
. If there are points outside
, the farthest outside point
from any side of
is obtained and
, where
is the intersection point between
and the side. If there are no outside points but one or more points
on
, then
.
It has been observed that, in practice, the area (i.e., horizontal cross-section) of a pylon changes slowly in successive slices. However, wire points can reside close to pylon points when they are at a similar height range. Thus, if there is a sudden change in
(say,
or higher) between successive slices, then the pylon is only enlarged across the corridor. This helps in not only excluding wire points from along the corridor but also helps to include pylon components such as insulators and cross arms. As shown in
Figure 8a, cross arms and insulators are usually present across the corridor at high height and they enlarge (diverge) the area of a pylon’s cross-section.
Figure 8e shows the points from top three slices (5–11 m height) and their
in black. The line
indicates the direction across the corridor. In the first iteration, points within
are shown in red and the updated
is shrunk by the same factor on both directions (in and across the corridor direction). However, in the next iteration (magenta points), the pylon starts diverging and, thus, found enlarged only along
. All the points outside
and away from the pylon are shown in green circles. The extracted whole pylon is shown in red in
Figure 8f.
4.6. Wire Extraction
Figure 11 shows the work flow of the proposed wire extraction technique. Before extraction of points on an individual wire, the number of wires within a PL span is counted. To count the number of wires, two binary masks are used. The first one is a vertical mask
that shows the wires on a vertical cross section across the PL direction and helps find the clusters of wires at different height levels. The second one is the PL mask
, which helps to count the number of wires that horizontally exists on each height cluster. Then, for each wire, an initial wire segment is generated. Finally, the initial segment is refined and extended towards both ends.
Note that the preliminary version of this wire extraction technique was published by Awrangjeb et al. [
22]. In this submission, the technique is presented with further detail, particularly counting the number of wires and extracting the wire points.
Figure 12a shows the input points
for another sample scene, which is used below to explain the wire extraction technique.
4.6.1. Counting Wires in Masks
The 3D input points
are converted to the 2D coordinate system of
and a white mask
is defined with a resolution
. The width of
is set to the width of the corridor
and the height is set to cover the height difference between the lowest and highest points in the input. The value of
is set to 0.15 m assuming that the transmission wires that vertically overlap each other have at least 1 m height difference.
(see
Figure 12b) is generated following the same procedure as for
, but instead of a specific height
h, a variable height
is used from
(
).
Let
be the pylon axis, i.e., the line connecting the mean points of two successive extracted pylons
and
and
be the perpendicular line passing through the midpoint of
(
Figure 12c).
A vertical plane
is generated passing through
such that there are points on both sides of
, as shown in
Figure 12d. Starting from the nearest point on any side, the wire points
within the next 1 m are taken and mapped into an empty
. The wires are found as small individual black regions in
and these are organised into clusters allowing a neighbourhood of 4 pixels (0.6 m) between any two black pixels in a cluster. This neighbourhood allows the wires in a particular bundle to be in the same cluster.
Figure 12e shows eight clusters for
in
.
If a cluster is at most 2 pixels (
m) high (vertically), then the number of vertical wires
is set for this cluster. Otherwise,
, which does not happen since there are no vertically close wires in the test scene.
Figure 12e shows that for all clusters
is estimated correctly. To count the number of horizontal wires (across the PL direction),
are now mapped into
to capture the relevant wire parts, on which a connected component analysis is carried out.
Figure 12f shows eight connected components, one for each cluster in
Figure 12e. For each connected component, if the maximum width is 2 pixels then the number of horizontal wires
is set for this component. Otherwise,
, which usually happens for Corridor 1 since there are six pairs of wires and the wires in each pair are only about 0.30 m away from each other. Therefore, each pair are found in one connected component. The value of
is mostly estimated correctly. However, sometimes it can be wrong, as shown within the orange coloured ellipse in
Figure 12f. In
, the single wire at the top left side of the corridor is confused with the double wires below it.
4.6.2. Extracting Initial Wire Segments
To find the actual values of
and
, the estimation of
and
continues iteratively as above, using 1 m of wire each time, running 30 times on the assumption that the maximum distance between two successive points on any wire is 30 m. The number of iterations is mainly set for thin wires (e.g., two single wires at the top of
Figure 12d), which have a small number of points. It has also been found successful with thick wires as well (e.g., six pairs of wires at the bottom of
Figure 12d).
At each iteration, all the points
are marked as “assigned” and the mean point
of
is stored.
Figure 13a shows the input points in cyan dots for seven wires (in front) at four height levels (
) and the mean points in magenta circles. We have four lists of mean points in this figure. In an iteration, to include a new mean point
to a list of previously listed mean points, three checks are executed. First,
and
values are the same for both the list and
. Second, the line connecting
and the last mean
in the list is parallel to the pylon axis
. Third, the height difference between
and
is below a threshold (
m), which is calculated based on the distance between
and
and the tangent of the maximum possible slope
of the wire. For parallelism and height checks, the angle threshold is set as
.
4.6.3. Refining Initial Segments
Some of the wire segments extracted above may be spurious, containing only a small number of mean points. Thus, the segment with only one mean point is discarded. In addition, some of them may be the result of a split from a single wire. Therefore, every pair of the candidate segments is further scrutinised. Let and , where , be the set of mean points for two candidate segments m and n. Further, let and be two 3D lines of these two segments. The following check is performed to merge them, if possible. The perpendicular distances from to are within m and the height errors between the estimated and actual heights are within 0.5 m. If the check is true, then the longer segment is updated with the information of the shorter segment, which is abandoned thereafter.
After the above merging step, the value of
is revised based on a majority voting criterion that uses the perpendicular distances from wire points
to
.
Figure 13b shows one set of single wire (green) and one set of double wires (yellow) along a 2 m long
segment. For both cases, the maximum and minimum perpendicular distances are shown in every 1 m space along
. For the single wire, the difference between the maximum and minimum distances is less than
m, therefore
gets 1 vote for each 1 m segment. In contrast, for the double wires, the difference between the maximum and minimum distances is more than 0.3 m, therefore
gets one vote for each group. After voting for all 1 m segments of a wire along
, if
gets the majority of votes, then this wire is decided as a single wire; otherwise, it is decided as a double wire.
4.6.4. Extracting Final Wires
Once the initial wire segments are refined as above, they are now extended according to the number of mean points . To avoid spurious wire extension, wires with the largest number of are extended first, then the second line with the largest number of , and so on. For each initial segment, it is extended on both sides iteratively, 1 m at a time. On each side, a 3D line is constructed using the last five mean points in that side of the wire. For a thin wire where we may not have many input points, a minimum of two mean points are still required to construct .
Figure 13c shows the “unassigned” points
in black circles.
are the intersection points between
and the perpendicular lines from
to
. For each
the height error
is compared with a height threshold
, which is estimated by considering the maximum slope of the wire
and the distances
from the nearest end of
to
:
(see
Figure 13c). For an unassigned point
, it is assigned to the wire if
. For all newly assigned points in an iteration, their mean is added to the wire segment. After each iteration,
,
and
are updated considering the new mean point.
Figure 13c shows the newly added three mean points in orange circles.
If, after the process for extraction of a wire is complete, it is decided as a double wire (
), its mean points are used to divide all its “assigned” points into two wires. As evident from the bottom three pairs of wires in
Figure 13a, the mean (magenta) points can be used to separate the (cyan) points into two wires. Otherwise, if it is a single wire (
), it has only one wire, as can be evident from the top single wire in
Figure 13a. Finally, each wire is modelled as a 3D polynomial curve [
23] using the MATLAB
polyfit function.
Figure 13d shows the 3D wires for the input point cloud in
Figure 12d. Six pairs of double wires are shown in green and magenta, while two single wires are shown in cyan.