-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoreol_measuremnt.py
42 lines (36 loc) · 1.51 KB
/
oreol_measuremnt.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from cmath import pi
import matplotlib.pyplot as plt
import time
from tkinter import Image
from PIL import Image
from pyparsing import line_end
from skimage.draw import line
import cv2
import math
from skimage.color import rgb2gray
from skimage import morphology, filters
from skimage.transform import hough_circle, hough_circle_peaks
from skimage.draw import circle_perimeter
import numpy as np
## Let's find oreol
def oreol():
gaussian_filter = main.gaussian_filter
edges = feature.canny(gaussian_filter, sigma=3, low_threshold=0.01, high_threshold=0.02)
hough_radii = np.arange(300, 900, 100)
hough_res = hough_circle(edges, hough_radii)
accums, cx, cy, radii = hough_circle_peaks(hough_res, hough_radii, total_num_peaks=2, min_xdistance=100, min_ydistance=100)
image = color.gray2rgb(gaussian_filter)
radii_list = []
for center_y, center_x, radius in zip(cy, cx, radii):
circy, circx = circle_perimeter(center_y, center_x, radius,
shape=image.shape)
image[circy, circx] = (0, 0, 250) # Circle color (R, G, B)
radii_list.append(radius)
main.ax.imshow(gaussian_filter, cmap=plt.cm.gray)
# Finding average radii from list
median_radius = np.median(radii_list)
print("Median radius: " + str(median_radius))
median_radius_scaled = median_radius/userInput.scale * main.scale_length
# Oreol area in pixels
oreoll_area = pi * median_radius_scaled * median_radius_scaled
print("Oreol area: " + str(oreoll_area))