#include <HxImageRep.h>
| Constructors | |
| HxImageRep () | |
| Null image. More... | |
| HxImageRep (const HxImageRep &) | |
| Copy constructor. More... | |
| Destructor | |
| ~HxImageRep () | |
| Destructor. More... | |
| Operators | |
| HxImageRep & | operator= (const HxImageRep &) | 
| Assignment operator. More... | |
| int | operator== (const HxImageRep &arg) const | 
| Equality. More... | |
| int | isNull () const | 
| Indicates wether this is a valid image. More... | |
| operator int () const | |
| Indicates wether this is a valid image. More... | |
| Inquiry | |
| int | ident () const | 
| The unique identifier of the image. More... | |
| HxString | name () const | 
| The (not necessarily unique) name of the image. More... | |
| void | name (HxString s) | 
| Sets the name of the image. More... | |
| int | dimensionality () const | 
| The number of dimensions of the image. More... | |
| int | dimensionSize (int i) const | 
| The size of the image in the i-th dimension. More... | |
| HxSizes | sizes () const | 
| The dimension sizes of the image. More... | |
| int | numberOfPixels () const | 
| The total number of pixels in the image. More... | |
| int | pixelDimensionality () const | 
| The number of dimensions of one pixel. More... | |
| HxValueType | pixelType () const | 
| The pixel range value type. More... | |
| int | pixelPrecision () const | 
| The pixel size in bits. More... | |
| HxImageSignature | signature () const | 
| The signature of the image. More... | |
| Unary pixel operations | |
| HxImageRep | unaryPixOp (HxString upoName, HxTagList &tags=HxMakeTagList()) const | 
| Unary pixel operation. More... | |
| Binary pixel operations | |
| HxImageRep | binaryPixOp (const HxValue arg, HxString bpoName, HxTagList &tags=HxMakeTagList()) const | 
| Binary pixel operation. More... | |
| HxImageRep | binaryPixOp (const HxImageRep arg, HxString bpoName, HxTagList &tags=HxMakeTagList()) const | 
| Binary pixel operation. More... | |
| Multi pixel operations. | |
| HxImageRep | multiPixOp (const HxImageList &args, HxString mpoName, HxTagList &tags=HxMakeTagList()) const | 
| Multi pixel operation. More... | |
| HxImageList | MNPixOp (const HxImageList &args, HxString mpoName, HxTagList &tags=HxMakeTagList()) const | 
| M output N input pixel operation. More... | |
| Reduce operations | |
| HxValue | reduceOp (HxString op, HxTagList &tags=HxMakeTagList()) const | 
| Reduce operation. More... | |
| Generalized convolution operations. | |
| HxImageRep | generalizedConvolution (HxImageRep kerImg, HxString gMul, HxString gAdd, ResultPrecision resPrec=DEFAULT_PREC, HxTagList &tags=HxMakeTagList()) const | 
| Generalized convolution operation. More... | |
| HxImageRep | generalizedConvolutionK1d (int dimension, HxImageRep kerImg, HxString gMul, HxString gAdd, ResultPrecision resPrec=DEFAULT_PREC, HxTagList &tags=HxMakeTagList()) const | 
| Generalized convolution operation in one dimension. More... | |
| HxImageRep | genConvSeparated (HxImageRep kernel, HxString gMul, HxString gAdd, ResultPrecision resPrec=DEFAULT_PREC, HxTagList &tags=HxMakeTagList()) const | 
| Generalized convolution operation separated for each dimension. More... | |
| HxImageRep | genConvSeparated (int dimension, HxImageRep kernel1, HxImageRep kernel2, HxString gMul, HxString gAdd, ResultPrecision resPrec=DEFAULT_PREC, HxTagList &tags=HxMakeTagList()) const | 
| Generalized convolution operation separated for each dimension. More... | |
| Neighbourhood operations. | |
| HxImageRep | neighbourhoodOp (HxString ngbName, HxTagList &tags=HxMakeTagList()) const | 
| Neighbourhood operation. More... | |
| HxImageRep | neighbourhoodOp (HxImageRep kernel, HxString ngbName, HxTagList &tags=HxMakeTagList()) const | 
| Neighbourhood operation with kernel. More... | |
| HxImageRep | recursiveNeighOp (HxImageRep kerImg, HxString gMul, HxString gAdd, HxTagList &tags=HxMakeTagList(), ResultPrecision resPrec=DEFAULT_PREC) const | 
| Recursive neighbourhood operation. More... | |
| Geometric operations. | |
| HxImageRep | geometricOp2d (HxMatrix func, HxGeoIntType gi=LINEAR, HxGeoTransType gt=FORWARD, int adjustSize=1, HxValue background=HxValue(0)) const | 
| Geometric operation in 2D. More... | |
| Sample operations | |
| HxValue | sampleIdentMask (const HxImageRep mask, HxPoint p, HxSizes size, int label, HxString sFunc) const | 
| Sample the image with the given identification mask. More... | |
| void | sampleIdentMask (const HxImageRep mask, HxPoint p, HxSizes size, int label, HxString sFunc, HxValueListBackInserter res) const | 
| Sample the image with the given identification mask. More... | |
| HxValue | sampleWeightMask (const HxImageRep mask, HxPoint p, HxString sFunc) const | 
| Sample the image with the given weight mask. More... | |
| Misc operations | |
| void | exportOp (HxString exportName, HxTagList &tags=HxMakeTagList()) const | 
| Survey operations. More... | |
| void | setAt (const HxValue v, int x, int y=0, int z=0) | 
| setAt is to be removed. More... | |
| HxValue | getAt (int x, int y=0, int z=0) const | 
| Return pixel value at given position. More... | |
| STD_OSTREAM & | printInfo (STD_OSTREAM &os, int doData=0) | 
| Print information. More... | |
| Output/display operations | |
| void | getRgbPixels2d (int *pixels, HxString displayMode, int resWidth=-1, int resHeight=-1, HxGeoIntType gi=NEAREST) const | 
| The getRgbPixels functions fill an externally allocated buffer(pixels) with pixelvalues of the (2d) image. More... | |
| void | getRgbPixels2d (int *pixels, HxString displayMode, int bufWidth, int bufHeight, int VX, int VY, int VW, int VH, double SX, double SY, double scaleX, double scaleY, HxGeoIntType gi) const | 
| Partial display for large images. More... | |
| void | getRgbPixels3d (int *pixels, HxString displayMode, int dimension, int coordinate, int resWidth=-1, int resHeight=-1, HxGeoIntType gi=NEAREST) const | 
| For testing purposes only :-) | |
| HxImageData * | dirty () | 
| HxString | ref () const | 
| void | setObjectObserver (const HxObjectObserver &) | 
| void | setImageDataObserver (const HxObjectObserver &) | 
| Public Types | |
| enum | ResultPrecision { DEFAULT_PREC, SOURCE_PREC, ARITH_PREC, SMALL_PREC } | 
| For some operations a precision needs to be specified. More... | |
| Static Public Methods | |
| void | setDefaultResultPrecision (ResultPrecision resPrec) | 
| Set the value for DEFAULT_PREC. More... | |
| ResultPrecision | getResultPrecision (ResultPrecision resPrec=DEFAULT_PREC) | 
| Get the value for the result precision. More... | |
| Friends | |
| class | HxImageFactory | 
| class | HxImageRepInit | 
| HxImageRep L_HXIMAGEREP | HxProjectRange (HxImageRep im, int dimension) | 
| Projection of the pixel range. More... | |
| HxImageRep L_HXIMAGEREP | HxInverseProjectRange (HxImageRep im, int dimension, HxImageRep arg) | 
| Inverse projection of the pixel range. More... | |
| HxImageRep L_HXIMAGEREP | HxRestrict (HxImageRep img, HxPoint begin, HxPoint end) | 
| Restriction of domain. More... | |
| HxImageRep L_HXIMAGEREP | HxExtend (HxImageRep img, HxImageRep background, HxPoint begin) | 
| Extension of domain. More... | |
| HxImageRep L_HXIMAGEREP | HxExtendVal (HxImageRep img, HxSizes newSize, HxValue background, HxPoint begin) | 
| Extension of domain. More... | |
| void L_HXIMAGEREP | HxGetValues (HxImageRep img, HxPointListConstIter first, HxPointListConstIter last, HxValueListBackInserter valPtr) | 
| HxValue L_HXIMAGEREP | HxIdentMaskMean (HxImageRep im, HxImageRep mask, HxPoint p, HxSizes size, int label) | 
| HxValue L_HXIMAGEREP | HxIdentMaskStDev (HxImageRep im, HxImageRep mask, HxPoint p, HxSizes size, int label) | 
| HxValue L_HXIMAGEREP | HxIdentMaskSum (HxImageRep im, HxImageRep mask, HxPoint p, HxSizes size, int label) | 
| HxValue L_HXIMAGEREP | HxMaskSum (HxImageRep im, HxImageRep mask, HxPoint p) | 
| HxImageRep L_HXIMAGEREP | HxMakeFromSi (IMAGE *im) | 
| Make an HxImageRep with from the given image in ScilImage format. More... | |
| L_HXIMAGEREP IMAGE * | HxExportSi (HxImageRep img) | 
| Export image data to a ScilImage image. More... | |
| void L_HXIMAGEREP | HxExportMatlabPixels (HxImageRep img, double *pixels) | 
| Export image data to array of int. More... | |
| 
 | 
