本质上,你要做的是识别你的图像中的所有对象。这可以通过ndimage.measurements.labelfrom scipy.来完成,本质上它在图像中搜索连续的像素组,并为它们分配一个标签。然后,您可以在这些标记的扇区中循环,计算对象的大小(以像素为单位),并在此基础上进行过滤。在
即使你从Excel中提取数据,你实际上得到的是一个249x250像素的“图像”。Excel中的每个单元格实际上是一个包含值的“像素”。为了使这一点回到原点,您可以直接使用matplotlib中的图像显示函数(例如plt.imshow)import matplotlib.pyplot as plt
import numpy as np
from scipy import ndimage
xn = 250
yn = 249
# fake data to illustrate that images are just matrices of values
X = np.stack([np.arange(xn)] * yn)
Y = np.stack([np.arange(yn)] * xn).transpose()
Z = np.sin(3*np.pi * X/xn) * np.cos(4*np.pi * Y/yn) * np.sin(np.pi * X/xn)
Z[Z <.5>
fig,axes = plt.subplots(1,2)
axes[0].contourf(Z)
axes[0].set_title("Before Removing Features")
# now identify the objects and remove those above a threshold</