Skip to content

Commit

Permalink
add segy, revise rebar cover depth
Browse files Browse the repository at this point in the history
  • Loading branch information
SteveYangFASTNDE committed Jun 7, 2024
1 parent 7156c12 commit d7c42e5
Show file tree
Hide file tree
Showing 22 changed files with 814 additions and 490 deletions.
12 changes: 6 additions & 6 deletions docs/GPR/Applications/Cover_depth_measurement.html
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ <h2>Rebar Cover Depth Results<a class="headerlink" href="#rebar-cover-depth-resu
<a class="reference internal image-reference" href="../../_images/figure5.png"><img alt="figure 5" class="align-center" src="../../_images/figure5.png" style="width: 1000px;" /></a>
<p>Figure 5. Rebar cover depth result from Mississippi I-10 Region 01.</p>
<p>Once we have obtained the rebar points from all regions, CHARISMA generates the rebar cover depth contour map for the entire bridge. It combines all the rebar point lists from individual regions and establishes a grid space based on the XML file. There are two options available: one involves plotting without interpolating the gap among regions (Figure 6(a)), while the other interpolates the entire bridge based on the gathered rebar points (Figure 6(b)). Since we use the linear interpolation method, there is no available value for the edges, which is shown in grey color.</p>
<a class="reference internal image-reference" href="../../_images/figure6.png"><img alt="figure 5" class="align-center" src="../../_images/figure6.png" style="width: 1000px;" /></a>
<a class="reference internal image-reference" href="../../_images/figure6.png"><img alt="figure 6" class="align-center" src="../../_images/figure6.png" style="width: 1000px;" /></a>
<p>Figure 6. CHARISMA output: 2D contour plot of rebar cover depth on Mississippi I-10 concrete bridge without interpolating the gap among regions (a), and with interpolating the entire bridge (b).</p>
</section>
<section id="discussion">
Expand Down Expand Up @@ -216,8 +216,8 @@ <h3>Rebar Cover Depth Measurement<a class="headerlink" href="#rebar-cover-depth-
<p><code class="code docutils literal notranslate"><span class="pre">num_clusters</span></code>: The maximum number of rebar locations in the split B-scan. We use the K-means clustering algorithm for the rebar mapping, and our method requires this parameter to pinpoint the centroid of each cluster. For a detailed explanation, readers are redirected to the following URL: (<a class="reference external" href="https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html">https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html</a>). We recommend counting the number of rebars in one of the split B-scans and multiplying 2 to make sure the algorithm can locate rebars properly. For example, if the number of rebars in the split GPR B-scan is 50, input 100 as num_clusters.</p>
<p><code class="code docutils literal notranslate"><span class="pre">amplitude_threshold</span></code>: The threshold value to detect rebar locations. If the signal amplitude in B-scans is below this threshold parameter, the code does not recognize the cluster as rebar. For example, you set this parameter as 0.50, and if there are some attenuated points on the migrated B-scans below 50% of the maximum amplitude, then the algorithm will pass the point and not consider it as rebar. If the threshold is too low, then most of the diffracted signals below adjacent parabolas are also recognized as rebars and result in poor output. If the threshold is too high, the code fails to capture most of the rebars and fails to achieve the objective.</p>
<p><code class="code docutils literal notranslate"><span class="pre">depth_threshold</span></code>: The maximum depth of the bridge in inches. The signal below this value will not be counted as rebar. For example, if you know the ground truth of the bridge depth, use that value as the parameter.</p>
<p><code class="code docutils literal notranslate"><span class="pre">minimal_y_index</span></code>: The initial y-axis index of the B-scan to skip the 1st positive peak from the rebar counting. We recommend using the value between 10 and 20.</p>
<p><code class="code docutils literal notranslate"><span class="pre">redundancy_filter</span></code>: Since we use the K-means clustering algorithm and use sufficient numbers for the num_clusters, there should be some redundant rebar points. This parameter is the criterion for removing the centroid points if they are too close along the x-axis. For example, if the value is 1, we remove adjacent points if the distance between them is shorter than 1 inch along the survey line. If there are redundant points and the depth is different, the code removes the deeper points and remains shallower points.</p>
<p><code class="code docutils literal notranslate"><span class="pre">minimal_y_index</span></code>: The initial y-axis index of the B-scan to skip the 1st positive peak from the rebar counting. We recommend using the value between 10 and 20 (The number is data index, not inch or feet).</p>
<p><code class="code docutils literal notranslate"><span class="pre">redundancy_filter</span></code>: Since we use the K-means clustering algorithm and use sufficient numbers for the num_clusters, there should be some redundant rebar points. This parameter determines the criterion for removing centroid points that are too close along the x-axis. For instance, if the value is 2, we remove adjacent points if the distance between them is less than 2 units along the survey line, measured in data dimensions rather than physical units like inches or feet.</p>
<p><code class="code docutils literal notranslate"><span class="pre">scaling_factor</span></code>: Used for better contrast for B-scans. We recommend using between 0.2 to 0.5.</p>
<p>We will discuss our criteria for determining each variable and parameter for utilizing our <code class="code docutils literal notranslate"><span class="pre">RebarCoverDepth</span></code> Python class. Here we will show only Lane 01 of Zone 01 and process the other zones with the same criteria. The initial step is inputting the correct values for <code class="code docutils literal notranslate"><span class="pre">zone_number</span></code>, <code class="code docutils literal notranslate"><span class="pre">gpr_lanes</span></code>, and <code class="code docutils literal notranslate"><span class="pre">home_dir</span></code> based on Figure 3. The <code class="code docutils literal notranslate"><span class="pre">chunk_size</span></code> is determined based on the GPR data length, which is printed at the beginning of the code:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>The<span class="w"> </span>data<span class="w"> </span>length<span class="w"> </span>is<span class="w"> </span><span class="m">13436</span><span class="w"> </span>which<span class="w"> </span>is<span class="w"> </span><span class="m">537</span>.30<span class="w"> </span><span class="o">(</span>feet<span class="o">)</span>
Expand Down Expand Up @@ -255,15 +255,15 @@ <h3>Rebar Cover Depth Measurement<a class="headerlink" href="#rebar-cover-depth-
<p>The next step involves determining the parameters for identifying rebars. This requires users to estimate the number of rebars in the split B-scan. Users should select a B-scan segment, which has dense rebar regions from the entire B-scan and count the white spots (Refer to Figure 11). In this case, the rebar count was 50, leading us to set the <code class="code docutils literal notranslate"><span class="pre">num_clusters</span></code> to 50*2=100. Since we did not utilize the gain function, the <code class="code docutils literal notranslate"><span class="pre">amplitude_threshold</span></code> was set at 0.52, indicating that positive signals above 52% of the maximum amplitude are considered rebars. Additionally, knowing the bridge depth is 8 inches, we set the <code class="code docutils literal notranslate"><span class="pre">depth_threshold</span></code> to 8. To exclude initial positive peaks, we set the <code class="code docutils literal notranslate"><span class="pre">minimal_y_index</span></code> to 20. Finally, to eliminate overlapping rebar locations within 1.5 inches, we applied a <code class="code docutils literal notranslate"><span class="pre">redundancy_filter</span></code> of 1.5 and utilized the default setting <code class="code docutils literal notranslate"><span class="pre">scaling_factor</span></code> of 0.25.</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nv">num_clusters</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">100</span>,

