watershed.h 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. * 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. struct L_WShed
  35. {
  36. struct Pix *pixs; /* clone of input 8 bpp pixs */
  37. struct Pix *pixm; /* clone of input 1 bpp seed (marker) pixm */
  38. l_int32 mindepth; /* minimum depth allowed for a watershed */
  39. struct Pix *pixlab; /* 16 bpp label pix */
  40. struct Pix *pixt; /* scratch pix for computing wshed regions */
  41. void **lines8; /* line ptrs for pixs */
  42. void **linem1; /* line ptrs for pixm */
  43. void **linelab32; /* line ptrs for pixlab */
  44. void **linet1; /* line ptrs for pixt */
  45. struct Pixa *pixad; /* result: 1 bpp pixa of watersheds */
  46. struct Pta *ptas; /* pta of initial seed pixels */
  47. struct Numa *nasi; /* numa of seed indicators; 0 if completed */
  48. struct Numa *nash; /* numa of initial seed heights */
  49. struct Numa *namh; /* numa of initial minima heights */
  50. struct Numa *nalevels; /* result: numa of watershed levels */
  51. l_int32 nseeds; /* number of seeds (markers) */
  52. l_int32 nother; /* number of minima different from seeds */
  53. l_int32 *lut; /* lut for pixel indices */
  54. struct Numa **links; /* back-links into lut, for updates */
  55. l_int32 arraysize; /* size of links array */
  56. l_int32 debug; /* set to 1 for debug output */
  57. };
  58. typedef struct L_WShed L_WSHED;
  59. #endif /* LEPTONICA_WATERSHED_H */