Setting TransferFunction in 3D

Sample code for general purpose colour/opacity adjustment.

The result might not good good on particular data because this is intended purely for demonstration purposes!

 Color[] TF = new Color[1000];
 int[] lookup = new int[] { 
	// Hounsfield value, Red, Green, Blue, Alpha
	0,0,0,0,0, // 1-100 = transparent
	200,0,0,0,0,
	580,255,255,255,50,
	660,0,0,255,200,
	900,255,0,0,0, // 900 up = transparent
	1000,255,255,0,0
 };
    
 for (int j = 0; j < lookup.Length; j += 5)
 {
	for (int ii = 0; ii < lookup[j]; ii++)
	{
	   float p0 = (float)(ii - lookup[j - 5]) / (lookup[j] - lookup[j - 5]);
	   float p1 = (float)(lookup[j] - ii) / (lookup[j] - lookup[j - 5]);

	   int r = (int)(lookup[j + 1] * p0 + lookup[j - 4] * p1);
	   int g = (int)(lookup[j + 2] * p0 + lookup[j - 3] * p1);
	   int b = (int)(lookup[j + 3] * p0 + lookup[j - 2] * p1);
	   int a = (int)(lookup[j + 4] * p0 + lookup[j - 1] * p1);

	   TF[ii] = Color.FromArgb(a, r, g, b);
	}
 }
 
 image_3D.SetTransferFunction(0, 1000, TF); // image_3D is a DicomImage3D instance
 

Sample output:

3D Image


We use cookies to give you the best possible experience on our website. By continuing to use this website, you agree with our use of cookies. for more information please click HERE