| For some operations a precision needs to be specified. The type of the result image will be set according to the specified precision: SOURCE\_PREC The result type is the same as the object type. ARITH\_PREC The result type is the same as the type of the kernel after the kernel has been converted. SMALL\_PREC The result type will be the same as above but with a smaller pixel precision. If the kernel has an integral pixel type the result pixel precision is that of short. If the kernel has a real pixel type the result pixel precision is that of float. 
 00231                                         {
00232                             DEFAULT_PREC, SOURCE_PREC,
00233                             ARITH_PREC, SMALL_PREC};
 | 
| 
 | 
| Null image. 
 
 00116                        : _pointee(0) {
00117     if (_objectObserver)
00118         _objectObserver->constructed(name());
00119 }
 | 
| 
 | 
| Copy constructor. 
 
 | 
| 
 | 
| Destructor. 
 
 00344 {
00345     if (_objectObserver)
00346         _objectObserver->destructed(name());
00347 }
 | 
| 
 | 
| Assignment operator. 
 
 00354 {
00355     _pointee = rhs._pointee;
00356     return *this;
00357 }
 | 
| 
 | 
| Equality. 
 
 | 
| 
 | 
| Indicates wether this is a valid image. 
 
 00367 { 
00368     return !int(_pointee); 
00369 }
 | 
