347 virtual const char *
what()
const throw()
349 return (
"ChannelExtractor: type " + carto::DataTypeCode<T>::name() +
" not implemented").c_str();
474 carto::VolumeRef<C> out( in.getSizeX(), in.getSizeY(),
475 in.getSizeZ(), in.getSizeT() );
476 out->copyHeaderFrom( in.header() );
493 void getChannelR( carto::VolumeRef<AimsRGB>, carto::VolumeRef<C> );
494 void getChannelG( carto::VolumeRef<AimsRGB>, carto::VolumeRef<C> );
495 void getChannelB( carto::VolumeRef<AimsRGB>, carto::VolumeRef<C> );
497 void getChannelYl( carto::VolumeRef<AimsRGB>, carto::VolumeRef<C> );
498 void getChannelCb( carto::VolumeRef<AimsRGB>, carto::VolumeRef<C> );
499 void getChannelCr( carto::VolumeRef<AimsRGB>, carto::VolumeRef<C> );
500 void getChannelH( carto::VolumeRef<AimsRGB>, carto::VolumeRef<C> );
501 void getChannelS( carto::VolumeRef<AimsRGB>, carto::VolumeRef<C> );
502 void getChannelV( carto::VolumeRef<AimsRGB>, carto::VolumeRef<C> );
503 void getChannelX( carto::VolumeRef<AimsRGB>, carto::VolumeRef<C> );
504 void getChannelY( carto::VolumeRef<AimsRGB>, carto::VolumeRef<C> );
505 void getChannelZ( carto::VolumeRef<AimsRGB>, carto::VolumeRef<C> );
506 void getChannelL( carto::VolumeRef<AimsRGB>, carto::VolumeRef<C> );
507 void getChannela( carto::VolumeRef<AimsRGB>, carto::VolumeRef<C> );
508 void getChannelb( carto::VolumeRef<AimsRGB>, carto::VolumeRef<C> );
612 carto::VolumeRef<C> out( in.getSizeX(), in.getSizeY(),
613 in.getSizeZ(), in.getSizeT() );
614 out->copyHeaderFrom( in.header() );
673 long dimx = in.getSizeX(),
674 dimy = in.getSizeY(),
675 dimz = in.getSizeZ(),
676 dimt = in.getSizeT();
677 for(
long t=0; t< dimt; ++t )
678 for(
long z=0; z< dimz; ++z )
679 for(
long y=0; y< dimy; ++y )
680 for(
long x=0; x< dimx; ++x )
682 val = (double) in( x, y, z, t ).red()
683 + (double) in( x, y, z, t ).green()
684 + (double) in( x, y, z, t ).blue();
696 long dimx = in.getSizeX(),
697 dimy = in.getSizeY(),
698 dimz = in.getSizeZ(),
699 dimt = in.getSizeT();
700 for(
long t=0; t< dimt; ++t )
701 for(
long z=0; z< dimz; ++z )
702 for(
long y=0; y< dimy; ++y )
703 for(
long x=0; x< dimx; ++x )
705 val = 0.299 * (double) in( x, y, z, t ).red()
706 + 0.587 * (double) in( x, y, z, t ).green()
707 + 0.114 * (double) in( x, y, z, t ).blue();
718 long dimx = in.getSizeX(),
719 dimy = in.getSizeY(),
720 dimz = in.getSizeZ(),
721 dimt = in.getSizeT();
722 for(
long t=0; t< dimt; ++t )
723 for(
long z=0; z< dimz; ++z )
724 for(
long y=0; y< dimy; ++y )
725 for(
long x=0; x< dimx; ++x )
727 val = - 0.1687 * (double) in( x, y, z, t ).red()
728 - 0.3313 * (double) in( x, y, z, t ).green()
729 + 0.5 * (double) in( x, y, z, t ).blue()
741 long dimx = in.getSizeX(),
742 dimy = in.getSizeY(),
743 dimz = in.getSizeZ(),
744 dimt = in.getSizeT();
745 for(
long t=0; t< dimt; ++t )
746 for(
long z=0; z< dimz; ++z )
747 for(
long y=0; y< dimy; ++y )
748 for(
long x=0; x< dimx; ++x )
750 val = 0.5 * (double) in( x, y, z, t ).red()
751 - 0.4187 * (double) in( x, y, z, t ).green()
752 - 0.0813 * (double) in( x, y, z, t ).blue()
764 long dimx = in.getSizeX(),
765 dimy = in.getSizeY(),
766 dimz = in.getSizeZ(),
767 dimt = in.getSizeT();
768 for(
long t=0; t< dimt; ++t )
769 for(
long z=0; z< dimz; ++z )
770 for(
long y=0; y< dimy; ++y )
771 for(
long x=0; x< dimx; ++x )
773 val = std::atan2( std::sqrt(3) * (
774 (
double) in( x, y, z, t ).green() -
775 (
double) in( x, y, z, t ).blue() ),
777 (
double) in( x, y, z, t ).red() -
778 (
double) in( x, y, z, t ).green() -
779 (
double) in( x, y, z, t ).blue() )
789 double val, min, max;
790 long dimx = in.getSizeX(),
791 dimy = in.getSizeY(),
792 dimz = in.getSizeZ(),
793 dimt = in.getSizeT();
794 for(
long t=0; t< dimt; ++t )
795 for(
long z=0; z< dimz; ++z )
796 for(
long y=0; y< dimy; ++y )
797 for(
long x=0; x< dimx; ++x )
799 min = ( in( x, y, z, t ).red() <= in( x, y, z, t ).green()
800 ? (double) in( x, y, z, t ).red()
801 : (double) in( x, y, z, t ).green() );
802 min = ( min <= (double) in( x, y, z, t ).blue()
804 : in( x, y, z, t ).blue() );
805 max = ( in( x, y, z, t ).red() >= in( x, y, z, t ).green()
806 ? (double) in( x, y, z, t ).red()
807 : (double) in( x, y, z, t ).green() );
808 max = ( max >= (double) in( x, y, z, t ).blue()
810 : in( x, y, z, t ).blue() );
811 val = ( max == 0 ? max : 1.0 - min / max );
821 long dimx = in.getSizeX(),
822 dimy = in.getSizeY(),
823 dimz = in.getSizeZ(),
824 dimt = in.getSizeT();
825 for(
long t=0; t< dimt; ++t )
826 for(
long z=0; z< dimz; ++z )
827 for(
long y=0; y< dimy; ++y )
828 for(
long x=0; x< dimx; ++x )
830 max = ( in( x, y, z, t ).red() >= in( x, y, z, t ).green()
831 ? (double) in( x, y, z, t ).red()
832 : (double) in( x, y, z, t ).green() );
833 max = ( max >= (double) in( x, y, z, t ).blue()
835 : in( x, y, z, t ).blue() );
846 long dimx = in.getSizeX(),
847 dimy = in.getSizeY(),
848 dimz = in.getSizeZ(),
849 dimt = in.getSizeT();
850 for(
long t=0; t< dimt; ++t )
851 for(
long z=0; z< dimz; ++z )
852 for(
long y=0; y< dimy; ++y )
853 for(
long x=0; x< dimx; ++x )
855 valin[0] = ((double) in( x, y, z, t ).red())/255;
856 valin[1] = ((double) in( x, y, z, t ).green())/255;
857 valin[2] = ((double) in( x, y, z, t ).blue())/255;
859 for(
int n=0; n<3; ++n){
860 if( valin[n] > 0.04045 )
861 valin[n] = std::pow((valin[n] + 0.055)/(1 + 0.055), 2.4);
863 valin[n] = valin[n]/12.92;
866 valout = 0.412453*valin[0] + 0.357580*valin[1] + 0.180423*valin[2];
879 long dimx = in.getSizeX(),
880 dimy = in.getSizeY(),
881 dimz = in.getSizeZ(),
882 dimt = in.getSizeT();
883 for(
long t=0; t< dimt; ++t )
884 for(
long z=0; z< dimz; ++z )
885 for(
long y=0; y< dimy; ++y )
886 for(
long x=0; x< dimx; ++x )
888 valin[0] = ((double) in( x, y, z, t ).red())/255;
889 valin[1] = ((double) in( x, y, z, t ).green())/255;
890 valin[2] = ((double) in( x, y, z, t ).blue())/255;
892 for(
int n=0; n<3; ++n){
893 if( valin[n] > 0.04045 )
894 valin[n] = std::pow((valin[n] + 0.055)/(1 + 0.055), 2.4);
896 valin[n] = valin[n]/12.92;
899 valout = 0.212671*valin[0] + 0.715160*valin[1] + 0.072169*valin[2];
912 long dimx = in.getSizeX(),
913 dimy = in.getSizeY(),
914 dimz = in.getSizeZ(),
915 dimt = in.getSizeT();
916 for(
long t=0; t< dimt; ++t )
917 for(
long z=0; z< dimz; ++z )
918 for(
long y=0; y< dimy; ++y )
919 for(
long x=0; x< dimx; ++x )
921 valin[0] = ((double) in( x, y, z, t ).red())/255;
922 valin[1] = ((double) in( x, y, z, t ).green())/255;
923 valin[2] = ((double) in( x, y, z, t ).blue())/255;
925 for(
int n=0; n<3; ++n){
926 if( valin[n] > 0.04045 )
927 valin[n] = std::pow((valin[n] + 0.055)/(1 + 0.055), 2.4);
929 valin[n] = valin[n]/12.92;
932 valout = 0.019334*valin[0] + 0.119193*valin[1] + 0.950227*valin[2];
944 double valX, valY, valZ, valout;
945 long dimx = in.getSizeX(),
946 dimy = in.getSizeY(),
947 dimz = in.getSizeZ(),
948 dimt = in.getSizeT();
949 for(
long t=0; t< dimt; ++t )
950 for(
long z=0; z< dimz; ++z )
951 for(
long y=0; y< dimy; ++y )
952 for(
long x=0; x< dimx; ++x )
954 valin[0] = ((double) in( x, y, z, t ).red())/255;
955 valin[1] = ((double) in( x, y, z, t ).green())/255;
956 valin[2] = ((double) in( x, y, z, t ).blue())/255;
958 for(
int n=0; n<3; ++n){
959 if( valin[n] > 0.04045 )
960 valin[n] = std::pow((valin[n] + 0.055)/(1 + 0.055), 2.4);
962 valin[n] = valin[n]/12.92;
965 valY = 0.212671*valin[0] + 0.715160*valin[1] + 0.072169*valin[2];
967 if( valY > 0.008856 ) {
968 valout = std::pow(valY, 0.333333);
970 valout = 7.787*valY + ((double)16/116);
973 valout = 116*valout - 16;
984 double valX, valY, valZ, valout;
985 long dimx = in.getSizeX(),
986 dimy = in.getSizeY(),
987 dimz = in.getSizeZ(),
988 dimt = in.getSizeT();
989 for(
long t=0; t< dimt; ++t )
990 for(
long z=0; z< dimz; ++z )
991 for(
long y=0; y< dimy; ++y )
992 for(
long x=0; x< dimx; ++x )
994 valin[0] = ((double) in( x, y, z, t ).red())/255;
995 valin[1] = ((double) in( x, y, z, t ).green())/255;
996 valin[2] = ((double) in( x, y, z, t ).blue())/255;
998 for(
int n=0; n<3; ++n){
999 if( valin[n] > 0.04045 )
1000 valin[n] = std::pow((valin[n] + 0.055)/(1 + 0.055), 2.4);
1002 valin[n] = valin[n]/12.92;
1005 valX = (0.412453*valin[0] + 0.357580*valin[1] + 0.180423*valin[2])*((
double)100/95.047);
1006 valY = 0.212671*valin[0] + 0.715160*valin[1] + 0.072169*valin[2];
1009 if( valX > 0.008856 ) {
1010 valout += std::pow(valX, 0.333333);
1012 valout += 7.787*valX + ((double)16/116);
1014 if( valY > 0.008856 ) {
1015 valout -= std::pow(valY, 0.333333);
1017 valout -= 7.787*valY + ((double)16/116);
1030 double valX, valY, valZ, valout;
1031 long dimx = in.getSizeX(),
1032 dimy = in.getSizeY(),
1033 dimz = in.getSizeZ(),
1034 dimt = in.getSizeT();
1035 for(
long t=0; t< dimt; ++t )
1036 for(
long z=0; z< dimz; ++z )
1037 for(
long y=0; y< dimy; ++y )
1038 for(
long x=0; x< dimx; ++x )
1040 valin[0] = ((double) in( x, y, z, t ).red())/255;
1041 valin[1] = ((double) in( x, y, z, t ).green())/255;
1042 valin[2] = ((double) in( x, y, z, t ).blue())/255;
1044 for(
int n=0; n<3; ++n){
1045 if( valin[n] > 0.04045 )
1046 valin[n] = std::pow((valin[n] + 0.055)/(1 + 0.055), 2.4);
1048 valin[n] = valin[n]/12.92;
1051 valY = 0.212671*valin[0] + 0.715160*valin[1] + 0.072169*valin[2];
1052 valZ = (0.019334*valin[0] + 0.119193*valin[1] + 0.950227*valin[2])*((
double)100/108.883);
1055 if( valY > 0.008856 ) {
1056 valout += std::pow(valY, 0.333333);
1058 valout += 7.787*valY + ((double)16/116);
1060 if( valZ > 0.008856 ) {
1061 valout -= std::pow(valZ, 0.333333);
1063 valout -= 7.787*valZ + ((double)16/116);
1082 void getChannelR( carto::VolumeRef<AimsRGBA>, carto::VolumeRef<C> );
1083 void getChannelG( carto::VolumeRef<AimsRGBA>, carto::VolumeRef<C> );
1084 void getChannelB( carto::VolumeRef<AimsRGBA>, carto::VolumeRef<C> );
1085 void getChannelA( carto::VolumeRef<AimsRGBA>, carto::VolumeRef<C> );
1087 void getChannelYl( carto::VolumeRef<AimsRGBA>, carto::VolumeRef<C> );
1088 void getChannelCb( carto::VolumeRef<AimsRGBA>, carto::VolumeRef<C> );
1089 void getChannelCr( carto::VolumeRef<AimsRGBA>, carto::VolumeRef<C> );
1090 void getChannelH( carto::VolumeRef<AimsRGBA>, carto::VolumeRef<C> );
1091 void getChannelS( carto::VolumeRef<AimsRGBA>, carto::VolumeRef<C> );
1092 void getChannelV( carto::VolumeRef<AimsRGBA>, carto::VolumeRef<C> );
1093 void getChannelX( carto::VolumeRef<AimsRGBA>, carto::VolumeRef<C> );
1094 void getChannelY( carto::VolumeRef<AimsRGBA>, carto::VolumeRef<C> );
1095 void getChannelZ( carto::VolumeRef<AimsRGBA>, carto::VolumeRef<C> );
1096 void getChannelL( carto::VolumeRef<AimsRGBA>, carto::VolumeRef<C> );
1097 void getChannela( carto::VolumeRef<AimsRGBA>, carto::VolumeRef<C> );
1098 void getChannelb( carto::VolumeRef<AimsRGBA>, carto::VolumeRef<C> );
1208 carto::VolumeRef<C> out( in.getSizeX(), in.getSizeY(),
1209 in.getSizeZ(), in.getSizeT() );
1210 out->copyHeaderFrom( in.header() );
1281 carto::VolumeRef<AimsRGBA> in,
1282 carto::VolumeRef<C> out)
1300 long dimx = in.getSizeX(),
1301 dimy = in.getSizeY(),
1302 dimz = in.getSizeZ(),
1303 dimt = in.getSizeT();
1304 for(
long t=0; t< dimt; ++t )
1305 for(
long z=0; z< dimz; ++z )
1306 for(
long y=0; y< dimy; ++y )
1307 for(
long x=0; x< dimx; ++x )
1309 val = (double) in( x, y, z, t ).red()
1310 + (double) in( x, y, z, t ).green()
1311 + (double) in( x, y, z, t ).blue();
1323 long dimx = in.getSizeX(),
1324 dimy = in.getSizeY(),
1325 dimz = in.getSizeZ(),
1326 dimt = in.getSizeT();
1327 for(
long t=0; t< dimt; ++t )
1328 for(
long z=0; z< dimz; ++z )
1329 for(
long y=0; y< dimy; ++y )
1330 for(
long x=0; x< dimx; ++x )
1332 val = 0.299 * (double) in( x, y, z, t ).red()
1333 + 0.587 * (double) in( x, y, z, t ).green()
1334 + 0.114 * (double) in( x, y, z, t ).blue();
1345 long dimx = in.getSizeX(),
1346 dimy = in.getSizeY(),
1347 dimz = in.getSizeZ(),
1348 dimt = in.getSizeT();
1349 for(
long t=0; t< dimt; ++t )
1350 for(
long z=0; z< dimz; ++z )
1351 for(
long y=0; y< dimy; ++y )
1352 for(
long x=0; x< dimx; ++x )
1354 val = - 0.1687 * (double) in( x, y, z, t ).red()
1355 - 0.3313 * (double) in( x, y, z, t ).green()
1356 + 0.5 * (double) in( x, y, z, t ).blue()
1368 long dimx = in.getSizeX(),
1369 dimy = in.getSizeY(),
1370 dimz = in.getSizeZ(),
1371 dimt = in.getSizeT();
1372 for(
long t=0; t< dimt; ++t )
1373 for(
long z=0; z< dimz; ++z )
1374 for(
long y=0; y< dimy; ++y )
1375 for(
long x=0; x< dimx; ++x )
1377 val = 0.5 * (double) in( x, y, z, t ).red()
1378 - 0.4187 * (double) in( x, y, z, t ).green()
1379 - 0.0813 * (double) in( x, y, z, t ).blue()
1391 long dimx = in.getSizeX(),
1392 dimy = in.getSizeY(),
1393 dimz = in.getSizeZ(),
1394 dimt = in.getSizeT();
1395 for(
long t=0; t< dimt; ++t )
1396 for(
long z=0; z< dimz; ++z )
1397 for(
long y=0; y< dimy; ++y )
1398 for(
long x=0; x< dimx; ++x )
1400 val = std::atan2( std::sqrt(3) * (
1401 (
double) in( x, y, z, t ).green() -
1402 (
double) in( x, y, z, t ).blue() ),
1404 (
double) in( x, y, z, t ).red() -
1405 (
double) in( x, y, z, t ).green() -
1406 (
double) in( x, y, z, t ).blue() )
1416 double val, min, max;
1417 long dimx = in.getSizeX(),
1418 dimy = in.getSizeY(),
1419 dimz = in.getSizeZ(),
1420 dimt = in.getSizeT();
1421 for(
long t=0; t< dimt; ++t )
1422 for(
long z=0; z< dimz; ++z )
1423 for(
long y=0; y< dimy; ++y )
1424 for(
long x=0; x< dimx; ++x )
1426 min = ( in( x, y, z, t ).red() <= in( x, y, z, t ).green()
1427 ? (double) in( x, y, z, t ).red()
1428 : (double) in( x, y, z, t ).green() );
1429 min = ( min <= (double) in( x, y, z, t ).blue()
1431 : in( x, y, z, t ).blue() );
1432 max = ( in( x, y, z, t ).red() >= in( x, y, z, t ).green()
1433 ? (double) in( x, y, z, t ).red()
1434 : (double) in( x, y, z, t ).green() );
1435 max = ( max >= (double) in( x, y, z, t ).blue()
1437 : in( x, y, z, t ).blue() );
1438 val = ( max == 0 ? max : 1.0 - min / max );
1448 long dimx = in.getSizeX(),
1449 dimy = in.getSizeY(),
1450 dimz = in.getSizeZ(),
1451 dimt = in.getSizeT();
1452 for(
long t=0; t< dimt; ++t )
1453 for(
long z=0; z< dimz; ++z )
1454 for(
long y=0; y< dimy; ++y )
1455 for(
long x=0; x< dimx; ++x )
1457 max = ( in( x, y, z, t ).red() >= in( x, y, z, t ).green()
1458 ? (double) in( x, y, z, t ).red()
1459 : (double) in( x, y, z, t ).green() );
1460 max = ( max >= (double) in( x, y, z, t ).blue()
1462 : in( x, y, z, t ).blue() );
1473 long dimx = in.getSizeX(),
1474 dimy = in.getSizeY(),
1475 dimz = in.getSizeZ(),
1476 dimt = in.getSizeT();
1477 for(
long t=0; t< dimt; ++t )
1478 for(
long z=0; z< dimz; ++z )
1479 for(
long y=0; y< dimy; ++y )
1480 for(
long x=0; x< dimx; ++x )
1482 valin[0] = ((double) in( x, y, z, t ).red())/255;
1483 valin[1] = ((double) in( x, y, z, t ).green())/255;
1484 valin[2] = ((double) in( x, y, z, t ).blue())/255;
1486 for(
int n=0; n<3; ++n){
1487 if( valin[n] > 0.04045 )
1488 valin[n] = std::pow((valin[n] + 0.055)/(1 + 0.055), 2.4);
1490 valin[n] = valin[n]/12.92;
1493 valout = 0.412453*valin[0] + 0.357580*valin[1] + 0.180423*valin[2];
1506 long dimx = in.getSizeX(),
1507 dimy = in.getSizeY(),
1508 dimz = in.getSizeZ(),
1509 dimt = in.getSizeT();
1510 for(
long t=0; t< dimt; ++t )
1511 for(
long z=0; z< dimz; ++z )
1512 for(
long y=0; y< dimy; ++y )
1513 for(
long x=0; x< dimx; ++x )
1515 valin[0] = ((double) in( x, y, z, t ).red())/255;
1516 valin[1] = ((double) in( x, y, z, t ).green())/255;
1517 valin[2] = ((double) in( x, y, z, t ).blue())/255;
1519 for(
int n=0; n<3; ++n){
1520 if( valin[n] > 0.04045 )
1521 valin[n] = std::pow((valin[n] + 0.055)/(1 + 0.055), 2.4);
1523 valin[n] = valin[n]/12.92;
1526 valout = 0.212671*valin[0] + 0.715160*valin[1] + 0.072169*valin[2];
1539 long dimx = in.getSizeX(),
1540 dimy = in.getSizeY(),
1541 dimz = in.getSizeZ(),
1542 dimt = in.getSizeT();
1543 for(
long t=0; t< dimt; ++t )
1544 for(
long z=0; z< dimz; ++z )
1545 for(
long y=0; y< dimy; ++y )
1546 for(
long x=0; x< dimx; ++x )
1548 valin[0] = ((double) in( x, y, z, t ).red())/255;
1549 valin[1] = ((double) in( x, y, z, t ).green())/255;
1550 valin[2] = ((double) in( x, y, z, t ).blue())/255;
1552 for(
int n=0; n<3; ++n){
1553 if( valin[n] > 0.04045 )
1554 valin[n] = std::pow((valin[n] + 0.055)/(1 + 0.055), 2.4);
1556 valin[n] = valin[n]/12.92;
1559 valout = 0.019334*valin[0] + 0.119193*valin[1] + 0.950227*valin[2];
1571 double valX, valY, valZ, valout;
1572 long dimx = in.getSizeX(),
1573 dimy = in.getSizeY(),
1574 dimz = in.getSizeZ(),
1575 dimt = in.getSizeT();
1576 for(
long t=0; t< dimt; ++t )
1577 for(
long z=0; z< dimz; ++z )
1578 for(
long y=0; y< dimy; ++y )
1579 for(
long x=0; x< dimx; ++x )
1581 valin[0] = ((double) in( x, y, z, t ).red())/255;
1582 valin[1] = ((double) in( x, y, z, t ).green())/255;
1583 valin[2] = ((double) in( x, y, z, t ).blue())/255;
1585 for(
int n=0; n<3; ++n){
1586 if( valin[n] > 0.04045 )
1587 valin[n] = std::pow((valin[n] + 0.055)/(1 + 0.055), 2.4);
1589 valin[n] = valin[n]/12.92;
1592 valY = 0.212671*valin[0] + 0.715160*valin[1] + 0.072169*valin[2];
1594 if( valY > 0.008856 ) {
1595 valout = std::pow(valY, 0.333333);
1597 valout = 7.787*valY + ((double)16/116);
1600 valout = 116*valout - 16;
1611 double valX, valY, valZ, valout;
1612 long dimx = in.getSizeX(),
1613 dimy = in.getSizeY(),
1614 dimz = in.getSizeZ(),
1615 dimt = in.getSizeT();
1616 for(
long t=0; t< dimt; ++t )
1617 for(
long z=0; z< dimz; ++z )
1618 for(
long y=0; y< dimy; ++y )
1619 for(
long x=0; x< dimx; ++x )
1621 valin[0] = ((double) in( x, y, z, t ).red())/255;
1622 valin[1] = ((double) in( x, y, z, t ).green())/255;
1623 valin[2] = ((double) in( x, y, z, t ).blue())/255;
1625 for(
int n=0; n<3; ++n){
1626 if( valin[n] > 0.04045 )
1627 valin[n] = std::pow((valin[n] + 0.055)/(1 + 0.055), 2.4);
1629 valin[n] = valin[n]/12.92;
1632 valX = (0.412453*valin[0] + 0.357580*valin[1] + 0.180423*valin[2])*((
double)100/95.047);
1633 valY = 0.212671*valin[0] + 0.715160*valin[1] + 0.072169*valin[2];
1636 if( valX > 0.008856 ) {
1637 valout += std::pow(valX, 0.333333);
1639 valout += 7.787*valX + ((double)16/116);
1641 if( valY > 0.008856 ) {
1642 valout -= std::pow(valY, 0.333333);
1644 valout -= 7.787*valY + ((double)16/116);
1657 double valX, valY, valZ, valout;
1658 long dimx = in.getSizeX(),
1659 dimy = in.getSizeY(),
1660 dimz = in.getSizeZ(),
1661 dimt = in.getSizeT();
1662 for(
long t=0; t< dimt; ++t )
1663 for(
long z=0; z< dimz; ++z )
1664 for(
long y=0; y< dimy; ++y )
1665 for(
long x=0; x< dimx; ++x )
1667 valin[0] = ((double) in( x, y, z, t ).red())/255;
1668 valin[1] = ((double) in( x, y, z, t ).green())/255;
1669 valin[2] = ((double) in( x, y, z, t ).blue())/255;
1671 for(
int n=0; n<3; ++n){
1672 if( valin[n] > 0.04045 )
1673 valin[n] = std::pow((valin[n] + 0.055)/(1 + 0.055), 2.4);
1675 valin[n] = valin[n]/12.92;
1678 valY = 0.212671*valin[0] + 0.715160*valin[1] + 0.072169*valin[2];
1679 valZ = (0.019334*valin[0] + 0.119193*valin[1] + 0.950227*valin[2])*((
double)100/108.883);
1682 if( valY > 0.008856 ) {
1683 valout += std::pow(valY, 0.333333);
1685 valout += 7.787*valY + ((double)16/116);
1687 if( valZ > 0.008856 ) {
1688 valout -= std::pow(valZ, 0.333333);
1690 valout -= 7.787*valZ + ((double)16/116);
1709 void getChannelR( carto::VolumeRef<AimsHSV>, carto::VolumeRef<C> );
1710 void getChannelG( carto::VolumeRef<AimsHSV>, carto::VolumeRef<C> );
1711 void getChannelB( carto::VolumeRef<AimsHSV>, carto::VolumeRef<C> );
1713 void getChannelYl( carto::VolumeRef<AimsHSV>, carto::VolumeRef<C> );
1714 void getChannelCb( carto::VolumeRef<AimsHSV>, carto::VolumeRef<C> );
1715 void getChannelCr( carto::VolumeRef<AimsHSV>, carto::VolumeRef<C> );
1716 void getChannelH( carto::VolumeRef<AimsHSV>, carto::VolumeRef<C> );
1717 void getChannelS( carto::VolumeRef<AimsHSV>, carto::VolumeRef<C> );
1718 void getChannelV( carto::VolumeRef<AimsHSV>, carto::VolumeRef<C> );
1719 void getChannelX( carto::VolumeRef<AimsHSV>, carto::VolumeRef<C> );
1720 void getChannelY( carto::VolumeRef<AimsHSV>, carto::VolumeRef<C> );
1721 void getChannelZ( carto::VolumeRef<AimsHSV>, carto::VolumeRef<C> );
1722 void getChannelL( carto::VolumeRef<AimsHSV>, carto::VolumeRef<C> );
1723 void getChannela( carto::VolumeRef<AimsHSV>, carto::VolumeRef<C> );
1724 void getChannelb( carto::VolumeRef<AimsHSV>, carto::VolumeRef<C> );
1828 carto::VolumeRef<C> out( in.getSizeX(), in.getSizeY(),
1829 in.getSizeZ(), in.getSizeT() );
1830 out->copyHeaderFrom( in.header() );
1840 double valS, valV, valC, valX, valM, val;
1841 long dimx = in.getSizeX(),
1842 dimy = in.getSizeY(),
1843 dimz = in.getSizeZ(),
1844 dimt = in.getSizeT();
1845 for(
long t=0; t< dimt; ++t )
1846 for(
long z=0; z< dimz; ++z )
1847 for(
long y=0; y< dimy; ++y )
1848 for(
long x=0; x< dimx; ++x ){
1849 valH = (int) (((
double) in( x, y, z, t ).hue())/255)*360;
1850 valS = ((double) in( x, y, z, t ).saturation())/255;
1851 valV = ((double) in( x, y, z, t ).value())/255;
1853 valX = valC*(1-abs((valH/60)%2-1));
1856 if (valH<120 || valH>=240){
1875 double valS, valV, valC, valX, valM, val;
1876 long dimx = in.getSizeX(),
1877 dimy = in.getSizeY(),
1878 dimz = in.getSizeZ(),
1879 dimt = in.getSizeT();
1880 for(
long t=0; t< dimt; ++t )
1881 for(
long z=0; z< dimz; ++z )
1882 for(
long y=0; y< dimy; ++y )
1883 for(
long x=0; x< dimx; ++x ){
1884 valH = (int) (((
double) in( x, y, z, t ).hue())/255)*360;
1885 valS = ((double) in( x, y, z, t ).saturation())/255;
1886 valV = ((double) in( x, y, z, t ).value())/255;
1888 valX = valC*(1-abs((valH/60)%2-1));
1910 double valS, valV, valC, valX, valM, val;
1911 long dimx = in.getSizeX(),
1912 dimy = in.getSizeY(),
1913 dimz = in.getSizeZ(),
1914 dimt = in.getSizeT();
1915 for(
long t=0; t< dimt; ++t )
1916 for(
long z=0; z< dimz; ++z )
1917 for(
long y=0; y< dimy; ++y )
1918 for(
long x=0; x< dimx; ++x ){
1919 valH = (int) (((
double) in( x, y, z, t ).hue())/255)*360;
1920 valS = ((double) in( x, y, z, t ).saturation())/255;
1921 valV = ((double) in( x, y, z, t ).value())/255;
1923 valX = valC*(1-abs((valH/60)%2-1));
1945 double valS, valV, valC, valX, valM, valR, valG, valB, val;
1946 long dimx = in.getSizeX(),
1947 dimy = in.getSizeY(),
1948 dimz = in.getSizeZ(),
1949 dimt = in.getSizeT();
1950 for(
long t=0; t< dimt; ++t )
1951 for(
long z=0; z< dimz; ++z )
1952 for(
long y=0; y< dimy; ++y )
1953 for(
long x=0; x< dimx; ++x ){
1954 valH = (int) (((
double) in( x, y, z, t ).hue())/255)*360;
1955 valS = ((double) in( x, y, z, t ).saturation())/255;
1956 valV = ((double) in( x, y, z, t ).value())/255;
1958 valX = valC*(1-abs((valH/60)%2-1));
1961 if (valH<120 || valH>=240){
1994 val = valR + valG + valB;
2005 double valS, valV, valC, valX, valM, valR, valG, valB, val;
2006 long dimx = in.getSizeX(),
2007 dimy = in.getSizeY(),
2008 dimz = in.getSizeZ(),
2009 dimt = in.getSizeT();
2010 for(
long t=0; t< dimt; ++t )
2011 for(
long z=0; z< dimz; ++z )
2012 for(
long y=0; y< dimy; ++y )
2013 for(
long x=0; x< dimx; ++x ){
2014 valH = (int) (((
double) in( x, y, z, t ).hue())/255)*360;
2015 valS = ((double) in( x, y, z, t ).saturation())/255;
2016 valV = ((double) in( x, y, z, t ).value())/255;
2018 valX = valC*(1-abs((valH/60)%2-1));
2021 if (valH<120 || valH>=240){
2054 val = 0.299 * valR + 0.587 * valG + 0.114 * valB;
2064 double valS, valV, valC, valX, valM, valR, valG, valB, val;
2065 long dimx = in.getSizeX(),
2066 dimy = in.getSizeY(),
2067 dimz = in.getSizeZ(),
2068 dimt = in.getSizeT();
2069 for(
long t=0; t< dimt; ++t )
2070 for(
long z=0; z< dimz; ++z )
2071 for(
long y=0; y< dimy; ++y )
2072 for(
long x=0; x< dimx; ++x ){
2073 valH = (int) (((
double) in( x, y, z, t ).hue())/255)*360;
2074 valS = ((double) in( x, y, z, t ).saturation())/255;
2075 valV = ((double) in( x, y, z, t ).value())/255;
2077 valX = valC*(1-abs((valH/60)%2-1));
2080 if (valH<120 || valH>=240){
2113 val = - 0.1687 * valR - 0.3313 * valG + 0.5 * valB + 128;
2123 double valS, valV, valC, valX, valM, valR, valG, valB, val;
2124 long dimx = in.getSizeX(),
2125 dimy = in.getSizeY(),
2126 dimz = in.getSizeZ(),
2127 dimt = in.getSizeT();
2128 for(
long t=0; t< dimt; ++t )
2129 for(
long z=0; z< dimz; ++z )
2130 for(
long y=0; y< dimy; ++y )
2131 for(
long x=0; x< dimx; ++x ){
2132 valH = (int) (((
double) in( x, y, z, t ).hue())/255)*360;
2133 valS = ((double) in( x, y, z, t ).saturation())/255;
2134 valV = ((double) in( x, y, z, t ).value())/255;
2136 valX = valC*(1-abs((valH/60)%2-1));
2139 if (valH<120 || valH>=240){
2172 val = 0.5 * valR - 0.4187 * valG - 0.0813 * valB + 128;
2230 double valS, valV, valC, valX, valM, valout;
2232 long dimx = in.getSizeX(),
2233 dimy = in.getSizeY(),
2234 dimz = in.getSizeZ(),
2235 dimt = in.getSizeT();
2236 for(
long t=0; t< dimt; ++t )
2237 for(
long z=0; z< dimz; ++z )
2238 for(
long y=0; y< dimy; ++y )
2239 for(
long x=0; x< dimx; ++x )
2241 valH = (int) (((
double) in( x, y, z, t ).hue())/255)*360;
2242 valS = ((double) in( x, y, z, t ).saturation())/255;
2243 valV = ((double) in( x, y, z, t ).value())/255;
2245 valX = valC*(1-abs((valH/60)%2-1));
2248 if (valH<120 || valH>=240){
2278 valout = 0.412453*valin[0] + 0.357580*valin[1] + 0.180423*valin[1];
2290 double valS, valV, valC, valX, valM, valout;
2292 long dimx = in.getSizeX(),
2293 dimy = in.getSizeY(),
2294 dimz = in.getSizeZ(),
2295 dimt = in.getSizeT();
2296 for(
long t=0; t< dimt; ++t )
2297 for(
long z=0; z< dimz; ++z )
2298 for(
long y=0; y< dimy; ++y )
2299 for(
long x=0; x< dimx; ++x )
2301 valH = (int) (((
double) in( x, y, z, t ).hue())/255)*360;
2302 valS = ((double) in( x, y, z, t ).saturation())/255;
2303 valV = ((double) in( x, y, z, t ).value())/255;
2305 valX = valC*(1-abs((valH/60)%2-1));
2308 if (valH<120 || valH>=240){
2338 valout = 0.212671*valin[0] + 0.715160*valin[1] + 0.072169*valin[2];
2350 double valS, valV, valC, valX, valM, valout;
2352 long dimx = in.getSizeX(),
2353 dimy = in.getSizeY(),
2354 dimz = in.getSizeZ(),
2355 dimt = in.getSizeT();
2356 for(
long t=0; t< dimt; ++t )
2357 for(
long z=0; z< dimz; ++z )
2358 for(
long y=0; y< dimy; ++y )
2359 for(
long x=0; x< dimx; ++x )
2361 valH = (int) (((
double) in( x, y, z, t ).hue())/255)*360;
2362 valS = ((double) in( x, y, z, t ).saturation())/255;
2363 valV = ((double) in( x, y, z, t ).value())/255;
2365 valX = valC*(1-abs((valH/60)%2-1));
2368 if (valH<120 || valH>=240){
2398 valout = 0.019334*valin[0] + 0.119193*valin[1] + 0.950227*valin[2];
2410 double valS, valV, valC, valX, valY, valM, valout;
2412 long dimx = in.getSizeX(),
2413 dimy = in.getSizeY(),
2414 dimz = in.getSizeZ(),
2415 dimt = in.getSizeT();
2416 for(
long t=0; t< dimt; ++t )
2417 for(
long z=0; z< dimz; ++z )
2418 for(
long y=0; y< dimy; ++y )
2419 for(
long x=0; x< dimx; ++x )
2421 valH = (int) (((
double) in( x, y, z, t ).hue())/255)*360;
2422 valS = ((double) in( x, y, z, t ).saturation())/255;
2423 valV = ((double) in( x, y, z, t ).value())/255;
2425 valX = valC*(1-abs((valH/60)%2-1));
2428 if (valH<120 || valH>=240){
2458 for(
int n=0; n<3; ++n){
2459 if( valin[n] > 0.04045 )
2460 valin[n] = std::pow((valin[n] + 0.055)/(1 + 0.055), 2.4);
2462 valin[n] = valin[n]/12.92;
2465 valY = 0.212671*valin[0] + 0.715160*valin[1] + 0.072169*valin[2];
2467 if( valY > 0.008856 ) {
2468 valout = std::pow(valY, 0.333333);
2470 valout = 7.787*valY + ((double)16/116);
2473 valout = 116*valout - 16;
2484 double valS, valV, valC, valX, valY, valM, valout;
2486 long dimx = in.getSizeX(),
2487 dimy = in.getSizeY(),
2488 dimz = in.getSizeZ(),
2489 dimt = in.getSizeT();
2490 for(
long t=0; t< dimt; ++t )
2491 for(
long z=0; z< dimz; ++z )
2492 for(
long y=0; y< dimy; ++y )
2493 for(
long x=0; x< dimx; ++x )
2495 valH = (int) (((
double) in( x, y, z, t ).hue())/255)*360;
2496 valS = ((double) in( x, y, z, t ).saturation())/255;
2497 valV = ((double) in( x, y, z, t ).value())/255;
2499 valX = valC*(1-abs((valH/60)%2-1));
2502 if (valH<120 || valH>=240){
2532 for(
int n=0; n<3; ++n){
2533 if( valin[n] > 0.04045 )
2534 valin[n] = std::pow((valin[n] + 0.055)/(1 + 0.055), 2.4);
2536 valin[n] = valin[n]/12.92;
2539 valX = (0.412453*valin[0] + 0.357580*valin[1] + 0.180423*valin[2])*((
double)100/95.047);
2540 valY = 0.212671*valin[0] + 0.715160*valin[1] + 0.072169*valin[2];
2543 if( valX > 0.008856 ) {
2544 valout += std::pow(valX, 0.333333);
2546 valout += 7.787*valX + ((double)16/116);
2548 if( valY > 0.008856 ) {
2549 valout -= std::pow(valY, 0.333333);
2551 valout -= 7.787*valY + ((double)16/116);
2564 double valS, valV, valC, valX, valY, valZ, valM, valout;
2566 long dimx = in.getSizeX(),
2567 dimy = in.getSizeY(),
2568 dimz = in.getSizeZ(),
2569 dimt = in.getSizeT();
2570 for(
long t=0; t< dimt; ++t )
2571 for(
long z=0; z< dimz; ++z )
2572 for(
long y=0; y< dimy; ++y )
2573 for(
long x=0; x< dimx; ++x )
2575 valH = (int) (((
double) in( x, y, z, t ).hue())/255)*360;
2576 valS = ((double) in( x, y, z, t ).saturation())/255;
2577 valV = ((double) in( x, y, z, t ).value())/255;
2579 valX = valC*(1-abs((valH/60)%2-1));
2582 if (valH<120 || valH>=240){
2612 for(
int n=0; n<3; ++n){
2613 if( valin[n] > 0.04045 )
2614 valin[n] = std::pow((valin[n] + 0.055)/(1 + 0.055), 2.4);
2616 valin[n] = valin[n]/12.92;
2619 valY = 0.212671*valin[0] + 0.715160*valin[1] + 0.072169*valin[2];
2620 valZ = (0.019334*valin[0] + 0.119193*valin[1] + 0.950227*valin[2])*((
double)100/108.883);
2623 if( valY > 0.008856 ) {
2624 valout += std::pow(valY, 0.333333);
2626 valout += 7.787*valY + ((double)16/116);
2628 if( valZ > 0.008856 ) {
2629 valout -= std::pow(valZ, 0.333333);
2631 valout -= 7.787*valZ + ((double)16/116);
ImageProcessors<AimsRGB, double> p(data, mask, "rgbm", options, ImageProcessorMode::Init); ImageProce...