diff --git a/Testing/Code/BasicFilters/CMakeLists.txt b/Testing/Code/BasicFilters/CMakeLists.txt
index b8e14d13b05ebe793aec39acae403a6723b09157..0504f2b4cd796cf4f5c5d074f7cd38e7bb532e35 100644
--- a/Testing/Code/BasicFilters/CMakeLists.txt
+++ b/Testing/Code/BasicFilters/CMakeLists.txt
@@ -1289,6 +1289,20 @@ ADD_TEST(bfTvPointSetDensityGaussianFunctionTest ${BASICFILTERS_TESTS11}
      ${TEMP}/bfTvPointSetDensityGaussianFunctionOutputAscii.txt
      )
      
+# -------    otbPointSetDensityEpanechnikovFunction   ----------------------------
+ADD_TEST(bfTuPointSetDensityEpanechnikovFunctionNew ${BASICFILTERS_TESTS11}
+     otbPointSetDensityEpanechnikovFunctionNew
+     )
+
+
+ADD_TEST(bfTvPointSetDensityEpanechnikovFunctionTest ${BASICFILTERS_TESTS11}
+--compare-ascii ${NOTOL}
+         ${BASELINE_FILES}/bfTvPointSetDensityEpanechnikovFunctionOutputAscii.txt
+        ${TEMP}/bfTvPointSetDensityEpanechnikovFunctionOutputAscii.txt
+     otbPointSetDensityEpanechnikovFunctionTest
+     ${TEMP}/bfTvPointSetDensityEpanechnikovFunctionOutputAscii.txt
+     )
+
 #------------ otbPointSetToDensityImageFilter ---------------------
 
 ADD_TEST(bfTuPointSetToDensityImageFilterNew ${BASICFILTERS_TESTS11}
@@ -1802,6 +1816,8 @@ otbPointSetDensityFunctionNew.cxx
 otbPointSetDensityFunctionTest.cxx
 otbPointSetDensityGaussianFunctionNew.cxx
 otbPointSetDensityGaussianFunctionTest.cxx
+otbPointSetDensityEpanechnikovFunctionNew.cxx
+otbPointSetDensityEpanechnikovFunctionTest.cxx
 otbPointSetToDensityImageFilterNew.cxx
 otbPointSetToDensityImageFilterTest.cxx
 otbKeyPointDensityImageFilterNew.cxx
diff --git a/Testing/Code/BasicFilters/otbBasicFiltersTests11.cxx b/Testing/Code/BasicFilters/otbBasicFiltersTests11.cxx
index 5cd91510368722cefb5fddf0db4a7aa9b4d662e9..65f7de65368050d5b7576ed61a3c37cdd9fc5924 100644
--- a/Testing/Code/BasicFilters/otbBasicFiltersTests11.cxx
+++ b/Testing/Code/BasicFilters/otbBasicFiltersTests11.cxx
@@ -32,6 +32,8 @@ void RegisterTests()
   REGISTER_TEST(otbPointSetDensityFunctionTest);
   REGISTER_TEST(otbPointSetDensityGaussianFunctionNew);
   REGISTER_TEST(otbPointSetDensityGaussianFunctionTest);
+  REGISTER_TEST(otbPointSetDensityEpanechnikovFunctionNew);
+  REGISTER_TEST(otbPointSetDensityEpanechnikovFunctionTest);
   REGISTER_TEST(otbPointSetToDensityImageFilterNew);
   REGISTER_TEST(otbPointSetToDensityImageFilterTest);
   REGISTER_TEST(otbKeyPointDensityImageFilterNew);
diff --git a/Testing/Code/BasicFilters/otbPointSetDensityEpanechnikovFunctionNew.cxx b/Testing/Code/BasicFilters/otbPointSetDensityEpanechnikovFunctionNew.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..4da21b38ad9d897180b3a1e8700b8f3c2adceb80
--- /dev/null
+++ b/Testing/Code/BasicFilters/otbPointSetDensityEpanechnikovFunctionNew.cxx
@@ -0,0 +1,39 @@
+/*=========================================================================
+
+  Program:   ORFEO Toolbox
+  Language:  C++
+  Date:      $Date$
+  Version:   $Revision$
+
+
+  Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
+  See OTBCopyright.txt for details.
+
+
+     This software is distributed WITHOUT ANY WARRANTY; without even
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+     PURPOSE.  See the above copyright notices for more information.
+
+=========================================================================*/
+
+#include <stdio.h>
+
+#include "otbPointSetDensityEpanechnikovFunction.h"
+#include "itkPointSet.h"
+#include "itkVariableLengthVector.h"
+
+int otbPointSetDensityEpanechnikovFunctionNew(int, char*[])
+{
+
+  const unsigned int Dimension = 2;
+  typedef float      PixelType;
+
+  typedef itk::VariableLengthVector<PixelType>                               RealVectorType;
+  typedef itk::PointSet<RealVectorType, Dimension>                           PointSetType;
+  typedef otb::PointSetDensityEpanechnikovFunction <PointSetType, PixelType> FunctionType;
+
+  /**Instantiation of a Smart Pointer*/
+  FunctionType::Pointer filter = FunctionType::New();
+
+  return EXIT_SUCCESS;
+}
diff --git a/Testing/Code/BasicFilters/otbPointSetDensityEpanechnikovFunctionTest.cxx b/Testing/Code/BasicFilters/otbPointSetDensityEpanechnikovFunctionTest.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..aa69b165af8d506d2a738c97ee43172a2eb65d2d
--- /dev/null
+++ b/Testing/Code/BasicFilters/otbPointSetDensityEpanechnikovFunctionTest.cxx
@@ -0,0 +1,75 @@
+/*=========================================================================
+
+  Program:   ORFEO Toolbox
+  Language:  C++
+  Date:      $Date$
+  Version:   $Revision$
+
+
+  Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
+  See OTBCopyright.txt for details.
+
+
+     This software is distributed WITHOUT ANY WARRANTY; without even
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+     PURPOSE.  See the above copyright notices for more information.
+
+=========================================================================*/
+
+#include "otbImageFileReader.h"
+#include "otbPointSetDensityEpanechnikovFunction.h"
+#include "itkPointSet.h"
+#include "itkVariableLengthVector.h"
+#include "otbSiftFastImageFilter.h"
+
+#include <iostream>
+
+int otbPointSetDensityEpanechnikovFunctionTest(int argc, char* argv[])
+{
+
+  const char * outfname = argv[1];
+
+  const unsigned int Dimension = 2;
+  typedef float      PixelType;
+
+  typedef itk::VariableLengthVector<PixelType>                               RealVectorType;
+  typedef itk::PointSet<RealVectorType, Dimension>                           PointSetType;
+  typedef otb::PointSetDensityEpanechnikovFunction <PointSetType, PixelType> FunctionType;
+
+  /**Instantiation of a Smart Pointer*/
+  PointSetType::Pointer pointSet = PointSetType::New();
+  FunctionType::Pointer filter = FunctionType::New();
+  std::ofstream         outfile(outfname);
+
+  /** Construction of the pointSet */
+  PointSetType::PointIdentifier count = 0;
+
+  PointSetType::PointType pDst, pSrc;
+  pDst[0] = 12.78;
+  pDst[1] = 18.76;
+  pointSet->SetPoint(count++, pDst);
+
+  pDst[0] = 15.78;
+  pDst[1] = 23.76;
+  pointSet->SetPoint(count++, pDst);
+
+  pDst[0] = 9.78;
+  pDst[1] = 5.76;
+  pointSet->SetPoint(count++, pDst);
+
+  filter->SetPointSet(pointSet);
+  filter->SetRadius(2);
+
+  /**Point we search around*/
+  pDst[0] = 14.9;
+  pDst[1] = 24;
+  outfile << "Density computed for the point : " << pDst << " is " << filter->Evaluate(pDst) << std::endl;
+
+  pDst[0] = 9;
+  pDst[1] = 5;
+  outfile << "Density computed for the point : " << pDst << " is " << filter->Evaluate(pDst) << std::endl;
+
+  outfile.close();
+
+  return EXIT_SUCCESS;
+}