| 
 | 
| Indicates wether this is a valid image. 
 
 00372 { 
00373     return int(_pointee); 
00374 }
 | 
| 
 | 
| The unique identifier of the image. 
 
 00381 {
00382     return pointee() ? pointee()->ident() : 0;
00383 }
 | 
| 
 | 
| The (not necessarily unique) name of the image. 
 
 | 
| 
 | 
| Sets the name of the image. 
 
 00393 {
00394     if (pointee())
00395         pointee()->name(s);
00396 }
 | 
| 
 | 
| The number of dimensions of the image. 
 
 00400 {
00401     return pointee() ? pointee()->dimensionality() : 0;
00402 }
 | 
| 
 | 
| The size of the image in the i-th dimension. The first dimension has i = 1. 
 00406 {
00407     return pointee() ? pointee()->dimensionSize(i) : 0;
00408 }
 | 
| 
 | 
| The dimension sizes of the image. 
 
 | 
| 
 | 
| The total number of pixels in the image. 
 
 00412 {
00413     return pointee() ? pointee()->numberOfPixels() : 0;
00414 }
 | 
| 
 | 
| The number of dimensions of one pixel. 
 
 00418 {
00419     return pointee() ? pointee()->pixelDimensionality() : 0;
00420 }
 | 
| 
 | 
| The pixel range value type. INT_VALUE or REAL_VALUE or COMPLEX_VALUE. 
 00424 {
00425     return pointee() ? pointee()->pixelType() : INT_VALUE;
00426 }
 | 
| 
 | 
| The pixel size in bits. If the pixel has more than one dimension the size of a pixel element is returned. 
 00430 {
00431     return pointee() ? pointee()->pixelPrecision() : 0;
00432 }
 | 
| 
 | 
