#include "HxImageRep.h"
Go to the source code of this file.
Functions | |
HxImageRep L_HXIMAGEREP | HxTriStateThreshold (HxImageRep im, HxValue level, HxValue v1, HxValue v2, HxValue v3) |
Tri state threshold. More... |
|
Tri state threshold. The function computes the tri state threshold of all pixels in the input image via a unary pixel operation. Implementation specifics : The pixel functor : HxUpoTriStateThreshold. The image functor instantiator : HxInstantiatorTriStateThreshold.
00131 { 00132 HxString fname("HxTriStateThreshold"); 00133 00134 if (im.isNull()) 00135 { 00136 HxGlobalError::instance()->reportError(fname, im.name(), "null image", HxGlobalError::HX_GE_INVALID); 00137 return HxImageRep(); 00138 } 00139 00140 if (im.pixelDimensionality() == 1) 00141 { 00142 if ((level.tag() != HxValue::SI) && (level.tag() != HxValue::SD)) 00143 { 00144 HxGlobalError::instance()->reportError(fname, im.name(), "level is of wrong value type", HxGlobalError::HX_GE_INVALID); 00145 } 00146 } 00147 if (im.pixelDimensionality() == 2) 00148 { 00149 if ((level.tag() != HxValue::V2I) && (level.tag() != HxValue::V2D) 00150 && (level.tag() != HxValue::CPL)) 00151 { 00152 HxGlobalError::instance()->reportError(fname, im.name(), "level is of wrong value type", HxGlobalError::HX_GE_INVALID); 00153 } 00154 } 00155 if (im.pixelDimensionality() == 3) 00156 { 00157 if ((level.tag() != HxValue::V3I) && (level.tag() != HxValue::V3D)) 00158 { 00159 HxGlobalError::instance()->reportError(fname, im.name(), "level is of wrong value type", HxGlobalError::HX_GE_INVALID); 00160 } 00161 } 00162 00163 // Put all non-image parameters in a TagList 00164 HxTagList tags; 00165 HxAddTag(tags, "level", level); 00166 HxAddTag(tags, "v1", v1); 00167 HxAddTag(tags, "v2", v2); 00168 HxAddTag(tags, "v3", v3); 00169 00170 // call HxImageRep member function to do the image processing 00171 return im.unaryPixOp("triStateThreshold", tags); 00172 } |