00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef __OPENNI_IMAGE_BAYER_GRBG__
00038 #define __OPENNI_IMAGE_BAYER_GRBG__
00039 #include "openni_image.h"
00040
00041 namespace openni_wrapper
00042 {
00048 class ImageBayerGRBG : public Image
00049 {
00050 public:
00051
00052 typedef enum
00053 {
00054 Bilinear = 0,
00055 EdgeAware,
00056 EdgeAwareWeighted
00057 } DebayeringMethod;
00058
00059 ImageBayerGRBG (boost::shared_ptr<xn::ImageMetaData> image_meta_data, DebayeringMethod method) throw ();
00060 virtual ~ImageBayerGRBG () throw ();
00061
00062 inline virtual Encoding
00063 getEncoding () const
00064 {
00065 return (BAYER_GRBG);
00066 }
00067
00068 virtual void fillRGB (unsigned width, unsigned height, unsigned char* rgb_buffer, unsigned rgb_line_step = 0) const throw (OpenNIException);
00069 virtual void fillGrayscale (unsigned width, unsigned height, unsigned char* gray_buffer, unsigned gray_line_step = 0) const throw (OpenNIException);
00070 virtual bool isResizingSupported (unsigned input_width, unsigned input_height, unsigned output_width, unsigned output_height) const;
00071 inline void setDebayeringMethod (const DebayeringMethod& method) throw ();
00072 inline DebayeringMethod getDebayeringMethod () const throw ();
00073 inline static bool resizingSupported (unsigned input_width, unsigned input_height, unsigned output_width, unsigned output_height);
00074 protected:
00075 DebayeringMethod debayering_method_;
00076 };
00077
00078 void ImageBayerGRBG::setDebayeringMethod (const ImageBayerGRBG::DebayeringMethod& method) throw ()
00079 {
00080 debayering_method_ = method;
00081 }
00082
00083 ImageBayerGRBG::DebayeringMethod ImageBayerGRBG::getDebayeringMethod () const throw ()
00084 {
00085 return debayering_method_;
00086 }
00087
00088 bool ImageBayerGRBG::resizingSupported (unsigned input_width, unsigned input_height, unsigned output_width, unsigned output_height)
00089 {
00090 return (output_width <= input_width && output_height <= input_height && input_width % output_width == 0 && input_height % output_height == 0 );
00091 }
00092 }
00093
00094 #endif // __OPENNI_IMAGE__