| The signature of the image. 
 
 00436 {
00437     return pointee() ? pointee()->signature() : HxImageSignature();
00438 }
 | 
| 
 | ||||||||||||
| Unary pixel operation. The result is obtained by applying the pixel functor designated by string "op" to all pixels in this image. 
 00451 {
00452     if (!pointee())
00453         return HxImageRep();
00454     HxMfUpo methodFrame(pointee(), upoName);
00455     methodFrame.result()->unaryPixOp(methodFrame.object(), upoName, tags);
00456     return HxImageRep(methodFrame.result());
00457 }
 | 
| 
 | ||||||||||||||||
| Binary pixel operation. The result is obtained by applying the pixel functor designated by string "bpoName" to all pairs of pixels in this image and the argument. 
 00495 {
00496     if (!pointee())
00497         return HxImageRep();
00498     HxMfUpo methodFrame(pointee(), bpoName);
00499     HxAddTag(tags, "value", val);
00500     methodFrame.result()->unaryPixOp(methodFrame.object(), bpoName, tags);
00501     return HxImageRep(methodFrame.result());
00502 }
 | 
| 
 | ||||||||||||||||
| Binary pixel operation. The result is obtained by applying the pixel functor designated by string "bpoName" to all pairs of pixels in this image and the argument. 
 00507 {
00508     if (!pointee())
00509         return HxImageRep();
00510     HxMfBpo methodFrame(pointee(), arg.pointee(), bpoName);
00511     if (methodFrame.preOpIsOk())
00512         methodFrame.result()->binaryPixOp(methodFrame.source1(),
00513                                 methodFrame.source2(), bpoName, tags);
00514     return methodFrame.preOpIsOk()  ? HxImageRep(methodFrame.result())
00515                                     : HxImageRep();
00516 }
 | 
| 
 | ||||||||||||||||
| Multi pixel operation. The result is obtained by applying the pixel functor designated by string "mpoName" to corresponding pixels in this image and all argument images. 
 00524 {
00525     if (!pointee())
00526         return HxImageRep();
00527 
00528     HxImageData **imsPointee = new HxImageData * [args.size()+1];
00529     HxImageList::const_iterator i;
00530     int n = 0;
00531 
00532     imsPointee[n++] = pointee();
00533     for (i = args.begin(); i != args.end(); i++)
00534         imsPointee[n++] = (*i).pointee();
00535 
00536     HxMfMpo methodFrame(imsPointee, n, mpoName);
00537 
00538     methodFrame.result()->multiPixOp(methodFrame.sources(),
00539                             methodFrame.nSources(), mpoName, tags);
00540 
00541     delete [] imsPointee;
00542 
00543     return HxImageRep(methodFrame.result());
00544 }
 | 
| 
 | ||||||||||||||||
| M output N input pixel operation. The results is obtained by applying the pixel functor designated by string "mpoName" to corresponding pixels in this image and all argument images. 
 00552 {
00553     if (!pointee())
00554         return HxImageRep();
00555 
00556     typedef HxImageData** HxImgDataPtrArray;
00557 
00558     HxImageData **srcPtrs = new HxImageData * [args.size()+1];
00559     HxImageList::const_iterator i;
00560     int srcCnt = 0;
00561 
00562     srcPtrs[srcCnt++] = pointee();
00563     for (i = args.begin(); i != args.end(); i++)
00564         srcPtrs[srcCnt++] = (*i).pointee();
00565 
00566     HxMfMNpo methodFrame(srcPtrs, srcCnt, mpoName);
00567 
00568     delete [] srcPtrs;
00569 
00570     HxImageData::MNPixOp(
00571         methodFrame.results(), methodFrame.resultCnt(),
00572         methodFrame.sources(), methodFrame.sourceCnt(), mpoName, tags);
00573 
00574     HxImageList result;
00575 
00576     for (int n = 0; n < methodFrame.resultCnt(); n++) {
00577     HxImageRep temp(methodFrame.results(n));
00578         result += temp;
00579     }
00580 
00581     return result;
00582 }
 | 
| 
 | ||||||||||||
| Reduce operation. The result is obtained by reducing all pixel values in this image to a single value by applying the pixel functor designated by string "op" repeatedly to a combination of 2 values. 
 | 
| 
 | 