<span class="nv">amplitude_threshold</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span>.52,
<span class="nv">amplitude_threshold</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span>.51,

<span class="nv">depth_threshold</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">8</span>,

<span class="nv">minimal_y_index</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">20</span>,

<span class="nv">redundancy_filter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">1</span>.5,
<span class="nv">redundancy_filter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">2</span>,

<span class="nv">scaling_factor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span>.25
<span class="nv">scaling_factor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span>.27
</pre></div>
</div>
<a class="reference internal image-reference" href="../../_images/figure11.png"><img alt="figure 11" class="align-center" src="../../_images/figure11.png" style="width: 1000px;" /></a>
Expand Down
12 changes: 6 additions & 6 deletions docs/GPR/Applications/rebar_cover_depth_case_study.html
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ <h1>Rebar Cover Depth Results<a class="headerlink" href="#rebar-cover-depth-resu
<a class="reference internal image-reference" href="../../_images/figure5.png"><img alt="figure 5" class="align-center" src="../../_images/figure5.png" style="width: 1000px;" /></a>
<p>Figure 5. Rebar cover depth result from Mississippi I-10 Region 01.</p>
<p>Once we have obtained the rebar points from all regions, CHARISMA generates the rebar cover depth contour map for the entire bridge. It combines all the rebar point lists from individual regions and establishes a grid space based on the XML file. There are two options available: one involves plotting without interpolating the gap among regions (Figure 6(a)), while the other interpolates the entire bridge based on the gathered rebar points (Figure 6(b)). Since we use the linear interpolation method, there is no available value for the edges, which is shown in grey color.</p>
<a class="reference internal image-reference" href="../../_images/figure6.png"><img alt="figure 5" class="align-center" src="../../_images/figure6.png" style="width: 1000px;" /></a>
<a class="reference internal image-reference" href="../../_images/figure6.png"><img alt="figure 6" class="align-center" src="../../_images/figure6.png" style="width: 1000px;" /></a>
<p>Figure 6. CHARISMA output: 2D contour plot of rebar cover depth on Mississippi I-10 concrete bridge without interpolating the gap among regions (a), and with interpolating the entire bridge (b).</p>
</section>
<section id="discussion">
Expand Down Expand Up @@ -191,8 +191,8 @@ <h2>Rebar Cover Depth Measurement<a class="headerlink" href="#rebar-cover-depth-
<p><code class="code docutils literal notranslate"><span class="pre">num_clusters</span></code>: The maximum number of rebar locations in the split B-scan. We use the K-means clustering algorithm for the rebar mapping, and our method requires this parameter to pinpoint the centroid of each cluster. For a detailed explanation, readers are redirected to the following URL: (<a class="reference external" href="https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html">https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html</a>). We recommend counting the number of rebars in one of the split B-scans and multiplying 2 to make sure the algorithm can locate rebars properly. For example, if the number of rebars in the split GPR B-scan is 50, input 100 as num_clusters.</p>
<p><code class="code docutils literal notranslate"><span class="pre">amplitude_threshold</span></code>: The threshold value to detect rebar locations. If the signal amplitude in B-scans is below this threshold parameter, the code does not recognize the cluster as rebar. For example, you set this parameter as 0.50, and if there are some attenuated points on the migrated B-scans below 50% of the maximum amplitude, then the algorithm will pass the point and not consider it as rebar. If the threshold is too low, then most of the diffracted signals below adjacent parabolas are also recognized as rebars and result in poor output. If the threshold is too high, the code fails to capture most of the rebars and fails to achieve the objective.</p>
<p><code class="code docutils literal notranslate"><span class="pre">depth_threshold</span></code>: The maximum depth of the bridge in inches. The signal below this value will not be counted as rebar. For example, if you know the ground truth of the bridge depth, use that value as the parameter.</p>
<p><code class="code docutils literal notranslate"><span class="pre">minimal_y_index</span></code>: The initial y-axis index of the B-scan to skip the 1st positive peak from the rebar counting. We recommend using the value between 10 and 20.</p>
<p><code class="code docutils literal notranslate"><span class="pre">redundancy_filter</span></code>: Since we use the K-means clustering algorithm and use sufficient numbers for the num_clusters, there should be some redundant rebar points. This parameter is the criterion for removing the centroid points if they are too close along the x-axis. For example, if the value is 1, we remove adjacent points if the distance between them is shorter than 1 inch along the survey line. If there are redundant points and the depth is different, the code removes the deeper points and remains shallower points.</p>
<p><code class="code docutils literal notranslate"><span class="pre">minimal_y_index</span></code>: The initial y-axis index of the B-scan to skip the 1st positive peak from the rebar counting. We recommend using the value between 10 and 20 (The number is data index, not inch or feet).</p>
<p><code class="code docutils literal notranslate"><span class="pre">redundancy_filter</span></code>: Since we use the K-means clustering algorithm and use sufficient numbers for the num_clusters, there should be some redundant rebar points. This parameter determines the criterion for removing centroid points that are too close along the x-axis. For instance, if the value is 2, we remove adjacent points if the distance between them is less than 2 units along the survey line, measured in data dimensions rather than physical units like inches or feet.</p>
<p><code class="code docutils literal notranslate"><span class="pre">scaling_factor</span></code>: Used for better contrast for B-scans. We recommend using between 0.2 to 0.5.</p>
<p>We will discuss our criteria for determining each variable and parameter for utilizing our <code class="code docutils literal notranslate"><span class="pre">RebarCoverDepth</span></code> Python class. Here we will show only Lane 01 of Zone 01 and process the other zones with the same criteria. The initial step is inputting the correct values for <code class="code docutils literal notranslate"><span class="pre">zone_number</span></code>, <code class="code docutils literal notranslate"><span class="pre">gpr_lanes</span></code>, and <code class="code docutils literal notranslate"><span class="pre">home_dir</span></code> based on Figure 3. The <code class="code docutils literal notranslate"><span class="pre">chunk_size</span></code> is determined based on the GPR data length, which is printed at the beginning of the code:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>The<span class="w"> </span>data<span class="w"> </span>length<span class="w"> </span>is<span class="w"> </span><span class="m">13436</span><span class="w"> </span>which<span class="w"> </span>is<span class="w"> </span><span class="m">537</span>.30<span class="w"> </span><span class="o">(</span>feet<span class="o">)</span>
Expand Down Expand Up @@ -230,15 +230,15 @@ <h2>Rebar Cover Depth Measurement<a class="headerlink" href="#rebar-cover-depth-
<p>The next step involves determining the parameters for identifying rebars. This requires users to estimate the number of rebars in the split B-scan. Users should select a B-scan segment, which has dense rebar regions from the entire B-scan and count the white spots (Refer to Figure 11). In this case, the rebar count was 50, leading us to set the <code class="code docutils literal notranslate"><span class="pre">num_clusters</span></code> to 50*2=100. Since we did not utilize the gain function, the <code class="code docutils literal notranslate"><span class="pre">amplitude_threshold</span></code> was set at 0.52, indicating that positive signals above 52% of the maximum amplitude are considered rebars. Additionally, knowing the bridge depth is 8 inches, we set the <code class="code docutils literal notranslate"><span class="pre">depth_threshold</span></code> to 8. To exclude initial positive peaks, we set the <code class="code docutils literal notranslate"><span class="pre">minimal_y_index</span></code> to 20. Finally, to eliminate overlapping rebar locations within 1.5 inches, we applied a <code class="code docutils literal notranslate"><span class="pre">redundancy_filter</span></code> of 1.5 and utilized the default setting <code class="code docutils literal notranslate"><span class="pre">scaling_factor</span></code> of 0.25.</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nv">num_clusters</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">100</span>,

