stereobuffer.inl
上传用户: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. typedef unsigned char uchar;
  23. typedef unsigned short ushort;
  24. #include "processingMMX.h"
  25. #include <math.h>
  26. // Filter stereoBuffer for a given disparity ...
  27.  //input:
  28.  //- [ptBuff-backStep, ptBuff]       contains pixels filtered with sum_row
  29.  //  [ptBuff, ptBuff+subImageSize]   contains raw pixels
  30.  //- [ptBuff16, ptBuff16+2*backStep] contains pixels filtered with sum_row*avg_col
  31.  //output:
  32.  //- [ptBuff-backStep, ptBuff+subImageSize-backStep] contains filtered pixels
  33.  //- [ptBuff16, ptBuff16+2*backStep] contains pixels filtered with sum_row*avg_col
  34. void StereoBuffer::filterSAD(int maskX, int maskY, uchar* ptBuff, ushort* ptBuff16,
  35.  int backStep, int subImageSize, int offset)
  36. {
  37. // ptBuff16 data from [0] to [backStep] come from previous iter
  38. // sum_Row_mmx fills ptBuff16 from [2*backStep] to [2*backStep+subImageSize]
  39. sum_Row_mmx(ptBuff , ptBuff16+2*backStep,     subImageSize, maskX); 
  40. // avg_Col process data in ptBuff16 from [0] to [subImageSize]
  41. avg_Col_mmx(ptBuff16+backStep , ptBuff-backStep,subImageSize, width, maskY); 
  42. // then copy ptBuff16 data [subImageSize] to [2*backStep+subImageSize]
  43. // to [0] to [2*backStep] for next turn
  44. copyMMX(ptBuff16, ptBuff16+subImageSize, 2*backStep*sizeof(short));
  45. // init. SAD score
  46. //initMinimumCorrelation(ptBuff-backStep, 0, imDepth+offset-backStep, 
  47. // corrScore+offset-backStep,
  48. // corrScoreSec+offset-backStep, subImageSize);
  49. }