| Set the value for DEFAULT_PREC. 
 
 00047 {
00048     _defaultResPrec = resPrec;
00049 }
 | 
| 
 | 
| Get the value for the result precision. 
 
 00053 {
00054     return resPrec == DEFAULT_PREC ? _defaultResPrec : resPrec;
00055 }
 | 
| 
 | ||||||||||||||||||||||||
| Generalized convolution operation. The result is obtained by sliding the kernel over this image and at each position combining the values of the kernel with the underlying values of this image by means of the pixel punctor designated by "gMul", and reducing this set of values to a single value by means of the pixel functor designated by "gAdd". 
 00602 {
00603     resPrec = getResultPrecision(resPrec);
00604 
00605     HxMfGenConv methodFrame(pointee(), kernel.pointee(), resPrec);
00606     if (methodFrame.preOpIsOk())
00607         methodFrame.object()->generalizedConvolution(
00608                                 methodFrame.source(),
00609                                 methodFrame.kernel(),
00610                                 gMul, gAdd, "stdKernel", tags);
00611     return methodFrame.preOpIsOk()  ? HxImageRep(methodFrame.result())
00612                                     : HxImageRep();
00613 }
 | 
| 
 | ||||||||||||||||||||||||||||
| Generalized convolution operation in one dimension. The result is obtained by sliding the kernel over this image and at each position combining the values of the kernel with the underlying values of this image by means of the pixel punctor designated by "gMul", and reducing this set of values to a single value by means of the pixel functor designated by "gAdd". The kernel image should have the same dimensionality as the object image. The convolution is performed in the specified dimension only. The precision of the result type is as specified by resPrec. 
 00619 {
00620     resPrec = getResultPrecision(resPrec);
00621 
00622     HxMfGenConv methodFrame(pointee(), kernel.pointee(), resPrec, true);
00623     if (methodFrame.preOpIsOk())
00624         methodFrame.object()->generalizedConvolutionK1d(
00625                                 methodFrame.source(),
00626                                 dimension, methodFrame.kernel(),
00627                                 gMul, gAdd, "stdKernel", tags);
00628     return methodFrame.preOpIsOk()  ? HxImageRep(methodFrame.result())
00629                                     : HxImageRep();
00630 }
 | 
| 
 | ||||||||||||||||||||||||
| Generalized convolution operation separated for each dimension. The result is obtained by sliding the kernel over this image and at each position combining the values of the kernel with the underlying values of this image by means of the pixel punctor designated by "gMul", and reducing this set of values to a single value by means of the pixel functor designated by "gAdd". The kernel image should have the same dimensionality as the object image. The convolution is performed separately in all dimensions using the same kernel. The precision of the result type is as specified by resPrec. 
 00636 {
00637     resPrec = getResultPrecision(resPrec);
00638 
00639     HxMfGenConv methodFrame(
00640                     pointee(), kernel.pointee(), resPrec, true, ARITH_PREC);
00641 
00642     if (!methodFrame.preOpIsOk())
00643         return HxImageRep();
00644 
00645     for (int i=1; i<=dimensionality(); i++)
00646     {
00647         methodFrame.object()->generalizedConvolutionK1d(
00648                                 methodFrame.source(),
00649                                 i, methodFrame.kernel(),
00650                                 gMul, gAdd, "stdKernel", tags);
00651         methodFrame.setObjectAsSource();
00652     }
00653 
00654     return methodFrame.preOpIsOk()  ? HxImageRep(methodFrame.result())
00655                                     : HxImageRep();
00656 }
 | 
| 
 | ||||||||||||||||||||||||||||||||
