1 #include "segv_vil_menus.h"
2 //:
3 // \file
4 #include "vgui/vgui.h"
5 #include "vgui/vgui_key.h"
6 #include "vgui/vgui_menu.h"
7 #include "segv_vil_segmentation_manager.h"
8 
9 // Static menu callback functions
10 
quit_callback()11 void segv_vil_menus::quit_callback()
12 {
13   segv_vil_segmentation_manager::instance()->quit();
14 }
15 
16 
load_image_callback()17 void segv_vil_menus::load_image_callback()
18 {
19   segv_vil_segmentation_manager::instance()->load_image();
20 }
21 
save_image_callback()22 void segv_vil_menus::save_image_callback()
23 {
24   segv_vil_segmentation_manager::instance()->save_image();
25 }
26 
save_camera_callback()27 void segv_vil_menus::save_camera_callback()
28 {
29   segv_vil_segmentation_manager::instance()->save_nitf_camera();
30 }
31 
remove_image_callback()32 void segv_vil_menus::remove_image_callback()
33 {
34   segv_vil_segmentation_manager::instance()->remove_image();
35 }
36 
37 
convert_to_grey_callback()38 void segv_vil_menus::convert_to_grey_callback()
39 {
40   segv_vil_segmentation_manager::instance()->convert_to_grey();
41 }
42 
set_range_params_callback()43 void segv_vil_menus::set_range_params_callback()
44 {
45   segv_vil_segmentation_manager::instance()->set_range_params();
46 }
47 
clear_display_callback()48 void segv_vil_menus::clear_display_callback()
49 {
50   segv_vil_segmentation_manager::instance()->clear_display();
51 }
52 
threshold_image_callback()53 void segv_vil_menus::threshold_image_callback()
54 {
55   segv_vil_segmentation_manager::instance()->threshold_image();
56 }
57 
gradient_mag_angle_callback()58 void segv_vil_menus::gradient_mag_angle_callback()
59 {
60   segv_vil_segmentation_manager::instance()->gradient_mag_angle();
61 }
62 
fft_callback()63 void segv_vil_menus::fft_callback()
64 {
65   segv_vil_segmentation_manager::instance()->fft();
66 }
67 
harris_corners_callback()68 void segv_vil_menus::harris_corners_callback()
69 {
70   segv_vil_segmentation_manager::instance()->harris_corners();
71 }
72 
nonmaximal_suppression_callback()73 void segv_vil_menus::nonmaximal_suppression_callback()
74 {
75   segv_vil_segmentation_manager::instance()->nonmaximal_suppression();
76 }
77 
vd_edges_callback()78 void segv_vil_menus::vd_edges_callback()
79 {
80   segv_vil_segmentation_manager::instance()->vd_edges();
81 }
82 
third_order_edges_callback()83 void segv_vil_menus::third_order_edges_callback()
84 {
85   segv_vil_segmentation_manager::instance()->third_order_edges();
86 }
87 
fit_lines_callback()88 void segv_vil_menus::fit_lines_callback()
89 {
90   segv_vil_segmentation_manager::instance()->fit_lines();
91 }
92 
fit_conics_callback()93 void segv_vil_menus::fit_conics_callback()
94 {
95   segv_vil_segmentation_manager::instance()->fit_conics();
96 }
97 
fit_overlay_conics_callback()98 void segv_vil_menus::fit_overlay_conics_callback()
99 {
100   segv_vil_segmentation_manager::instance()->fit_overlay_conics();
101 }
102 
mser_conics_callback()103 void segv_vil_menus::mser_conics_callback()
104 {
105   segv_vil_segmentation_manager::instance()->mser_conics();
106 }
107 
108 
regions_callback()109 void segv_vil_menus::regions_callback()
110 {
111   segv_vil_segmentation_manager::instance()->regions();
112 }
113 
rotate_image_callback()114 void segv_vil_menus::rotate_image_callback()
115 {
116   segv_vil_segmentation_manager::instance()->rotate_image();
117 }
118 
reduce_image_callback()119 void segv_vil_menus::reduce_image_callback()
120 {
121   segv_vil_segmentation_manager::instance()->reduce_image();
122 }
123 
reduce_image_bicubic_callback()124 void segv_vil_menus::reduce_image_bicubic_callback()
125 {
126   segv_vil_segmentation_manager::instance()->reduce_image_bicubic();
127 }
128 
expand_image_callback()129 void segv_vil_menus::expand_image_callback()
130 {
131   segv_vil_segmentation_manager::instance()->expand_image();
132 }
133 
expand_image_bicubic_callback()134 void segv_vil_menus::expand_image_bicubic_callback()
135 {
136   segv_vil_segmentation_manager::instance()->expand_image_bicubic();
137 }
138 
flip_image_lr_callback()139 void segv_vil_menus::flip_image_lr_callback()
140 {
141   segv_vil_segmentation_manager::instance()->flip_image_lr();
142 }
143 
display_images_as_color_callback()144 void segv_vil_menus::display_images_as_color_callback()
145 {
146   segv_vil_segmentation_manager::instance()->display_images_as_color();
147 }
148 
add_images_callback()149 void segv_vil_menus::add_images_callback()
150 {
151   segv_vil_segmentation_manager::instance()->add_images();
152 }
153 
subtract_images_callback()154 void segv_vil_menus::subtract_images_callback()
155 {
156   segv_vil_segmentation_manager::instance()->subtract_images();
157 }
158 
negate_image_callback()159 void segv_vil_menus::negate_image_callback()
160 {
161   segv_vil_segmentation_manager::instance()->negate_image();
162 }
163 
extrema_callback()164 void segv_vil_menus::extrema_callback()
165 {
166   segv_vil_segmentation_manager::instance()->extrema();
167 }
168 
rot_extrema_callback()169 void segv_vil_menus::rot_extrema_callback()
170 {
171   segv_vil_segmentation_manager::instance()->rot_extrema();
172 }
173 
beaudet_callback()174 void segv_vil_menus::beaudet_callback()
175 {
176   segv_vil_segmentation_manager::instance()->beaudet();
177 }
178 
parallel_coverage_callback()179 void segv_vil_menus::parallel_coverage_callback()
180 {
181   segv_vil_segmentation_manager::instance()->parallel_coverage();
182 }
183 
entropy_callback()184 void segv_vil_menus::entropy_callback()
185 {
186   segv_vil_segmentation_manager::instance()->entropy();
187 }
188 
minfo_callback()189 void segv_vil_menus::minfo_callback()
190 {
191   segv_vil_segmentation_manager::instance()->minfo();
192 }
193 
max_trace_scale_callback()194 void segv_vil_menus::max_trace_scale_callback()
195 {
196   segv_vil_segmentation_manager::instance()->max_trace_scale();
197 }
198 
color_order_callback()199 void segv_vil_menus::color_order_callback()
200 {
201   segv_vil_segmentation_manager::instance()->color_order();
202 }
203 
inline_viewer_callback()204 void segv_vil_menus::inline_viewer_callback()
205 {
206   segv_vil_segmentation_manager::instance()->inline_viewer();
207 }
208 
intensity_profile_callback()209 void segv_vil_menus::intensity_profile_callback()
210 {
211   segv_vil_segmentation_manager::instance()->intensity_profile();
212 }
213 
intensity_histogram_callback()214 void segv_vil_menus::intensity_histogram_callback()
215 {
216   segv_vil_segmentation_manager::instance()->intensity_histogram();
217 }
218 
219 // JIM PROJECT POINTS
project_points_callback()220 void segv_vil_menus::project_points_callback()
221 {
222   segv_vil_segmentation_manager::instance()->project_points();
223 }
224 
image_as_vrml_points_callback()225 void segv_vil_menus::image_as_vrml_points_callback()
226 {
227   segv_vil_segmentation_manager::instance()->image_as_vrml_points();
228 }
229 
line_image_callback()230 void segv_vil_menus::line_image_callback()
231 {
232   segv_vil_segmentation_manager::instance()->draw_line_image();
233 }
display_roi_callback()234 void segv_vil_menus::display_roi_callback()
235 {
236   segv_vil_segmentation_manager::instance()->display_roi();
237 }
create_roi_callback()238 void segv_vil_menus::create_roi_callback()
239 {
240   segv_vil_segmentation_manager::instance()->create_roi();
241 }
crop_image_callback()242 void segv_vil_menus::crop_image_callback()
243 {
244   segv_vil_segmentation_manager::instance()->crop_image();
245 }
gaussian_callback()246 void segv_vil_menus::gaussian_callback()
247 {
248   segv_vil_segmentation_manager::instance()->gaussian();
249 }
250 
abs_value_callback()251 void segv_vil_menus::abs_value_callback()
252 {
253   segv_vil_segmentation_manager::instance()->abs_value();
254 }
255 
256 //segv_vil_menus definition
get_menu()257 vgui_menu segv_vil_menus::get_menu()
258 {
259   vgui_menu menubar;
260   vgui_menu menufile;
261   vgui_menu menuview;
262   vgui_menu menuedit;
263   vgui_menu menuops;
264   //file menu entries
265   menufile.add( "Quit", quit_callback,(vgui_key)'q', vgui_CTRL);
266   menufile.add( "Load Image", load_image_callback,(vgui_key)'l', vgui_CTRL);
267   menufile.add( "Save Image", save_image_callback);
268   menufile.add( "Save NITF Camera", save_camera_callback);
269 
270   //view menu entries
271   menuview.add("Remove Image", remove_image_callback);
272   menuview.add("Clear Spatial Objects", clear_display_callback);
273   menuview.add("Display ROI", display_roi_callback);
274   menuview.add("Intensity Profile", intensity_profile_callback);
275   menuview.add("Set Range Params", set_range_params_callback);
276   menuview.add("Inline Histogram Viewer", inline_viewer_callback);
277   menuview.add("Histogram Plot ", intensity_histogram_callback);
278   menuview.add("RotateImage ", rotate_image_callback);
279   menuview.add("ReduceImage(Burt)", reduce_image_callback);
280   menuview.add("ReduceImage(bicubic)", reduce_image_bicubic_callback);
281   menuview.add("ExpandImage(Burt) ", expand_image_callback);
282   menuview.add("ExpandImage(bicubic) ", expand_image_bicubic_callback);
283   menuview.add("Flip Image (LR)", flip_image_lr_callback);
284   menuview.add("Images as Color", display_images_as_color_callback);
285   menuview.add("Project Points RPC", project_points_callback);
286   menuview.add("Image as VRML Points", image_as_vrml_points_callback);
287 
288   //edit menu entries
289 
290   menuedit.add("Threshold", threshold_image_callback);
291   menuedit.add("Harris", harris_corners_callback);
292   menuedit.add("Beaudet", beaudet_callback);
293   menuedit.add("Parallel Coverage", parallel_coverage_callback);
294 
295   menuedit.add("VD Edges", vd_edges_callback);
296   menuedit.add("Third Order Edges", third_order_edges_callback);
297   menuedit.add("Line Segments", fit_lines_callback);
298   menuedit.add("Conic Segments", fit_conics_callback);
299   menuedit.add("Overlay Conic Segments", fit_overlay_conics_callback);
300   menuedit.add("MSER Conic Regions", mser_conics_callback);
301   menuedit.add("Edgel Regions", regions_callback);
302   menuedit.add("Non-Maximal Suppression", nonmaximal_suppression_callback);
303   menuedit.add("Load Line Image", line_image_callback);
304 
305   //operation menu entries
306   menuops.add("Create ROI:" , create_roi_callback);
307   menuops.add("Convert To Greyscale:", convert_to_grey_callback);
308   menuops.add("Crop Image:", crop_image_callback);
309   menuops.add("Add Images:", add_images_callback);
310   menuops.add("Subtract Images:", subtract_images_callback);
311   menuops.add("Negate Image:", negate_image_callback);
312   menuops.add("Gaussian Smoothing:", gaussian_callback);
313   menuops.add("Absolute Value:", abs_value_callback);
314   menuops.add("Entropy", entropy_callback);
315   menuops.add("Mutal Information", minfo_callback);
316   menuops.add("Max Trace Scale",  max_trace_scale_callback);
317   menuops.add("Color Order",  color_order_callback);
318   menuops.add("Extrema", extrema_callback);
319   menuops.add("Rotational Extrema", rot_extrema_callback);
320   menuops.add("GradMagAngle", gradient_mag_angle_callback);
321   menuops.add("FFT", fft_callback);
322   //Top level menu layout
323   menubar.add( "File", menufile);
324   menubar.add( "View", menuview);
325   menubar.add( "Edit", menuedit);
326   menubar.add( "Image Ops", menuops);
327   return menubar;
328 }
329