00001 #ifndef vepl_monadic_h_ 00002 #define vepl_monadic_h_ 00003 //: 00004 // \file 00005 // \brief apply any (fixed) function to all pixels 00006 // 00007 // The only parameter to be passed to the constructor must be a (monadic) 00008 // function that takes a pixel value from the input image and produces 00009 // a pixel value of the output image, i.e., its signature must be 00010 // DataOut f(DataIn const&). 00011 // A typical example is, e.g., log(), but any point operator (like e.g. 00012 // thresholding) could be implemented through this more general monadic IP 00013 // operator, notably shift or scale of intensity values. 00014 // 00015 // Note that the input and output images are allowed to be identical. 00016 // 00017 // \author Peter Vanroose, K.U.Leuven (ESAT/PSI) 00018 // \date 7 October 2002 00019 // 00020 // \verbatim 00021 // Modifications 00022 // Peter Vanroose - 20 aug 2003 - changed parameter and return types from vil_image_view_base_sptr to vil_image_resource_sptr 00023 // \endverbatim 00024 00025 #include <vil/vil_image_resource.h> 00026 00027 //: replace pixels by their absolute value 00028 vil_image_resource_sptr vepl_monadic_abs(vil_image_resource_sptr ); 00029 //: replace pixels by their square root 00030 vil_image_resource_sptr vepl_monadic_sqrt(vil_image_resource_sptr ); 00031 //: replace pixels by their square 00032 vil_image_resource_sptr vepl_monadic_sqr(vil_image_resource_sptr ); 00033 //: replace pixels by a linear distortion 00034 vil_image_resource_sptr vepl_monadic_shear(vil_image_resource_sptr , double shift, double scale); 00035 00036 #endif // vepl_monadic_h_