| Generalized convolution operation separated for each dimension. The result is obtained by sliding the kernel over this image and at each position combining the values of the kernel with the underlying values of this image by means of the pixel punctor designated by "gMul", and reducing this set of values to a single value by means of the pixel functor designated by "gAdd". The kernel images should be two dimensional and the size in the second dimension should be 1. The convolution is performed using kernel1 in the specified dimension and kernel2 in all other dimensions. The precision of the result type is as specified by resPrec. 
 00663 {
00664     resPrec = getResultPrecision(resPrec);
00665 
00666     HxMfGenConv methodFrame(
00667                     pointee(), kernel1.pointee(), kernel2.pointee(), 
00668                     resPrec, true, ARITH_PREC);
00669 
00670     if (!methodFrame.preOpIsOk())
00671         return HxImageRep();
00672 
00673     int i;
00674     for (i=1; i<=dimensionality(); i++)
00675     {
00676         if (i == dimension)
00677             methodFrame.object()->generalizedConvolutionK1d(
00678                                     methodFrame.source(),
00679                                     i, methodFrame.kernel(),
00680                                     gMul, gAdd, "stdKernel", tags);
00681         else
00682             methodFrame.object()->generalizedConvolutionK1d(
00683                                     methodFrame.source(),
00684                                     i, methodFrame.kernel2(),
00685                                     gMul, gAdd, "stdKernel", tags);
00686         methodFrame.setObjectAsSource();
00687     }
00688 
00689     return methodFrame.preOpIsOk()  ? HxImageRep(methodFrame.result())
00690                                     : HxImageRep();
00691 }
 | 
| 
 | ||||||||||||
| Neighbourhood operation. Slides a "neighbourhood" over this image and offers all pixels in the neighbourhood to the functor designated by "ngbName". The result at each position is determined by "ngbName". 
 00698 {
00699     HxMfNgb methodFrame(pointee(), ngbName, tags);
00700     if (methodFrame.preOpIsOk())
00701         methodFrame.result()->neighbourhoodOp(
00702                                 methodFrame.source(), ngbName, tags);
00703     return methodFrame.preOpIsOk()  ? HxImageRep(methodFrame.result())
00704                                     : HxImageRep();
00705 }
 | 
| 
 | ||||||||||||||||
| Neighbourhood operation with kernel. Slides a "neighbourhood" over this image and offers all pixels in the neighbourhood to the functor designated by "ngbName". The result at each position is determined by "ngbName". 
 00710 {
00711     HxMfKernelNgb methodFrame(pointee(), kernel.pointee(), ngbName, tags);
00712     if (methodFrame.preOpIsOk())
00713         methodFrame.result()->neighbourhoodOp(
00714                                 methodFrame.source(), methodFrame.kernel(),
00715                                 ngbName, tags);
00716     return methodFrame.preOpIsOk()  ? HxImageRep(methodFrame.result())
00717                                     : HxImageRep();
00718 }
 | 
| 
 | ||||||||||||||||||||||||
| Recursive neighbourhood operation. THIS SHOULD BE CALLED RECURSIVE GENERALIZED CONVOLUTION!! 
 00724 {
00725     if (resPrec == DEFAULT_PREC)
00726         resPrec = _defaultResPrec;
00727     HxMfGenConv methodFrame(pointee(), kernel.pointee(), resPrec);
00728     if (methodFrame.preOpIsOk())
00729         methodFrame.object()->recursiveNeighOp(
00730                                 methodFrame.source(), methodFrame.kernel(),
00731                                 gMul, gAdd, tags);
00732     return methodFrame.preOpIsOk()  ? HxImageRep(methodFrame.result())
00733                                     : HxImageRep();
00734 }
 | 
| 
 | ||||||||||||||||||||||||
