stereobuffer.h
上传用户:fengshi120
上传日期:2014-07-17
资源大小:6155k
文件大小:3k
源码类别:

3D图形编程

开发平台:

C/C++

  1. /*************************************************************************** 
  2. *
  3. * Copyright 2000 by David Demirdjian.   All rights reserved. 
  4. *  
  5. * Developed  by David Demirdjian
  6. *  
  7. * Permission to use, copy, or modify this software and  its documentation 
  8. * for  educational  and  research purposes only and without fee  is hereby 
  9. * granted, provided  that this copyright notice and the original authors's 
  10. * names appear  on all copies and supporting documentation.  If individual 
  11. * files are  separated from  this  distribution directory  structure, this 
  12. * copyright notice must be included.  For any other uses of this software, 
  13. * in original or  modified form, including but not limited to distribution 
  14. * in whole or in  part, specific  prior permission  must be  obtained from 
  15. * MIT.  These programs shall not  be  used, rewritten, or  adapted as  the 
  16. * basis  of  a  commercial  software  or  hardware product  without  first 
  17. * obtaining appropriate  licenses from David Demirdjian.  The author makes 
  18. * no representations about the suitability of this software for any purpose.  
  19. * It is provided "as is" without express or implied warranty. 
  20. *  
  21. **************************************************************************/
  22. #ifndef _STEREOBUFFER_H
  23. #define _STEREOBUFFER_H
  24. // ********************************************************************
  25. // ********************************************************************
  26. // StereoBuffer: class containing all the buffers necessary for stereo 
  27. // computation (at a fixed scale)
  28. class StereoBuffer {
  29. public:
  30. StereoBuffer();
  31. ~StereoBuffer();
  32. void setSize(int width, int height, int maxNbDepth);
  33. void alloc();
  34. void deAlloc();
  35. void allocTempBuffer16();
  36. void deAllocTempBuffer16();
  37. inline void filterSAD(int maskX, int maskY, 
  38.   unsigned char* ptBuff, unsigned short* ptBuff16,
  39.   int backStep, int subImageSize, int offset);
  40. int width, height, maxNbDepth;
  41. // minimum disparity scores
  42. unsigned char* getCorrScores() const;
  43. // second minimum disparity scores
  44. unsigned char* getCorrScores_Sec() const;
  45. // buffers used for 8-bits use
  46. int buffStep;
  47. unsigned char** buff;
  48. unsigned char* bigBuffer, *bigBuffer_origin;
  49. unsigned short **buff16;
  50. unsigned short *bigBuffer16, *bigBuffer16_origin; // buffers used for 16-bits use
  51. // corr. scores associated with depth
  52. unsigned char* corrScore, *corrScoreSec;
  53. unsigned char* corrScore_origin, *corrScoreSec_origin; // corr. scores associated with depth
  54. // stereo grow 
  55. unsigned char *imDepth_ref, *imDepth_ref_origin; 
  56. unsigned short *Depth16, *Depth16_origin; 
  57. unsigned short *buffTemp, *buffTemp_origin; // intermediate buffer used for 'sum_row' filtering  (16-bits)
  58. unsigned char* count_non_null_pixels, *count_non_null_pixels_origin;
  59. };
  60. #include "stereobuffer.inl"
  61. #endif