simplify mode_find_edges by splitting the sub-modes into separate functions
[sparrow.git] / edges.h
blob0ed0fd3bba64afebf94190af3606253ee0fbb772
1 #ifndef __SPARROW_EDGES_H__
2 #define __SPARROW_EDGES_H__
4 typedef enum corner_status {
5 CORNER_UNUSED,
6 CORNER_PROJECTED,
7 CORNER_EXACT,
8 } corner_status_t;
10 typedef enum edges_state {
11 EDGES_FIND_NOISE,
12 EDGES_FIND_LINES,
13 EDGES_FIND_CORNERS,
15 EDGES_NEXT_STATE,
16 } edges_state_t;
18 typedef struct sparrow_corner_s {
19 int in_x;
20 int in_y;
21 /*dyr -> dy to next point right
22 dxd ->dx to next point down */
23 int dxr;
24 int dyr;
25 int dxd;
26 int dyd;
27 corner_status_t status;
28 } sparrow_corner_t;
30 typedef struct sparrow_voter_s {
31 int x;
32 int y;
33 guint32 signal;
34 } sparrow_voter_t;
36 typedef struct sparrow_cluster_s {
37 int n;
38 sparrow_voter_t voters[8];
39 } sparrow_cluster_t;
42 typedef union sparrow_signal_s {
43 guint16 v_signal;
44 guint16 h_signal;
45 } sparrow_signal_t;
48 typedef struct sparrow_intersect_s {
49 guint16 lines[2];
50 guint16 signal[2];
51 } sparrow_intersect_t;
53 typedef struct sparrow_line_s {
54 gint offset;
55 sparrow_axis_t dir;
56 gint index;
57 } sparrow_line_t;
59 typedef struct sparrow_find_lines_s {
60 //sparrow_line_t *lines;
61 sparrow_line_t *h_lines;
62 sparrow_line_t *v_lines;
63 sparrow_line_t **shuffled_lines;
64 int current;
65 int n_lines;
66 int n_vlines;
67 int n_hlines;
68 gint shift1;
69 gint shift2;
70 sparrow_intersect_t *map;
71 sparrow_corner_t *mesh;
72 sparrow_cluster_t *clusters;
73 IplImage *debug;
74 IplImage *threshold;
75 IplImage *working;
76 IplImage *input;
77 int counter;
78 edges_state_t state;
79 } sparrow_find_lines_t;
82 #define DEBUG_FIND_LINES(fl)GST_DEBUG( \
83 "fl:\n" \
84 " sparrow_line_t *h_lines: %p\n" \
85 " sparrow_line_t *v_lines: %p\n" \
86 " sparrow_line_t **shuffled_lines: %p\n" \
87 " int current: %d\n" \
88 " int n_lines: %d\n" \
89 " int n_vlines: %d\n" \
90 " int n_hlines: %d\n" \
91 " gint threshold: %d\n" \
92 " gint shift1: %d\n" \
93 " gint shift2: %d\n" \
94 " sparrow_intersect_t *map: %p\n" \
95 " sparrow_corner_t *mesh: %p\n" \
96 " sparrow_cluster_t *clusters: %p\n" \
97 , \
98 (fl)->h_lines, \
99 (fl)->v_lines, \
100 (fl)->shuffled_lines, \
101 (fl)->current, \
102 (fl)->n_lines, \
103 (fl)->n_vlines, \
104 (fl)->n_hlines, \
105 (fl)->threshold, \
106 (fl)->shift1, \
107 (fl)->shift2, \
108 (fl)->map, \
109 (fl)->mesh, \
110 (fl)->clusters) \
112 //#undef debug_find_lines
113 //#define debug_find_lines(x) /* */
116 #endif /*have this .h*/