| Geometric operation in 2D. The result is obtained by applying the given transformation to the position of each pixel in this image. By default, the actual transformation is based on the inverse of the given transformation matrix M: f(x) = M.i() * x (postfix multiplication). Beware that the image coordinate system has a different orientation than the cartesian coordinate system used in specification of matrix M. The matrix needs to be 3x3 (homogeneous coordinates) 
 00743 {
00744     if ((func.nCol() != 3) || (func.nRow() != 3))
00745         return errorIm("geometricOp2d: matrix needs to be 3x3");
00746 
00747     HxMatrix funcForw = (gt == FORWARD) ? func : func.i();
00748     HxMatrix funcBack = (gt == FORWARD) ? func.i() : func;
00749     if (!funcForw.valid() || !funcBack.valid())
00750         return errorIm("geometricOp2d: matrix is not valid");
00751 
00752     HxSizes newSize = sizes();
00753     HxVec3Double translate = HxVec3Double(0,0,0);
00754     if (adjustSize) {
00755         HxVec3Double ulP = funcForw * HxVec3Double(0,0,1);
00756         HxVec3Double llP = funcForw * HxVec3Double(0, dimensionSize(2), 1);
00757         HxVec3Double urP = funcForw * HxVec3Double(dimensionSize(1), 0, 1);
00758         HxVec3Double lrP = funcForw * sizes();
00759         ulP /= HxScalarDouble(ulP.z()); // homogeneous coordinates
00760         llP /= HxScalarDouble(llP.z());
00761         urP /= HxScalarDouble(urP.z());
00762         lrP /= HxScalarDouble(lrP.z());
00763 
00764         HxVec3Double maerB = ulP.inf(llP).inf(urP).inf(lrP);
00765         HxVec3Double maerE = ulP.sup(llP).sup(urP).sup(lrP);
00766         newSize = HxSizes(maerE.x() - maerB.x() + 0.5,
00767             maerE.y() - maerB.y() + 0.5, 1);
00768         translate = HxVec3Double(maerB.x(), maerB.y(), 0);
00769     }
00770 
00771     HxMfResize methodFrame(pointee(), newSize);
00772     methodFrame.object()->geometricOp2d(pointee(), funcBack, gi, translate,
00773         background);
00774     return HxImageRep(methodFrame.result());
00775 }
 | 
| 
 | ||||||||||||||||||||||||
| Sample the image with the given identification mask. "mask" is assumed to be an identification image with pixel type short. For points within the area starting at point "p" with given "size" the function denoted by "sFunc" is called if the pixel value is equal to "label". "sFunc" should reside in HxSampleFunTable. 
 00886 {
00887     if (!pointee())
00888         return HxValue(0); // ADB 14 Feb 2001, was HxImageRep();
00889     HxMfReqMaskPixType methodFrame(mask.pointee(), 1, INT_VALUE, 16);
00890     return pointee()->sampleIdentMask(methodFrame.mask(), p, size, label, sFunc);
00891 }
 | 
| 
 | ||||||||||||||||||||||||||||
| Sample the image with the given identification mask. "mask" is assumed to be an identification image with pixel type short. For points within the area starting at point "p" with given "size" the functor denoted by "sFunc" is called if the pixel value is equal to "label". "sFunc" should reside in HxSampleFunctorTable. 
 00896 {
00897     if (!pointee())
00898         return;
00899     HxMfReqMaskPixType methodFrame(mask.pointee(), 1, INT_VALUE, 16);
00900     pointee()->sampleIdentMask(methodFrame.mask(), p, size, label, sFunc, res);
00901 }
 | 
| 
 | ||||||||||||||||
| Sample the image with the given weight mask. The type of mask is adjusted to match the type of the image. For points within the area starting at point p with the size of the "mask" the function denoted by "sFunc" is called. 
 00905 {
00906     if (!pointee())
00907         return HxValue(0); // ADB 14 Feb 2001, was HxImageRep();
00908     HxMfReqMaskPixType methodFrame(mask.pointee(), pointee());
00909     return pointee()->sampleWeightMask(methodFrame.mask(), p, sFunc);
00910 }
 | 
| 
 | ||||||||||||
| Survey operations. 
 
 00917 {
00918     if (HxImgFtorRuleBase::instance().getIsModifying("inout", exportName))
00919     {
00920         HxEnvironment::instance()->errorStream()
00921             << "Error: " << exportName << " is an image data modifying "
00922             << "operator" << STD_ENDL;
00923         return;
00924     }
00925     if (pointee())
00926         pointee()->inout(exportName, tags);
00927 }
 | 
| 
 | ||||||||||||||||||||
| setAt is to be removed. 
 
 00931 {
00932     if (_pointee) {
00933         _pointee.getUnshared();
00934         _pointee->setAt(x, y, z, v);
00935     }
00936 }
 | 
| 
 | ||||||||||||||||
| Return pixel value at given position. 
 
 00940 {
00941     return _pointee ? _pointee->getAt(x, y, z) : HxValue(HxScalarInt(0));
00942 }
 | 
| 
 | ||||||||||||
| Print information. 
 
 00946 {
00947     return _pointee ? pointee()->printInfo(os, doData) : os ;
00948 }
 | 
| 
 | ||||||||||||||||||||||||
