Added new daytime target for our power port
It has only 2 panels taped up, so calling it "partial".
Preserving the nighttime training image, in case we need to revert to it
Also, did a little bit of glog info vs. debug cleanup
Change-Id: I0cceb61b0d924ddd025434290fe0531cd8e53fec
Signed-off-by: Jim Ostrowski <yimmy13@gmail.com>
diff --git a/y2020/vision/tools/python_code/target_definition.py b/y2020/vision/tools/python_code/target_definition.py
index 876d753..2654d35 100644
--- a/y2020/vision/tools/python_code/target_definition.py
+++ b/y2020/vision/tools/python_code/target_definition.py
@@ -10,7 +10,7 @@
import train_and_match as tam
# TODO<Jim>: Allow command-line setting of logging level
-glog.setLevel("WARN")
+glog.setLevel("INFO")
global VISUALIZE_KEYPOINTS
VISUALIZE_KEYPOINTS = False
@@ -62,8 +62,8 @@
# Filter and project points for each polygon in the list
filtered_keypoints, _, _, _, keep_list = dtd.filter_keypoints_by_polygons(
keypoint_list, None, [self.polygon_list[poly_ind]])
- glog.info("Filtering kept %d of %d features" %
- (len(keep_list), len(keypoint_list)))
+ glog.debug("Filtering kept %d of %d features" %
+ (len(keep_list), len(keypoint_list)))
filtered_point_array = np.asarray([
(keypoint.pt[0], keypoint.pt[1])
for keypoint in filtered_keypoints
@@ -131,14 +131,14 @@
# NOTE: Since we don't have an "ideal" (e.g., graphic) version, we're
# just using the same image as the training image.
ideal_power_port_taped = TargetData(
- 'test_images/partial_971_power_port_red.png')
+ 'test_images/partial_971_power_port_red_daytime.png')
# Start at lower left corner, and work around clockwise
# These are taken by manually finding the points in gimp for this image
- power_port_taped_main_panel_polygon_points_2d = [(220, 449), (220, 162),
- (37, 169), (210, 43),
- (371, 35), (378, 147),
- (400, 456)]
+ power_port_taped_main_panel_polygon_points_2d = [(198, 473), (203, 154),
+ (23, 156), (204, 19),
+ (374, 16), (381, 152),
+ (397, 467)]
# These are "virtual" 3D points based on the expected geometry
power_port_taped_main_panel_polygon_points_3d = [
@@ -187,11 +187,11 @@
-field_length / 2., c_power_port_edge_y + c_power_port_width / 2.,
c_power_port_target_height
])
- ideal_power_port_taped.target_point_2d = np.float32([[292, 106]]).reshape(
- -1, 1, 2) # train_power_port_taped-2020-08-20-13-27-50.png
+ ideal_power_port_taped.target_point_2d = np.float32([[290, 87]]).reshape(
+ -1, 1, 2) # partial_971_power_port_red_daytime.png
training_target_power_port_taped = TargetData(
- 'test_images/partial_971_power_port_red.png')
+ 'test_images/partial_971_power_port_red_daytime.png')
training_target_power_port_taped.target_rotation = ideal_power_port_taped.target_rotation
training_target_power_port_taped.target_position = ideal_power_port_taped.target_position
training_target_power_port_taped.target_radius = target_radius_default
@@ -438,9 +438,9 @@
training_target_list.append(training_target_power_port_red)
### Red Loading Bay
- glog.info("Adding red loading bay to the model list")
- ideal_target_list.append(ideal_loading_bay_red)
- training_target_list.append(training_target_loading_bay_red)
+ #glog.info("Adding red loading bay to the model list")
+ #ideal_target_list.append(ideal_loading_bay_red)
+ #training_target_list.append(training_target_loading_bay_red)
### Blue Power Port
#glog.info("Adding blue power port to the model list")
@@ -448,9 +448,9 @@
#training_target_list.append(training_target_power_port_blue)
### Blue Loading Bay
- glog.info("Adding blue loading bay to the model list")
- ideal_target_list.append(ideal_loading_bay_blue)
- training_target_list.append(training_target_loading_bay_blue)
+ #glog.info("Adding blue loading bay to the model list")
+ #ideal_target_list.append(ideal_loading_bay_blue)
+ #training_target_list.append(training_target_loading_bay_blue)
return ideal_target_list, training_target_list
@@ -461,12 +461,12 @@
# Create feature extractor
feature_extractor = tam.load_feature_extractor()
- # Use webcam parameters for now
+ # Use default parameters for now
camera_params = camera_definition.load_camera_definitions()[0]
for ideal_target in ideal_target_list:
- glog.info("\nPreparing target for image %s" %
- ideal_target.image_filename)
+ glog.debug("\nPreparing target for image %s" %
+ ideal_target.image_filename)
ideal_target.extract_features(feature_extractor)
ideal_target.filter_keypoints_by_polygons()
ideal_target.compute_reprojection_maps()
@@ -515,8 +515,8 @@
AUTO_PROJECTION = True
if AUTO_PROJECTION:
- glog.info(
- "\n\nAuto projection of training keypoints to 3D using ideal images"
+ glog.debug(
+ "Doing auto projection of training keypoints to 3D using ideal images"
)
# Match the captured training image against the "ideal" training image
# and use those matches to pin down the 3D locations of the keypoints
@@ -526,8 +526,8 @@
training_target = training_target_list[target_ind]
ideal_target = ideal_target_list[target_ind]
- glog.info("\nPreparing target for image %s" %
- training_target.image_filename)
+ glog.debug("\nPreparing target for image %s" %
+ training_target.image_filename)
# Extract keypoints and descriptors for model
training_target.extract_features(feature_extractor)
@@ -562,14 +562,14 @@
training_target.target_point_2d = training_target_point_2d.reshape(
-1, 1, 2)
- glog.info("Started with %d keypoints" %
- len(training_target.keypoint_list))
+ glog.debug("Started with %d keypoints" %
+ len(training_target.keypoint_list))
training_target.keypoint_list, training_target.descriptor_list, rejected_keypoint_list, rejected_descriptor_list, _ = dtd.filter_keypoints_by_polygons(
training_target.keypoint_list, training_target.descriptor_list,
training_target.polygon_list)
- glog.info("After filtering by polygons, had %d keypoints" %
- len(training_target.keypoint_list))
+ glog.debug("After filtering by polygons, had %d keypoints" %
+ len(training_target.keypoint_list))
if VISUALIZE_KEYPOINTS:
tam.show_keypoints(training_target.image,
training_target.keypoint_list)
diff --git a/y2020/vision/tools/python_code/test_images/partial_971_power_port_red_daytime.png b/y2020/vision/tools/python_code/test_images/partial_971_power_port_red_daytime.png
new file mode 100644
index 0000000..be771b1
--- /dev/null
+++ b/y2020/vision/tools/python_code/test_images/partial_971_power_port_red_daytime.png
Binary files differ
diff --git a/y2020/vision/tools/python_code/test_images/partial_971_power_port_red_nighttime.png b/y2020/vision/tools/python_code/test_images/partial_971_power_port_red_nighttime.png
new file mode 100644
index 0000000..ec402c0
--- /dev/null
+++ b/y2020/vision/tools/python_code/test_images/partial_971_power_port_red_nighttime.png
Binary files differ
diff --git a/y2020/vision/tools/python_code/train_and_match.py b/y2020/vision/tools/python_code/train_and_match.py
index ad1bbde..5f895bb 100644
--- a/y2020/vision/tools/python_code/train_and_match.py
+++ b/y2020/vision/tools/python_code/train_and_match.py
@@ -183,7 +183,7 @@
matches_mask_list.append([])
continue
- glog.info(
+ glog.debug(
"Got good number of matches for model %d: %d (needed only %d)" %
(i, len(good_matches), MIN_MATCH_COUNT))
# Extract and bundle keypoint locations for computations