CNF:Weighted Mesh To Image: Difference between revisions

From crtc.cs.odu.edu
Jump to navigation Jump to search
Spyridon97 (talk | contribs)
Spyridon97 (talk | contribs)
 
(19 intermediate revisions by the same user not shown)
Line 2: Line 2:


=Repository=
=Repository=
# https://git-community.cs.odu.edu/crtc/Utilities/weightedmeshtoimage
# [https://git-community.cs.odu.edu/crtc/nuclear-physics/weightedmeshtoimage Gitlab]


=Code=
=Algorithms=
==Summer 2020==
==Summer 2020==
Create a new image using the weights of:
Create a new image using the weights of:
Line 13: Line 13:
## Note 1: If the Intersection set is empty, then the algorithm `2` will be used.
## Note 1: If the Intersection set is empty, then the algorithm `2` will be used.
## Note 2: If the pixel point is not inside a cell, then the algorithm `1` will be used.
## Note 2: If the pixel point is not inside a cell, then the algorithm `1` will be used.
# cell points as values in a weighted-mean, were weight[i] = probe-value[i] based on the location of each pixel point inside a cell. Probing values are result of FindCell function.
# cell points as values in a weighted-mean, were weight[i] = interpolation-value[i] based on the location of each pixel point inside a cell. Interpolation-values are the result of the FindCell function.
## Note: If the pixel point is not inside a cell, then the algorithm `1` will be used.
## Note: If the pixel point is not inside a cell, then the algorithm `1` will be used.


Comparison Metrics:
=Comparison Metrics=
==Summer 2020==
# Let a and b be the sets of pixel values of input and output image, then the mean weighted pixel difference value is:
# Let a and b be the sets of pixel values of input and output image, then the mean weighted pixel difference value is:
## [[File:MeanWeightedPixelValueFormula.png|300px|File:MeanWeightedPixelValueFormula.png]]
## [[File:MeanWeightedPixelValueFormula.png|300px|File:MeanWeightedPixelValueFormula.png]]
Line 61: Line 62:
# Similarity Index: 0.986463
# Similarity Index: 0.986463


=== Cell points with probing weights, number of points = 4, power = 1.5 ===
=== Cell points with interpolation weights, number of points = 4, power = 1.5 ===
<gallery mode="packed" heights=400px>
<gallery mode="packed" heights=400px>
File:NT-image.png
File:NT-image.png
Line 75: Line 76:
Evidently, the best algorithm both visually and by looking into the metrics is algorithm 4.
Evidently, the best algorithm both visually and by looking into the metrics is algorithm 4.


=Changed Weights Examples=
=Examples of PODM with changed weights=
==Summer 2020==
==Summer 2020==


Line 88: Line 89:


<syntaxhighlight lang="c++" line='line'>
<syntaxhighlight lang="c++" line='line'>
auto maxWeight = *std::max_element(pointWeights.begin(), pointWeights.end());
for (size_t i = 0; i < numberOfPoints; ++i) {
    if (points[i][0] >= 15 && points[i][0] <= 20)
        pointWeights[i] = maxWeight + pointWeights[i];
}
</syntaxhighlight>
<gallery mode="packed" heights=400px>
File:NT-x_15_20_image.png
File:NT-x_15_20_mesh.png
</gallery>
===Modifying Area based on Y coordinate===
'''Algorithm 4 will be used'''


<syntaxhighlight lang="c++" line='line'>
auto maxWeight = *std::max_element(pointWeights.begin(), pointWeights.end());
for (size_t i = 0; i < numberOfPoints; ++i) {
for (size_t i = 0; i < numberOfPoints; ++i) {
     if (points[i][0] >= 15 && points[i][0] <= 20)
     if (points[i][1] >= 95 && points[i][1] <= 101)
         pointWeights[i] = maxWeight + pointWeights[i];
         pointWeights[i] = maxWeight + pointWeights[i];
}
}
</syntaxhighlight>
</syntaxhighlight>


[[File:NT-x_15_20_image.png|500px|File:NT-x_15_20_image.png]]
<gallery mode="packed" heights=450px>
[[File:NT-x_15_20_mesh.png|500px|File:NT-x_15_20_mesh.png]]
File:NT-y_95_101_image.png
File:NT-y_95_101_mesh.png
</gallery>


