Skip to content

Commit 2d52d68

Browse files
committed
Inverse Pole Figures Implemented. Needs verified output for unit tests
Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>
1 parent 462edee commit 2d52d68

6 files changed

Lines changed: 24 additions & 23 deletions

File tree

Source/Apps/generate_ipf_density.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,9 @@ ebsdlib::FloatArrayType::Pointer generateRandomEulers(size_t numOrientations, un
9191
for(size_t i = 0; i < numOrientations; i++)
9292
{
9393
float* ptr = eulers->getTuplePointer(i);
94-
ptr[0] = phi1Dist(gen); // phi1: [0, 2pi)
95-
ptr[1] = std::acos(cosDist(gen)); // Phi: [0, pi] with uniform sphere coverage
96-
ptr[2] = phi2Dist(gen); // phi2: [0, 2pi)
94+
ptr[0] = phi1Dist(gen); // phi1: [0, 2pi)
95+
ptr[1] = std::acos(cosDist(gen)); // Phi: [0, pi] with uniform sphere coverage
96+
ptr[2] = phi2Dist(gen); // phi2: [0, 2pi)
9797
}
9898
return eulers;
9999
}
@@ -135,7 +135,7 @@ ebsdlib::UInt8ArrayType::Pointer convertARGBtoRGB(ebsdlib::UInt8ArrayType* argbI
135135
uint32_t pixel = *reinterpret_cast<uint32_t*>(argb);
136136
rgb[0] = static_cast<uint8_t>((pixel >> 16) & 0xFF); // R
137137
rgb[1] = static_cast<uint8_t>((pixel >> 8) & 0xFF); // G
138-
rgb[2] = static_cast<uint8_t>(pixel & 0xFF); // B
138+
rgb[2] = static_cast<uint8_t>(pixel & 0xFF); // B
139139
}
140140
return rgbImage;
141141
}

