watershed.h 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*====================================================================*
  2. - Copyright (C) 2001 Leptonica. All rights reserved.
  3. -
  4. - Redistribution and use in source and binary forms, with or without
  5. - modification, are permitted provided that the following conditions
  6. - are met:
  7. - 1. Redistributions of source code must retain the above copyright
  8. - notice, this list of conditions and the following disclaimer.
  9. - 2. Redistributions in binary form must reproduce the above
  10. - copyright notice, this list of conditions and the following
  11. - disclaimer in the documentation and/or other materials
  12. - provided with the distribution.
  13. -
  14. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  15. - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  16. - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  17. - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY
  18. - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  19. - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  20. - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  21. - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
  22. - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  23. - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  24. - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  25. *====================================================================*/
  26. #ifndef LEPTONICA_WATERSHED_H
  27. #define LEPTONICA_WATERSHED_H
  28. /*!
  29. * \file watershed.h
  30. *
  31. * Simple data structure to hold watershed data.
  32. * All data here is owned by the L_WShed and must be freed.
  33. */
  34. /*! Simple data structure to hold watershed data. */
  35. struct L_WShed
  36. {
  37. struct Pix *pixs; /*!< clone of input 8 bpp pixs */
  38. struct Pix *pixm; /*!< clone of input 1 bpp seed (marker) pixm */
  39. l_int32 mindepth; /*!< minimum depth allowed for a watershed */
  40. struct Pix *pixlab; /*!< 16 bpp label pix */
  41. struct Pix *pixt; /*!< scratch pix for computing wshed regions */
  42. void **lines8; /*!< line ptrs for pixs */
  43. void **linem1; /*!< line ptrs for pixm */
  44. void **linelab32; /*!< line ptrs for pixlab */
  45. void **linet1; /*!< line ptrs for pixt */
  46. struct Pixa *pixad; /*!< result: 1 bpp pixa of watersheds */
  47. struct Pta *ptas; /*!< pta of initial seed pixels */
  48. struct Numa *nasi; /*!< numa of seed indicators; 0 if completed */
  49. struct Numa *nash; /*!< numa of initial seed heights */
  50. struct Numa *namh; /*!< numa of initial minima heights */
  51. struct Numa *nalevels; /*!< result: numa of watershed levels */
  52. l_int32 nseeds; /*!< number of seeds (markers) */
  53. l_int32 nother; /*!< number of minima different from seeds */
  54. l_int32 *lut; /*!< lut for pixel indices */
  55. struct Numa **links; /*!< back-links into lut, for updates */
  56. l_int32 arraysize; /*!< size of links array */
  57. l_int32 debug; /*!< set to 1 for debug output */
  58. };
  59. typedef struct L_WShed L_WSHED;
  60. #endif /* LEPTONICA_WATERSHED_H */