【问题标题】:How to determine number of distinct shapes on a picture? [closed]如何确定图片上不同形状的数量? [关闭]
【发布时间】:2019-02-01 03:53:03
【问题描述】:
这里我有两个物体/星星的图像:
我有数百张这样的图像,来自 NASA MAST 档案。 (角不是星星,只是错误,一颗星在顶部,另一颗在底部)。
我应该使用什么算法来确定一张图片中的物体数量(在这种情况下是星星)?对于人类来说,很明显有两个对象,但我想在 Python 中实现这种检测。
仅供参考,这是一张只有一颗星的图片:
(图片是用 PyKE 的 FITS 文件生成的。)
【问题讨论】:
标签:
python-3.x
image-processing
neural-network
astropy
【解决方案1】:
您可以应用阈值并使用 open cv 来分析连接组件(组)的数量。
例如:
import cv2
src = cv2.imread('/path/to/your/image')
ret, thresh = cv2.threshold(src,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
connectivity = 8 #also diagonal neighbors, choose 4 if you want just horizontal and vertical neighbors.
# Analysis of the binary image
output = cv2.connectedComponentsWithStats(thresh, connectivity, cv2.CV_32S)
n_groups=output[2].max()
要消除噪音,您可以决定不考虑连接像素数少于 TH 的组(例如,从您上传的图像中,我会选择 TH=4 之类的东西)。