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)
 
(32 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=
# Mean Weighted pixel value difference
==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:
## [[File:MeanWeightedPixelValueFormula.png|300px|File:MeanWeightedPixelValueFormula.png]]
## [[File:MeanWeightedPixelValueFormula.png|300px|File:MeanWeightedPixelValueFormula.png]]
# Average Hausdorff Distance (itk filter)
# Average Hausdorff Distance (itk filter)
Line 25: Line 26:
==Summer 2020==
==Summer 2020==


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


=== KNN, number of points = 4, power = 1.5 ===
=== KNN, number of points = 4, power = 1.5 ===
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 73: Line 74:


===Best Algorithm===
===Best Algorithm===
Evidently the best algorithm both visually and by looking into the metrics is the last option.
Evidently, the best algorithm both visually and by looking into the metrics is algorithm 4.
 
=Examples of PODM with changed weights=
==Summer 2020==
 
<gallery mode="packed" heights=300px>
File:NT-image.png
File:NT-mesh.png
File:NT_140519,d=5,wl=0.07,me=1.png
</gallery>
 
===Modifying Area based on X 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) {
    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) {
    if (points[i][1] >= 95 && points[i][1] <= 101)
        pointWeights[i] = maxWeight + pointWeights[i];
}
</syntaxhighlight>
 
<gallery mode="packed" heights=450px>
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'''
 
<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][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>

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];
}