===Modifying Area based on Z coordinate===
'''Algorithm 4 will be used'''


<gallery mode="packed" heights=300px>
<syntaxhighlight lang="c++" line='line'>
File:NT-image-inverted.png
auto maxWeight = *std::max_element(pointWeights.begin(), pointWeights.end());
File:NT-inverted-mesh.png
for (size_t i = 0; i < numberOfPoints; ++i) {
    if (points[i][2] >= 43 && points[i][2] <= 53)
        pointWeights[i] = maxWeight + pointWeights[i];
}
</syntaxhighlight>
 
<gallery mode="packed" heights=400px>
File:NT-z_43_53_image.png
File:NT-z_43_53_mesh.png
</gallery>
</gallery>

Latest revision as of 11:10, 13 April 2021

Repository

  1. Gitlab

Algorithms

Summer 2020

Create a new image using the weights of:

  1. k-nearest-neighbors points as values in a weighted-mean, were weight[i] = 1 / distance(pixel-point, neighbor-point[i]) ^ power.
  2. cell points as values in a weighted-mean, were weight[i] = 1 / distance(pixel-point, cell-point[i]) ^ power.
    1. Note: If the pixel point is not inside a cell, then the algorithm `1` will be used.
  3. the intersection set of k-nearest-neighbors points and cell points as values in a weighted-mean, were weight[i] = 1 / distance(pixel-point, intersection-point[i]) ^ power.
    1. Note 1: If the Intersection set is empty, then the algorithm `2` will be used.
    2. Note 2: If the pixel point is not inside a cell, then the algorithm `1` will be used.
  4. cell points as values in a weighted-mean, were weight[i] = interpolation-value[i] based on the location of each pixel point inside a cell. Interpolation-values are the result of the FindCell function.
    1. Note: If the pixel point is not inside a cell, then the algorithm `1` will be used.

Comparison Metrics

Summer 2020

  1. Let a and b be the sets of pixel values of input and output image, then the mean weighted pixel difference value is:
    1. File:MeanWeightedPixelValueFormula.png
  2. Average Hausdorff Distance (itk filter)
  3. Similarity Index (itk filter)

Comparison Examples

Summer 2020

Left: Image, Middle: Algorithm Result. Right: Mesh

KNN, number of points = 4, power = 1.5

  1. Mean Weighted pixel value difference: 0.000395461
  2. Average Hausdorff Distance: 0.030885
  3. Similarity Index: 0.986463

Cell Points, number of points = 4, power = 1.5

  1. Mean Weighted pixel value difference: 0.0002258
  2. Average Hausdorff Distance: 0.030885
  3. Similarity Index: 0.986463

Intersection of KNN and Cell points, number of points = 5, power = 1.5

  1. Mean Weighted pixel value difference: 0.000273839
  2. Average Hausdorff Distance: 0.030885
  3. Similarity Index: 0.986463

Cell points with interpolation weights, number of points = 4, power = 1.5

  1. Mean Weighted pixel value difference: 9.17551e-05
  2. Average Hausdorff Distance: 0.030885
  3. Similarity Index: 0.986463

Best Algorithm

Evidently, the best algorithm both visually and by looking into the metrics is algorithm 4.

Examples of PODM with changed weights

Summer 2020

Modifying Area based on X coordinate

Algorithm 4 will be used

auto maxWeight = *std::max_element(pointWeights.begin(), pointWeights.end());
for (size_t i = 0; i < numberOfPoints; ++i) {
    if (points[i][0] >= 15 && points[i][0] <= 20)
        pointWeights[i] = maxWeight + pointWeights[i];
}

Modifying Area based on Y coordinate

Algorithm 4 will be used

auto maxWeight = *std::max_element(pointWeights.begin(), pointWeights.end());
for (size_t i = 0; i < numberOfPoints; ++i) {
    if (points[i][1] >= 95 && points[i][1] <= 101)
        pointWeights[i] = maxWeight + pointWeights[i];
}

Modifying Area based on Z coordinate

Algorithm 4 will be used

auto maxWeight = *std::max_element(pointWeights.begin(), pointWeights.end());
for (size_t i = 0; i < numberOfPoints; ++i) {
    if (points[i][2] >= 43 && points[i][2] <= 53)
        pointWeights[i] = maxWeight + pointWeights[i];
}