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 27 #ifndef LEPTONICA_WATERSHED_H 28 #define LEPTONICA_WATERSHED_H 29 30 /*! 31 * \file watershed.h 32 * 33 * Simple data structure to hold watershed data. 34 * All data here is owned by the L_WShed and must be freed. 35 */ 36 37 /*! Simple data structure to hold watershed data. */ 38 struct L_WShed 39 { 40 struct Pix *pixs; /*!< clone of input 8 bpp pixs */ 41 struct Pix *pixm; /*!< clone of input 1 bpp seed (marker) pixm */ 42 l_int32 mindepth; /*!< minimum depth allowed for a watershed */ 43 struct Pix *pixlab; /*!< 16 bpp label pix */ 44 struct Pix *pixt; /*!< scratch pix for computing wshed regions */ 45 void **lines8; /*!< line ptrs for pixs */ 46 void **linem1; /*!< line ptrs for pixm */ 47 void **linelab32; /*!< line ptrs for pixlab */ 48 void **linet1; /*!< line ptrs for pixt */ 49 struct Pixa *pixad; /*!< result: 1 bpp pixa of watersheds */ 50 struct Pta *ptas; /*!< pta of initial seed pixels */ 51 struct Numa *nasi; /*!< numa of seed indicators; 0 if completed */ 52 struct Numa *nash; /*!< numa of initial seed heights */ 53 struct Numa *namh; /*!< numa of initial minima heights */ 54 struct Numa *nalevels; /*!< result: numa of watershed levels */ 55 l_int32 nseeds; /*!< number of seeds (markers) */ 56 l_int32 nother; /*!< number of minima different from seeds */ 57 l_int32 *lut; /*!< lut for pixel indices */ 58 struct Numa **links; /*!< back-links into lut, for updates */ 59 l_int32 arraysize; /*!< size of links array */ 60 l_int32 debug; /*!< set to 1 for debug output */ 61 }; 62 typedef struct L_WShed L_WSHED; 63 64 #endif /* LEPTONICA_WATERSHED_H */ 65