gpt4 book ai didi

python通过偏移轮廓/缩小多边形来分离圆形粒子

转载 作者:太空狗 更新时间:2023-10-29 21:01:31 30 4
gpt4 key购买 nike

我是 python 的新手并且卡住了..

我想制作一个 python 脚本,允许我像这样在图像上分离相邻的粒子:

BEFORE

像这样分成不同的区域:

AFTER

我被建议使用分水岭方法,据我所知,它会给我这样的结果:

Watershed in 3D

EDIT 居然发现这是距离变换不是分水岭

然后我可以在其中使用阈值将它们分开。按照这个 openCV watershed guide但它只能去除颗粒。无法“转换”代码来执行我想要的操作。

然后我采用了另一种方法。尝试使用 openCV contours这给了我很好的颗粒轮廓。然后我一直在集中寻找一种简单的方法来执行多边形偏移,以便像这样缩小边缘:

Edge offset

使用偏移等高线(多边形)的中心应该会给我粒子的数量。但我只是能够找到一种简单的方法来使用 python 进行边缘偏移/多边形收缩。

最佳答案

这是一个使用 numpy、scipy 和 scikit-image(又名 skimage)的脚本。它利用局部最大值提取和水阴影加标记(即连通分量提取)。

import numpy as np
import scipy.misc
import scipy.ndimage
import skimage.feature
import skimage.morphology

# parameters
THRESHOLD = 128

# read image
im = scipy.misc.imread("JPh65.png")
# convert to gray image
im = im.mean(axis=-1)
# find peaks
peak = skimage.feature.peak_local_max(im, threshold_rel=0.9, min_distance=10)
# make an image with peaks at 1
peak_im = np.zeros_like(im)
for p in peak:
peak_im[p[0], p[1]] = 1
# label peaks
peak_label, _ = scipy.ndimage.label(peak_im)
# propagate peak labels with watershed
labels = skimage.morphology.watershed(255 - im, peak_label)
# limit watershed labels to area where the image is intense enough
result = labels * (im > THRESHOLD)

关于python通过偏移轮廓/缩小多边形来分离圆形粒子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12771846/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com