DicomImage image = new DicomImage("your_dicom_image.dcm);
bool modalityTransform = false;
var rawPixelValues = image.PixelValuesByFrame(1, modalityTransform);
modalityTransform = true;
var transformedPixelValues = image.PixelValuesByFrame(1, modalityTransform);
if (rawPixelsValues is ushort[] ushortPixels)
{
ushort min = ushortPixels.Min();
ushort max = ushortPixels.Max();
double avg = ushortPixels.Average(p => (double)p);
double stdDev = Math.Sqrt(ushortPixels.Select(p => Math.Pow(p - avg, 2)).Average());
Console.WriteLine($"Min: {min}, Max: {max}, Avg: {avg:F2}, StdDev: {stdDev:F2}");
}
else if (rawPixelsValues is byte[] bytePixels)
{
byte min = bytePixels.Min();
byte max = bytePixels.Max();
double avg = bytePixels.Average(p => (double)p);
double stdDev = Math.Sqrt(bytePixels.Select(p => Math.Pow(p - avg, 2)).Average());
Console.WriteLine($"Min: {min}, Max: {max}, Avg: {avg:F2}, StdDev: {stdDev:F2}");
}
else if (rawPixelsValues is short[] shortPixels)
{
short min = shortPixels.Min();
short max = shortPixels.Max();
double avg = shortPixels.Average(p => (double)p);
double stdDev = Math.Sqrt(shortPixels.Select(p => Math.Pow(p - avg, 2)).Average());
Console.WriteLine($"Min: {min}, Max: {max}, Avg: {avg:F2}, StdDev: {stdDev:F2}");
}