![]() |
Leptonica 1.85.0
Image processing and image analysis suite
|
#include "allheaders.h"Go to the source code of this file.
Functions | |
| PIXA * | pixaThinConnected (PIXA *pixas, l_int32 type, l_int32 connectivity, l_int32 maxiters) |
| PIX * | pixThinConnected (PIX *pixs, l_int32 type, l_int32 connectivity, l_int32 maxiters) |
| PIX * | pixThinConnectedBySet (PIX *pixs, l_int32 type, SELA *sela, l_int32 maxiters) |
| SELA * | selaMakeThinSets (l_int32 index, l_int32 debug) |
PIXA *pixaThinConnected()
PIX *pixThinConnected()
PIX *pixThinConnectedBySet()
SELA *selaMakeThinSets()
Definition in file ccthin.c.
| [in] | pixas | of 1 bpp pix |
| [in] | type | L_THIN_FG, L_THIN_BG |
| [in] | connectivity | 4 or 8 |
| [in] | maxiters | max number of iters allowed; use 0 to iterate until completion |
Notes:
(1) See notes in pixThinConnected().
Definition at line 72 of file ccthin.c.
References L_CLONE, L_INSERT, L_THIN_BG, L_THIN_FG, pixThinConnectedBySet(), and selaMakeThinSets().
| [in] | pixs | 1 bpp |
| [in] | type | L_THIN_FG, L_THIN_BG |
| [in] | connectivity | 4 or 8 |
| [in] | maxiters | max number of iters allowed; use 0 to iterate until completion |
Notes:
(1) See "Connectivity-preserving morphological image transformations,"
Dan S. Bloomberg, in SPIE Visual Communications and Image
Processing, Conference 1606, pp. 320-334, November 1991,
Boston, MA. A web version is available at
http://www.leptonica.com/papers/conn.pdf
(2) This is a simple interface for two of the best iterative
morphological thinning algorithms, for 4-c.c and 8-c.c.
Each iteration uses a mixture of parallel operations
(using several different 3x3 Sels) and serial operations.
Specifically, each thinning iteration consists of
four sequential thinnings from each of four directions.
Each of these thinnings is a parallel composite
operation, where the union of a set of HMTs are set
subtracted from the input. For 4-cc thinning, we
use 3 HMTs in parallel, and for 8-cc thinning we use 4 HMTs.
(3) A "good" thinning algorithm is one that generates a skeleton
that is near the medial axis and has neither pruned
real branches nor left extra dendritic branches.
(4) Duality between operations on fg and bg require switching
the connectivity. To thin the foreground, which is the usual
situation, use type == L_THIN_FG. Thickening the foreground
is equivalent to thinning the background (type == L_THIN_BG),
where the alternate connectivity gets preserved.
For example, to thicken the fg with 2 rounds of iterations
using 4-c.c., thin the bg using Sels that preserve 8-connectivity:
Pix *pix = pixThinConnected(pixs, L_THIN_BG, 8, 2);
(5) This makes and destroys the sela set each time. It's not a large
overhead, but if you are calling this thousands of times on
very small images, you can avoid the overhead; e.g.
Sela *sela = selaMakeThinSets(1, 0); // for 4-c.c.
Pix *pix = pixThinConnectedBySet(pixs, L_THIN_FG, sela, 0);
using set 1 for 4-c.c. and set 5 for 8-c.c operations.
Definition at line 160 of file ccthin.c.
References L_THIN_BG, L_THIN_FG, pixThinConnectedBySet(), and selaMakeThinSets().
| [in] | pixs | 1 bpp |
| [in] | type | L_THIN_FG, L_THIN_BG |
| [in] | sela | of Sels for parallel composite HMTs |
| [in] | maxiters | max number of iters allowed; use 0 to iterate until completion |
Notes:
(1) See notes in pixThinConnected().
(2) This takes a sela representing one of 11 sets of HMT Sels.
The HMTs from this set are run in parallel and the result
is OR'd before being subtracted from the source. For each
iteration, this "parallel" thin is performed four times
sequentially, for sels rotated by 90 degrees in all four
directions.
(3) The "parallel" and "sequential" nomenclature is standard
in digital filtering. Here, "parallel" operations work on the
same source (pixd), and accumulate the results in a temp
image before actually applying them to the source (in this
case, using an in-place subtraction). "Sequential" operations
operate directly on the source (pixd) to produce the result
(in this case, with four sequential thinning operations, one
from each of four directions).
Definition at line 220 of file ccthin.c.
References L_INSERT, L_THIN_BG, and L_THIN_FG.
Referenced by pixaThinConnected(), and pixThinConnected().
| SELA * selaMakeThinSets | ( | l_int32 | index, |
| l_int32 | debug ) |
| [in] | index | into specific sets |
| [in] | debug | 1 to output display of sela |
Notes:
(1) These are specific sets of HMTs to be used in parallel for
for thinning from each of four directions.
(2) The sets are indexed as follows:
For thinning (e.g., run to completion):
index = 1 sel_4_1, sel_4_2, sel_4_3
index = 2 sel_4_1, sel_4_5, sel_4_6
index = 3 sel_4_1, sel_4_7, sel_4_7_rot
index = 4 sel_48_1, sel_48_1_rot, sel_48_2
index = 5 sel_8_2, sel_8_3, sel_8_5, sel_8_6
index = 6 sel_8_2, sel_8_3, sel_48_2
index = 7 sel_8_1, sel_8_5, sel_8_6
index = 8 sel_8_2, sel_8_3, sel_8_8, sel_8_9
index = 9 sel_8_5, sel_8_6, sel_8_7, sel_8_7_rot
For thickening (e.g., just a few iterations):
index = 10 sel_4_2, sel_4_3
index = 11 sel_8_4
(3) For a very smooth skeleton, use set 1 for 4 connected and
set 5 for 8 connected thins.
Definition at line 339 of file ccthin.c.
References L_COPY, and L_INSERT.
Referenced by pixaThinConnected(), and pixThinConnected().