如何确定图片上不同形状的数量?
How to determine number of distinct shapes on a picture?
这里我有两个 objects/stars 的图像:
我有数百张这样的图片,来自 NASA MAST Archive。 (角落不是星星,只是错误,一颗星星在顶部,另一颗在底部)。
我应该使用什么算法来确定一张照片中的物体(在本例中为星星)的数量?对于人类来说,很明显有两个物体,但我想在 Python 中实现这种检测。
作为参考,这是一张只有一颗星的图片:
(图片是用PyKE从FITS文件生成的。)
您可以应用一个阈值并使用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 的值)。
这里我有两个 objects/stars 的图像:
(图片是用PyKE从FITS文件生成的。)
您可以应用一个阈值并使用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 的值)。