#include <assert.h>#include "texture.h"#include "picimage.h"#include <cmath>Go to the source code of this file.
Defines | |
| #define | MASK_INTENSITIES(TYPE, PIC) |
| #define | BINARY_INTENSITIES(TYPE, PIC) |
| #define | LIMIT_INTENSITIES(TYPE, PIC) |
| #define | PIC_IMAGE_PI 3.141592653589 |
Functions | |
| template<class T > | |
| void | RGBtoHSI (T *RGB, T *HSI) |
| template<class T > | |
| void | HSItoRGB (T *HSI, T *RGB) |
| #define BINARY_INTENSITIES | ( | TYPE, | |
| PIC | |||
| ) |
{ \
TYPE* source = (TYPE *) src; \
unsigned char* dest = dst; \
register float a; \
if (model () == INTENSITY) \
while (dest < eol) { \
a = source [0] * scale - bias; \
*dest = (a > 255.0 ? 255 : (a < 0.0 ? 0 : 255)); \
source++; \
dest++; \
} else \
if (model () == INTENSITY_ALPHA) \
while (dest < eol) { \
a = source [0] * scale - bias; \
dest [0] = (a > 255.0 ? 255 : (a < 0.0 ? 0 : 255)); \
dest [1] = (a > 0.0 ? 255 : 0); \
source++; \
dest += 2; \
} \
}
Definition at line 235 of file picimage.cpp.
Referenced by iil4mitkPicImage::copyImage().
| #define LIMIT_INTENSITIES | ( | TYPE, | |
| PIC | |||
| ) |
Definition at line 257 of file picimage.cpp.
Referenced by iil4mitkPicImage::copyImage().
| #define MASK_INTENSITIES | ( | TYPE, | |
| PIC | |||
| ) |
{ \
TYPE* source = (TYPE *) src; \
unsigned char* dest = dst; \
register float a; \
if (model () == INTENSITY) \
while (dest < eol) { \
a = source [0] * scale - bias; \
*dest = (a > 255.0 ? 0 : (a < 0.0 ? 0 : 255)); \
source++; \
dest++; \
} else \
if (model () == INTENSITY_ALPHA) \
while (dest < eol) { \
a = source [0] * scale - bias; \
dest [1] = dest [0] = (a > 255.0 ? 0 : (a < 0.0 ? 0 : 255)); \
source++; \
dest += 2; \
} \
}
Definition at line 214 of file picimage.cpp.
Referenced by iil4mitkPicImage::copyImage().
| #define PIC_IMAGE_PI 3.141592653589 |
Definition at line 402 of file picimage.cpp.
Referenced by HSItoRGB(), and RGBtoHSI().
| void HSItoRGB | ( | T * | HSI, |
| T * | RGB | ||
| ) |
Definition at line 429 of file picimage.cpp.
References PIC_IMAGE_PI.
{
T H = (T)HSI[0],
S = (T)HSI[1],
I = (T)HSI[2],
a = I*(1-S),
R = 0, G = 0, B = 0;
if (H<120) {
B = a;
R = (T)(I*(1+S*std::cos(H*PIC_IMAGE_PI/180)/std::cos((60-H)*PIC_IMAGE_PI/180)));
G = 3*I-(R+B);
} else if (H<240) {
H-=120;
R = a;
G = (T)(I*(1+S*std::cos(H*PIC_IMAGE_PI/180)/std::cos((60-H)*PIC_IMAGE_PI/180)));
B = 3*I-(R+G);
} else {
H-=240;
G = a;
B = (T)(I*(1+S*std::cos(H*PIC_IMAGE_PI/180)/std::cos((60-H)*PIC_IMAGE_PI/180)));
R = 3*I-(G+B);
}
R*=255; G*=255; B*=255;
RGB[0] = (T)(R<0?0:(R>255?255:R));
RGB[1] = (T)(G<0?0:(G>255?255:G));
RGB[2] = (T)(B<0?0:(B>255?255:B));
}
| void RGBtoHSI | ( | T * | RGB, |
| T * | HSI | ||
| ) |
Definition at line 408 of file picimage.cpp.
References PIC_IMAGE_PI, QuadProgPP::pow(), QuadProgPP::sqrt(), and QuadProgPP::sum().
{
T R = RGB[0],
G = RGB[1],
B = RGB[2],
nR = (R<0?0:(R>255?255:R))/255,
nG = (G<0?0:(G>255?255:G))/255,
nB = (B<0?0:(B>255?255:B))/255,
m = nR<nG?(nR<nB?nR:nB):(nG<nB?nG:nB),
theta = (T)(std::acos(0.5f*((nR-nG)+(nR-nB))/std::sqrt(std::pow(nR-nG,2)+(nR-nB)*(nG-nB)))*180/PIC_IMAGE_PI),
sum = nR + nG + nB;
T H = 0, S = 0, I = 0;
if (theta>0) H = (nB<=nG)?theta:360-theta;
if (sum>0) S = 1 - 3/sum*m;
I = sum/3;
HSI[0] = (T)H;
HSI[1] = (T)S;
HSI[2] = (T)I;
}
1.7.2