25 #include "transferFunction.h" 29 #define SQR(a) ((a) * (a)) 32 #define CUB(a) ((a) * (a) * (a)) 37 void TransferFunction::GetGrayScaleTFE (
int min,
int max,
int *elemSize,
unsigned char **ptr) {
40 *elemSize = max-min+2;
42 *ptr =
new unsigned char[*elemSize];
43 aux = 1./(max-min+1)*9;
46 for (
int i = 1 ; i < *elemSize; i++)
47 (*ptr)[i] = (
unsigned char)(log(i*aux+1.)*255);
51 void TransferFunction::GetGrayScaleTFL (
int min,
int max,
int *elemSize,
unsigned char **ptr) {
54 *elemSize = max-min+2;
56 *ptr =
new unsigned char[*elemSize];
60 for (
int i = 1 ; i < *elemSize; i++)
61 (*ptr)[i] = (
unsigned char)(i*aux*255);
64 void TransferFunction::GetGrayScaleTFS (
int min,
int max,
int *elemSize,
unsigned char **ptr) {
67 *elemSize = max-min+2;
69 *ptr =
new unsigned char[*elemSize];
73 for (
int i = 1 ; i < *elemSize; i++)
74 (*ptr)[i] = (
unsigned char)(SQR(i*aux)*255);
77 void TransferFunction::GetGrayScaleTFC (
int min,
int max,
int *elemSize,
unsigned char **ptr) {
80 *elemSize = max-min+2;
82 *ptr =
new unsigned char[*elemSize];
86 for (
int i = 1 ; i < *elemSize; i++)
87 (*ptr)[i] = (
unsigned char)(CUB(i*aux)*255);
92 void TransferFunction::GetGrayScaleTFD (
int min,
int max,
int *elemSize,
unsigned char **ptr,
unsigned short nbitsalloc) {
98 *ptr =
new unsigned char[*elemSize];
100 aux = (1.*pow(2,8))/pow(2,nbitsalloc);
102 node1 = (int)(min*aux);
103 node2 = (int)(max*aux);
105 for (
int i = 0 ; i < node1; i++)
107 for (
int i = node1 ; i < node2+1; i++)
108 (*ptr)[i] = (
unsigned char)((1.0*(i-node1))/(node2-node1)*255);
109 for (
int i = node2+1; i < *elemSize; i++)
113 void TransferFunction::GetGrayScaleTF (
int tag,
int min,
int max,
114 int *elemSize,
unsigned char **ptr) {
119 GetGrayScaleTFE (min, max, elemSize, ptr);
122 GetGrayScaleTFL (min, max, elemSize, ptr);
125 GetGrayScaleTFS (min, max, elemSize, ptr);
128 GetGrayScaleTFC (min, max, elemSize, ptr);
133 void TransferFunction::GetGrayScaleTF (
int tag,
int min,
int max,
134 int *elemSize,
unsigned char **ptr,
unsigned short nbitsalloc) {
139 GetGrayScaleTFD (min, max, elemSize, ptr, nbitsalloc);
144 void TransferFunction::GetRGBTF (
int tag,
int min,
int max,
145 int *elemSize,
unsigned char **ptr) {
149 unsigned char tabelaCor [] = {
188 *elemSize =
sizeof(tabelaCor);
190 *ptr =
new unsigned char[*elemSize];
192 memcpy (*ptr, tabelaCor, *elemSize);