diff --git a/Utilities/ITK/Code/Common/itkNumericTraits.h b/Utilities/ITK/Code/Common/itkNumericTraits.h
index f0d95a38addd52526dcc400be81cbae95502fcab..b69fef416988d67d50c623d487abd5e223330db1 100644
--- a/Utilities/ITK/Code/Common/itkNumericTraits.h
+++ b/Utilities/ITK/Code/Common/itkNumericTraits.h
@@ -183,6 +183,9 @@ public:
   static bool IsNonnegative(char val) {return val >= Zero; }
   static char ZeroValue() { return Zero; }
   static char OneValue() { return One; }
+  static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal)
+  {return val<minVal?minVal:(val>maxVal?maxVal:val);}
+
 };
 
 /** \class NumericTraits<char>
@@ -214,6 +217,9 @@ public:
   static bool IsNonnegative(signed char val) {return val >= Zero; }
   static signed char  ZeroValue() { return Zero; }
   static signed char OneValue() { return One; }
+  static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal)
+  {return val<minVal?minVal:(val>maxVal?maxVal:val);}
+
 };
 
 /** \class NumericTraits<unsigned char>
@@ -243,6 +249,9 @@ public:
   static bool IsNonnegative(unsigned char /*val */) {return true; }
   static unsigned char  ZeroValue() { return Zero; }
   static unsigned char OneValue() { return One; }
+  static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal)
+  {return val<minVal?minVal:(val>maxVal?maxVal:val);}
+
 };
 
 /** \class NumericTraits<short>
@@ -270,6 +279,9 @@ public:
   static bool IsNonnegative(short val) {return val >= Zero; }
   static short  ZeroValue() { return Zero; }
   static short OneValue() { return One; }
+  static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal)
+  {return val<minVal?minVal:(val>maxVal?maxVal:val);}
+
 };
 
 /** \class NumericTraits<unsigned short>
@@ -298,6 +310,9 @@ public:
   static bool IsNonnegative(unsigned short /*val*/) {return true; }
   static unsigned short  ZeroValue() { return Zero; }
   static unsigned short OneValue() { return One; }
+  static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal)
+  {return val<minVal?minVal:(val>maxVal?maxVal:val);}
+
 };
 
 /** \class NumericTraits<int>
@@ -325,6 +340,9 @@ public:
   static bool IsNonnegative(int val) {return val >= Zero; }
   static int  ZeroValue() { return Zero; }
   static int OneValue() { return One; }
+  static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal)
+  {return val<minVal?minVal:(val>maxVal?maxVal:val);}
+
 };
 
 /** \class NumericTraits<unsigned int>
@@ -356,6 +374,9 @@ public:
   static bool IsNonnegative(unsigned int /*val*/) {return true; }
   static unsigned int  ZeroValue() { return Zero; }
   static unsigned int OneValue() { return One; }
+  static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal)
+  {return val<minVal?minVal:(val>maxVal?maxVal:val);}
+
 };
 
 /** \class NumericTraits<long>
@@ -384,6 +405,9 @@ public:
   static bool IsNonnegative(long val) {return val >= Zero; }
   static long  ZeroValue() { return Zero; }
   static long OneValue() { return One; }
+  static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal)
+  {return val<minVal?minVal:(val>maxVal?maxVal:val);}
+
 };
 
 /** \class NumericTraits<unsigned long>
@@ -412,6 +436,9 @@ public:
   static bool IsNonnegative(unsigned long) {return true; }
   static unsigned long  ZeroValue() { return Zero; }
   static unsigned long  OneValue() { return One; }
+  static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal)
+  {return val<minVal?minVal:(val>maxVal?maxVal:val);}
+
 };
 
 /** \class NumericTraits<float>
@@ -440,6 +467,9 @@ public:
   static bool IsNonnegative(float val) {return val >= Zero; }
   static float  ZeroValue() { return Zero; }
   static float  OneValue() { return One; }
+  static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal)
+  {return val<minVal?minVal:(val>maxVal?maxVal:val);}
+
 };
 
 /** \class NumericTraits<double>
@@ -468,6 +498,9 @@ public:
   static bool IsNonnegative(double val) {return val >= Zero; }
   static double  ZeroValue() { return Zero; }
   static double  OneValue() { return One; }
+  static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal)
+  {return val<minVal?minVal:(val>maxVal?maxVal:val);}
+
 };
 
 /** \class NumericTraits<long double>
@@ -496,6 +529,9 @@ public:
   static bool IsNonnegative(long double val) {return val >= Zero; }
   static long double ZeroValue() { return Zero; }
   static long double OneValue() { return One; }
+  static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal)
+  {return val<minVal?minVal:(val>maxVal?maxVal:val);}
+
 };
 
 /** \class NumericTraits< std::complex<float> >
@@ -527,6 +563,12 @@ public:
   static bool IsNonnegative(TheType val) {return val.real() >= 0.0; }
   static TheType ZeroValue() { return Zero; }
   static TheType OneValue() { return One; }
+  static TheType Clamp(TheType val,TheType minVal, TheType maxVal)
+  {
+    return TheType(NumericTraits<ValueType>::Clamp(val.real(),minVal.real(),maxVal.real()),
+                   NumericTraits<ValueType>::Clamp(val.imag(),minVal.imag(),maxVal.imag()));
+  }
+
 };
 
 
@@ -559,6 +601,11 @@ public:
   static bool IsNonnegative(TheType val) {return val.real() >= 0.0; }
   static TheType ZeroValue() { return Zero; }
   static TheType OneValue() { return One; }
+  static TheType Clamp(TheType val,TheType minVal, TheType maxVal)
+  {
+    return TheType(NumericTraits<ValueType>::Clamp(val.real(),minVal.real(),maxVal.real()),
+                  NumericTraits<ValueType>::Clamp(val.imag(),minVal.imag(),maxVal.imag()));
+  }
 };