Python 用scikit检测斑点

Python 用scikit检测斑点,python,image,scikit-image,Python,Image,Scikit Image,我正在尝试使用scikit检测大的黄色和红色圆圈(而不是底部的小圆圈)。对于红色圆圈,它似乎非常准确(在过滤较大半径后),但它似乎无法检测黄色圆圈 from skimage import data, io from skimage.feature import blob_doh from skimage.color import rgb2gray import numpy as np import pandas as pd import matplotlib.pyplot as plt im

我正在尝试使用scikit检测大的黄色和红色圆圈(而不是底部的小圆圈)。对于红色圆圈,它似乎非常准确(在过滤较大半径后),但它似乎无法检测黄色圆圈

from skimage import data, io
from skimage.feature import blob_doh
from skimage.color import rgb2gray
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


image = io.imread("2-9.jpg")
image_gray = rgb2gray(image)

blobs_doh = blob_doh(image_gray, max_sigma=30, threshold=.01)

df_doh = pd.DataFrame(blobs_doh[:, :], columns=["y", "x", "radius"])

df_doh.to_csv('doh.csv')
我所尝试过的,基于。我只对x、y和半径的数组感兴趣,因此代码不需要覆盖圆的图像

我在scikit示例中尝试了这三种方法,但发现doh(Hessian的行列式)至少最适合识别红色圆圈,因为其他两种方法对它们不起作用

我也尝试过使用来自的scikit Hough圆,但同样的问题存在于它没有检测到黄色圆的地方

from skimage import data, io
from skimage.feature import blob_doh
from skimage.color import rgb2gray
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


image = io.imread("2-9.jpg")
image_gray = rgb2gray(image)

blobs_doh = blob_doh(image_gray, max_sigma=30, threshold=.01)

df_doh = pd.DataFrame(blobs_doh[:, :], columns=["y", "x", "radius"])

df_doh.to_csv('doh.csv')
然后,我将数据作为csv导入,并使用R绘制(以显示准确性)


df可能黄色斑点颜色太浅,无法被
blob_doh
拾取。由于您似乎对这些图像有很强的先验知识(根据我的颜色选择器,精确的黄色和精确的红色),因此您可以仅使用目标点制作图像:

from skimage import io, util
image = util.img_as_float(io.imread("2-9.jpg"))
t = 0.001  # tolerance of deviation from exact color
blobs = ((image - [1, 0, 0])**2 < t)  # distance from red less than t
         | (image - [1, 1, 0])**2 < t))  # distance from yellow
blobs_float = blobs.astype(float)  # convert from boolean to 1.0/0.0
从skimage导入io,util
image=util.img\u as\u float(io.imread(“2-9.jpg”))
t=0.001#准确颜色偏差公差
水滴=((图像-[1,0,0])**2
然后,在
blobs\u float
图像上使用
blob\u doh

希望这有帮助