<span class="nv">amplitude_threshold</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span>.52,
<span class="nv">amplitude_threshold</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span>.51,

<span class="nv">depth_threshold</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">8</span>,

<span class="nv">minimal_y_index</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">20</span>,

<span class="nv">redundancy_filter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">1</span>.5,
<span class="nv">redundancy_filter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">2</span>,

<span class="nv">scaling_factor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span>.25
<span class="nv">scaling_factor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span>.27
</pre></div>
</div>
<a class="reference internal image-reference" href="../../_images/figure11.png"><img alt="figure 11" class="align-center" src="../../_images/figure11.png" style="width: 1000px;" /></a>
Expand Down
6 changes: 5 additions & 1 deletion docs/GPR/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,11 @@ <h1>Ground Penetrating Radar<a class="headerlink" href="#ground-penetrating-rada
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="Physical_principle.html">Physical Principle</a></li>
<li class="toctree-l1"><a class="reference internal" href="open_data.html">Open Data</a></li>
<li class="toctree-l1"><a class="reference internal" href="open_data.html">Open Data</a><ul>
<li class="toctree-l2"><a class="reference internal" href="open_data.html#gssi-dzt-format">GSSI DZT format</a></li>
<li class="toctree-l2"><a class="reference internal" href="open_data.html#seg-y-format">SEG-Y format</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="Applications/index.html">NDE Applications</a><ul>
<li class="toctree-l2"><a class="reference internal" href="Applications/Rebar_mapping.html">Rebar Mapping</a></li>
<li class="toctree-l2"><a class="reference internal" href="Applications/Cover_depth_measurement.html">Cover Depth Measurement</a></li>
Expand Down
Loading

0 comments on commit d7c42e5

Please sign in to comment.