From fe5b9e67a4aa7bbbca5e2921bfc41c0bade720e5 Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Wed, 9 Oct 2024 09:32:03 -0700 Subject: [PATCH 1/5] Draw fitted ellipse in diagnostic images --- processing/segmenter/planktoscope/segmenter/__init__.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/processing/segmenter/planktoscope/segmenter/__init__.py b/processing/segmenter/planktoscope/segmenter/__init__.py index fb38a8cb..663d84e8 100644 --- a/processing/segmenter/planktoscope/segmenter/__init__.py +++ b/processing/segmenter/planktoscope/segmenter/__init__.py @@ -551,6 +551,15 @@ def __augment_slice(dim_slice, max_dims, size=10): color=(150, 0, 200), thickness=1, ) + tagged_image = cv2.ellipse( + tagged_image, + center=region.centroid, + axes=(region.axis_major_length, region.axis_minor_length), + angle=math.degrees(region.orientation), + startAngle=0, + endAngle=360, + color=(150, 0, 200), + ) contours, hierarchy = cv2.findContours( np.uint8(region.image), mode=cv2.RETR_TREE, # RETR_FLOODFILL or RETR_EXTERNAL From 1efaf8296594643f191d3cf26caaadadbec486d0 Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Wed, 9 Oct 2024 10:20:19 -0700 Subject: [PATCH 2/5] Try to fix data type errors --- processing/segmenter/planktoscope/segmenter/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/processing/segmenter/planktoscope/segmenter/__init__.py b/processing/segmenter/planktoscope/segmenter/__init__.py index 663d84e8..aa86e3f8 100644 --- a/processing/segmenter/planktoscope/segmenter/__init__.py +++ b/processing/segmenter/planktoscope/segmenter/__init__.py @@ -553,8 +553,8 @@ def __augment_slice(dim_slice, max_dims, size=10): ) tagged_image = cv2.ellipse( tagged_image, - center=region.centroid, - axes=(region.axis_major_length, region.axis_minor_length), + center=(int(region.centroid[1]), int(region.centroid[0])), + axes=(int(region.axis_major_length), int(region.axis_minor_length)), angle=math.degrees(region.orientation), startAngle=0, endAngle=360, From 3660b06a4765615dae2f36f7d80a62df1bcb694c Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Wed, 9 Oct 2024 10:30:16 -0700 Subject: [PATCH 3/5] Try to fix incorrect scaling of axis lengths --- processing/segmenter/planktoscope/segmenter/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/processing/segmenter/planktoscope/segmenter/__init__.py b/processing/segmenter/planktoscope/segmenter/__init__.py index aa86e3f8..8edeea41 100644 --- a/processing/segmenter/planktoscope/segmenter/__init__.py +++ b/processing/segmenter/planktoscope/segmenter/__init__.py @@ -554,7 +554,7 @@ def __augment_slice(dim_slice, max_dims, size=10): tagged_image = cv2.ellipse( tagged_image, center=(int(region.centroid[1]), int(region.centroid[0])), - axes=(int(region.axis_major_length), int(region.axis_minor_length)), + axes=(int(region.axis_major_length / 2), int(region.axis_minor_length / 2)), angle=math.degrees(region.orientation), startAngle=0, endAngle=360, From 29a48b1bd8324ccfe6bed0689be7270092b48d3f Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Wed, 9 Oct 2024 10:35:01 -0700 Subject: [PATCH 4/5] Try to fix incorrect ellipse angles --- processing/segmenter/planktoscope/segmenter/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/processing/segmenter/planktoscope/segmenter/__init__.py b/processing/segmenter/planktoscope/segmenter/__init__.py index 8edeea41..4eb1c352 100644 --- a/processing/segmenter/planktoscope/segmenter/__init__.py +++ b/processing/segmenter/planktoscope/segmenter/__init__.py @@ -555,7 +555,7 @@ def __augment_slice(dim_slice, max_dims, size=10): tagged_image, center=(int(region.centroid[1]), int(region.centroid[0])), axes=(int(region.axis_major_length / 2), int(region.axis_minor_length / 2)), - angle=math.degrees(region.orientation), + angle=(90 - math.degrees(region.orientation)), startAngle=0, endAngle=360, color=(150, 0, 200), From fcf12268e227ffaf14e9630d7879da6e9aa10f58 Mon Sep 17 00:00:00 2001 From: Ethan Li Date: Wed, 9 Oct 2024 11:15:34 -0700 Subject: [PATCH 5/5] Try draw semicircles for equivalent circles --- .../planktoscope/segmenter/__init__.py | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/processing/segmenter/planktoscope/segmenter/__init__.py b/processing/segmenter/planktoscope/segmenter/__init__.py index 4eb1c352..88f0f915 100644 --- a/processing/segmenter/planktoscope/segmenter/__init__.py +++ b/processing/segmenter/planktoscope/segmenter/__init__.py @@ -551,6 +551,26 @@ def __augment_slice(dim_slice, max_dims, size=10): color=(150, 0, 200), thickness=1, ) + equivalent_radius = math.sqrt(region.area/ math.pi) + tagged_image = cv2.ellipse( + tagged_image, + center=(int(region.centroid[1]), int(region.centroid[0])), + axes=(int(equivalent_radius), int(equivalent_radius)), + angle=0, + startAngle=0, + endAngle=180, + color=(0, 0, 255), + ) + equivalent_radius_filled = math.sqrt(region.area_filled / math.pi) + tagged_image = cv2.ellipse( + tagged_image, + center=(int(region.centroid[1]), int(region.centroid[0])), + axes=(int(equivalent_radius_filled), int(equivalent_radius_filled)), + angle=0, + startAngle=180, + endAngle=360, + color=(0, 0, 255), + ) tagged_image = cv2.ellipse( tagged_image, center=(int(region.centroid[1]), int(region.centroid[0])),