【发布时间】:2020-09-18 13:22:46
【问题描述】:
我正在尝试通过使用椭圆形掩码并取掩码内值的平均值来计算特定区域内的面积。像这样:
这是一个眼睛图像,最初是:
我要做的是分别计算巩膜和虹膜的面积。我想要做的方式是通过生成蒙版,一个仅用于虹膜,第二个用于整个眼睛,第三个从整个眼部蒙版中减去虹膜蒙版以获得巩膜蒙版,其中第一个蒙版只是虹膜区域,第二个区域是整个眼睛,第三个区域是减法,这正是我想做的。通过减法分别得到巩膜的面积。
问题是我的掩码函数返回布尔值,这是我试图做的:
from PIL import Image
img = Image.open(r'imgpath')
h_1 = 16
k_1 = 31
a_1 = 7
b_1 = 17
#elipse function
def _in_ellipse(x, y, h, k, a, b):
z = ((x-h)**2)/a**2 + ((y-k)**2)/b**2
if z < 1:
return True
else:
return False
in_ellipse = np.vectorize(_in_ellipse)
img = np.asarray(img)
mask = in_ellipse(*np.indices(img.shape), h_1,k_1,a_1,b_1)
#Visualize the mask size
plt.imshow(mask)
plt.show()
#See if its inside the boundaries
plt.imshow(np.where(mask, img, np.nan))
plt.show()
mask_mean = np.nanmean((np.where(mask, img, np.nan)))
我想做的是在计算平均值之前,我想单独获取巩膜的平均值,尝试是通过减去两个区域,但是椭圆函数没有按预期返回像素值,它返回布尔值:
面具:
array([[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
...,
[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False]])
【问题讨论】:
标签: python numpy image-processing