ROPO
Loading...
Searching...
No Matches
fmi_image_filter.h
1
24/* THIS LIBRARY CONTAINS IMAGE PROCESSING OPERATIONS FOR GENERAL PURPOSE */
25/* radar images, satellite images why not ... */
26
27/* #define UNVISITED 255 */
28#define VISITED 1
29
30/*
31 #include "fmi_image_filter_speck.h"
32 #include "fmi_image_filter_line.h"
33 #include "fmi_image_filter_texture.h"
34*/
35
36void detect_horz_gradient(FmiImage *source,FmiImage *trace);
37void detect_vert_gradient(FmiImage *source,FmiImage *trace);
38
39/* LOCAL MAXIMA */
40void detect_horz_maxima(FmiImage *source,FmiImage *trace);
41void detect_horz_maxima2(FmiImage *source,FmiImage *trace); /* normalized */
42void detect_horz_edges(FmiImage *source,FmiImage *trace);
43
44/*/ Finds local maxima, magnitude defined as the lower difference to neighbouring intensities. */
45void detect_vert_maxima(FmiImage *source,FmiImage *trace); /* MP changed 2010: zeros also written. */
46
47void detect_vert_maxima2(FmiImage *source,FmiImage *trace);
48void detect_vert_edges(FmiImage *source,FmiImage *trace);
49
50/* INFINITE INPULSE RESPONSE FILTERS */
51/* simple */
52void iir_left(FmiImage *source,FmiImage *trace,int promille);
53void iir_right(FmiImage *source,FmiImage *trace,int promille);
54void iir_up(FmiImage *source,FmiImage *trace,int promille);
55void iir_down(FmiImage *source,FmiImage *trace,int promille);
56
57/* In source, change pixels (i,j) with mask(i,j) < threshold to c */
58void mask_image(FmiImage *source,FmiImage *mask,Byte threshold,Byte c);
59
60void threshold_image(FmiImage *source,FmiImage *target,Byte threshold);
61void binarize_image(FmiImage *source,FmiImage *target,Byte threshold);
62/*void high_boost(FmiImage *source,FmiImage *target,Byte threshold); */
63
64/* Propagate = spread MAX information within a speck or segment */
65/* source = information, as byte values; or NULL -> byte=0 */
66/* domain = area {(x,y)|f(x,y)>0} inside which information is spread */
67/* target = target image */
68/* slope = slope for increasing/decreasing byte value */
69/* Typically, threshold is applied first. */
70
71void propagate_right(FmiImage *source,FmiImage *domain,FmiImage *target, signed char slope,void (* put_func)(FmiImage *,int,int,int,Byte));
72void propagate_left(FmiImage *source,FmiImage *domain,FmiImage *target, signed char slope,void (* put_func)(FmiImage *,int,int,int,Byte));
73void propagate_horz(FmiImage *source,FmiImage *domain,FmiImage *target, signed char slope,void (* put_func)(FmiImage *,int,int,int,Byte));
74void propagate_up(FmiImage *source,FmiImage *domain,FmiImage *target, signed char slope,void (* put_func)(FmiImage *,int,int,int,Byte));
75void propagate_down(FmiImage *source,FmiImage *domain,FmiImage *target, signed char slope,void (* put_func)(FmiImage *,int,int,int,Byte));
76
77void horz_seg_lengths(FmiImage *source,FmiImage *target);
78void vert_seg_lengths(FmiImage *source,FmiImage *target);
79
80void row_statistics(FmiImage *source,Byte *nonzero,Byte *sum,Byte *sum2);
81void col_statistics(FmiImage *source,Byte *nonzero,Byte *sum,Byte *sum2);