fork = mh.imread(path)
bin = fork[:,:,0]
bin = mh.erode(bin)
bin = (bin < 80)
对于第二张图片,但我必须使用这个:
bin = (bin < 127)
为了第一。
有一种方法可以自动获得没有背景的好图像,或者我必须选择一个中值,希望对我的大多数图像都有好处?
fork = mh.imread(path)
bin = fork[:,:,0]
bin = mh.erode(bin)
bin = (bin < 80)
对于第二张图片,但我必须使用这个:
bin = (bin < 127)
为了第一。
有一种方法可以自动获得没有背景的好图像,或者我必须选择一个中值,希望对我的大多数图像都有好处?
我了解您想将白色背景与图像分开。以下是执行此操作的步骤。我会用简单的英文写,因为我不熟悉python。
1:计算图像的闭合(膨胀和腐蚀的应用)。使用结构元素作为大小为 5x5 的正方形进行膨胀和侵蚀。
C = mh.dilate(bin)
C = mh.erode(C);
这将为您提供背景
2:从原始图像中减去背景:
C = C-bin
这将为您提供以白色绘制的星星图像,背景为黑色
3:现在计算二值化的自动阈值。使用简单的 Otsu 技术来估计最佳阈值。在 openCV 中,这类似于:
double thresh = cv::threshold(im,im,0,255,CV_THRESH_BINARY | CV_THRESH_OTSU);
cv::threshold(im,im,thresh,255,CV_THRESH_BINARY_INV);
这将为您的图像提供完美的结果。不要试图猜测阈值。您的图像不是 80 也不是 127。使用大津
有一个阈值称为“Otsu Threshold”。在这里,您可以获得更多信息。
您可以otsu
在 Mahotas 或scikit-imagethreshold_otsu
中使用:
fork = mh.imread(path)
bin = fork[:,:,0]
thresh = mh.otsu(bin)
binary =( bin< thresh)