| The getRgbPixels functions fill an externally allocated buffer(pixels) with pixelvalues of the (2d) image. The values are stored in the buffer according to the format used in Java. Conversion of pixel values in the image to the Java format is done via a HxRgbFunctor (a function object). By default, the size of the pixels buffer matches the image sizes. However, the user may request pixels at a different resolution by giving a resWidth and resHeight. Then, for each pixel in the buffer the value is obtained from the relative position (resWidth is mapped onto the image width, etc.). The value at the relative position is obtained through the given geometric interpolation type gi (and passed to the RgbFunctor). See also: \Ref{Color conversion/display} 
 00985 {
00986     if (!pointee())
00987         return;
00988 
00989     HxTagList tags;
00990     HxAddTag(tags, "pixels", pixels);
00991     HxAddTag(tags, "resWidth", resWidth);
00992     HxAddTag(tags, "resHeight", resHeight);
00993     HxAddTag(tags, "gi", gi);
00994 
00995     if (displayMode == HxString("LogMagnitude")) {
00996         HxImageRep n2 = HxNorm2(*this);
00997         double lowVal = ((HxScalarDouble)n2.reduceOp("minAssign")).x();
00998         double highVal = ((HxScalarDouble)n2.reduceOp("maxAssign")).x();
00999         HxAddTag(tags, "lowVal", lowVal);
01000         HxAddTag(tags, "highVal", highVal);
01001 
01002         n2.pointee()->rgbOp(displayMode, tags);
01003         return;
01004     }
01005 
01006     if (displayMode == HxString("Stretch")) {
01007         double lowVal = ((HxVec3Double) reduceOp("minAssign")).min().x();
01008         double highVal = ((HxVec3Double) reduceOp("maxAssign")).max().x();
01009         HxAddTag(tags, "lowVal", lowVal);
01010         HxAddTag(tags, "highVal", highVal);
01011     }
01012 
01013     pointee()->rgbOp(displayMode, tags);
01014 }
 | 
| 
 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Partial display for large images. 
 
 01020 {
01021     if (!pointee())
01022         return;
01023     pointee()->getRgbPixels2d(pixels, displayMode, bufWidth, bufHeight,
01024             VX, VY, VW, VH, SX, SY, scaleX, scaleY, gi);
01025 }
 | 
| 
 | ||||||||||||
| Projection of the pixel range. The function computes the projection (see Pixels) of all pixels in the input image via a unary pixel operation (see Images). Dimension starts at 1. 
 00013 {
00014     return im.projectRange(dimension);
00015 }
 | 
| 
 | ||||||||||||||||
| Inverse projection of the pixel range. The function projects (see Pixels) all pixels of image im on the given dimension of image arg via a unary pixel operation (see Images). Dimension starts at 1. 
 00013 {
00014     return im.inverseProjectRange(dimension, arg);
00015 }
 | 
| 
 | ||||||||||||||||
| Restriction of domain. Restrict the domain of the image to the region specified by the given points. Points are treated as pixel coordinates (integers). 
 00013 {
00014     return img.restrict(begin, end);
00015 }
 | 
| 
 | ||||||||||||||||
| Extension of domain. Extend the domain of the image to the size of the background image. The image is put at the position indicated by begin. Points are treated as pixel coordinates (integers). 
 00013 {
00014     return img.extend(background, begin);
00015 }
 | 
| 
 | ||||||||||||||||||||
| Extension of domain. Extend the domain of the image to the given size. The image is put at the position indicated by begin. Points are treated as pixel coordinates (integers). 
 00014 {
00015     return img.extend(newSize, background, begin);
00016 }
 | 
| 
 | 
| Make an HxImageRep with from the given image in ScilImage format. 
 
 00013 {
00014     return HxImageRep(im);
00015 }
 | 
| 
 | 
| Export image data to a ScilImage image. 
 
 00013 {
00014     return img.toImageSi();
00015 }
 | 
| 
 | ||||||||||||
| Export image data to array of int. The size of the (pre-allocated) array must be equal to the dimensionality of the pixel values times the number of pixels in the image. 
 00013 {
00014     img.getDoublePixels(pixels);
00015 }
 | 
 1.2.12 written by Dimitri van Heesch,
 © 1997-2001
1.2.12 written by Dimitri van Heesch,
 © 1997-2001