Source/Apps/generate_pole_figure.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,12 @@ void generatePoleFiguresForPhase(const LaueOps& ops, unsigned int laueOpsIndex,
108108
PoleFigureConfiguration_t config;
109109
config.eulers = eulers;
110110
config.imageDim = imageDim;
111-
config.lambertDim = 72;
111+
config.lambertDim = 64;
112112
config.numColors = 32;
113113
config.minScale = 0.0;
114114
config.maxScale = 0.0; // 0 = auto-scale
115115
config.sphereRadius = 1.0F;
116-
config.discrete = true;
116+
config.discrete = false;
117117
config.discreteHeatMap = false;
118118
config.labels = {poleFigureNames[0], poleFigureNames[1], poleFigureNames[2]};
119119
config.order = {0, 1, 2};

Source/EbsdLib/LaueOps/LaueOps.cpp

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -883,9 +883,12 @@ std::vector<UInt8ArrayType::Pointer> LaueOps::generateInversePoleFigure(InverseP
883883
ebsdlib::FloatArrayType::Pointer dirs2 = InversePoleFigureUtilities::computeIPFDirections(*this, config.eulers, config.sampleDirections[2]);
884884

885885
// Step 2: Compute intensity images for each (using stereographic SST mapping)
886-
ebsdlib::DoubleArrayType::Pointer intensity0 = InversePoleFigureUtilities::computeIPFIntensity(*this, dirs0.get(), config.imageWidth, config.imageHeight, config.lambertDim, config.normalizeMRD, true);
887-
ebsdlib::DoubleArrayType::Pointer intensity1 = InversePoleFigureUtilities::computeIPFIntensity(*this, dirs1.get(), config.imageWidth, config.imageHeight, config.lambertDim, config.normalizeMRD, true);
888-
ebsdlib::DoubleArrayType::Pointer intensity2 = InversePoleFigureUtilities::computeIPFIntensity(*this, dirs2.get(), config.imageWidth, config.imageHeight, config.lambertDim, config.normalizeMRD, true);
886+
ebsdlib::DoubleArrayType::Pointer intensity0 =
887+
InversePoleFigureUtilities::computeIPFIntensity(*this, dirs0.get(), config.imageWidth, config.imageHeight, config.lambertDim, config.normalizeMRD, true);
888+
ebsdlib::DoubleArrayType::Pointer intensity1 =
889+
InversePoleFigureUtilities::computeIPFIntensity(*this, dirs1.get(), config.imageWidth, config.imageHeight, config.lambertDim, config.normalizeMRD, true);
890+
ebsdlib::DoubleArrayType::Pointer intensity2 =
891+
InversePoleFigureUtilities::computeIPFIntensity(*this, dirs2.get(), config.imageWidth, config.imageHeight, config.lambertDim, config.normalizeMRD, true);
889892

890893
// Step 3: Find global min/max across all 3 intensity images (only for pixels inside SST, value >= 0)
891894
double globalMax = std::numeric_limits<double>::lowest();
@@ -956,17 +959,16 @@ std::array<float, 2> LaueOps::adjustFigureOrigin(std::array<float, 2> figureOrig
956959
}
957960

958961
// -----------------------------------------------------------------------------
959-
UInt8ArrayType::Pointer LaueOps::annotateIPFImage(UInt8ArrayType::Pointer triangleImage, int imageDim, int canvasDim, const std::string& title, bool generateEntirePlane,
960-
bool hasColorBar) const
962+
UInt8ArrayType::Pointer LaueOps::annotateIPFImage(UInt8ArrayType::Pointer triangleImage, int imageDim, int canvasDim, const std::string& title, bool generateEntirePlane, bool hasColorBar) const
961963
{
962964
const float fontPtSize = static_cast<float>(canvasDim) / 24.0f;
963965
// When a color bar will be drawn, use a wider right margin to make room
964966
float rightMargin = hasColorBar ? static_cast<float>(canvasDim / 3.5f) : static_cast<float>(canvasDim / 7.0f);
965967
const std::vector<float> margins = {
966-
fontPtSize * 3, // Top
967-
rightMargin, // Right
968-
fontPtSize * 2, // Bottom
969-
static_cast<float>(canvasDim / 7.0f) // Left
968+
fontPtSize * 3, // Top
969+
rightMargin, // Right
970+
fontPtSize * 2, // Bottom
971+
static_cast<float>(canvasDim / 7.0f) // Left
970972
};
971973

972974
int legendHeight = canvasDim - static_cast<int>(margins[0]) - static_cast<int>(margins[2]);

Source/EbsdLib/LaueOps/LaueOps.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -498,8 +498,7 @@ class EbsdLib_EXPORT LaueOps
498498
* @param generateEntirePlane true = full circle view, false = SST only
499499
* @return RGB image (canvasDim x canvasDim, 3 components)
500500
*/
501-
UInt8ArrayType::Pointer annotateIPFImage(UInt8ArrayType::Pointer triangleImage, int imageDim, int canvasDim, const std::string& title, bool generateEntirePlane,
502-
bool hasColorBar = false) const;
501+
UInt8ArrayType::Pointer annotateIPFImage(UInt8ArrayType::Pointer triangleImage, int imageDim, int canvasDim, const std::string& title, bool generateEntirePlane, bool hasColorBar = false) const;
503502

504503
/**
505504
* @brief Draws a color bar with min/max labels onto an existing RGB image.

Source/EbsdLib/Utilities/InversePoleFigureUtilities.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ class EbsdLib_EXPORT InversePoleFigureUtilities
107107
* @return DoubleArrayType intensity image (imageWidth * imageHeight). Pixels outside SST have value -1.0.
108108
*/
109109
static ebsdlib::DoubleArrayType::Pointer computeIPFIntensity(const LaueOps& ops, ebsdlib::FloatArrayType* ipfDirections, int imageWidth, int imageHeight, int lambertDim, bool normalizeMRD,
110-
bool useStereographicSST = false);
110+
bool useStereographicSST = false);
111111

112112
/**
113113
* @brief Converts an intensity image to RGBA with SST masking. Pixels inside the SST

Source/Test/PoleFigureCompositorTest.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
*
2929
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
3030

31-
3231
/**
3332
Test result: 39 mismatched pixels in Debug mode (confirmed Release passes).
3433
@@ -196,7 +195,7 @@ void GeneratePoleFigures(const std::string& phaseName, size_t opsIndex, hid_t ex
196195
UInt8ArrayType::Pointer image = result.image;
197196
std::string datasetName = fmt::format("{}", sampleId);
198197
#if WRITE_EXEMPLAR_IMAGES
199-
std::string outputPath = fmt::format("{}/Pole_Figure_Images/Pole_Figure_{}_{}_{}.tif", ebsdlib::unit_test::k_TestFilesDir, layoutStr,op->getRotationPointGroup() , sampleId);
198+
std::string outputPath = fmt::format("{}/Pole_Figure_Images/Pole_Figure_{}_{}_{}.tif", ebsdlib::unit_test::k_TestFilesDir, layoutStr, op->getRotationPointGroup(), sampleId);
200199
auto writerResult = TiffWriter::WriteColorImage(outputPath, result.width, result.height, 4, result.image->data());
201200
REQUIRE(writerResult.first == 0);
202201
//
@@ -230,9 +229,10 @@ TEST_CASE("ebsdlib::PoleFigureCompositorTest::All_Laue_Classes", "[EbsdLib][Pole
230229
const ebsdlib::unit_test::TestFileSentinel testDataSentinel(ebsdlib::unit_test::k_TestFilesDir, "Laue_Orientation_Clusters_v6.tar.gz", "Laue_Orientation_Clusters_v6", true, true);
231230
const ebsdlib::unit_test::TestFileSentinel testDataSentinel1(ebsdlib::unit_test::k_TestFilesDir, "Pole_Figure_Images.tar.gz", "Pole_Figure_Images"
232231
#if WRITE_EXEMPLAR_IMAGES
233-
, false, false
232+
,
233+
false, false
234234
#endif
235-
);
235+
);
236236

237237
const std::string hdfInputFile = fmt::format("{}/Pole_Figure_Images/Exemplar_Data.h5", ebsdlib::unit_test::k_TestFilesDir);
238238
hid_t fileId = -1;
@@ -249,7 +249,7 @@ TEST_CASE("ebsdlib::PoleFigureCompositorTest::All_Laue_Classes", "[EbsdLib][Pole
249249
fileId = H5Support::H5Utilities::openFile(hdfInputFile, true);
250250
}
251251
#endif
252-
REQUIRE(fileId > 0);
252+
REQUIRE(fileId > 0);
253253
H5Support::H5ScopedFileSentinel fileSentinel(fileId, false);
254254

255255
std::vector<LaueOps::Pointer> ops = LaueOps::GetAllOrientationOps();

0 commit comments

Comments
 (0)