【问题标题】:Color image segmentation with Python使用 Python 进行彩色图像分割
【发布时间】:2015-05-04 03:57:28
【问题描述】:

我有很多图片如下:

我的目标是识别那些“珠子”,尝试用圆圈标记它,并计算检测到的数字。

我尝试通过Python使用图像分割算法,源代码如下:

from matplotlib import pyplot as plt
from skimage import data
from skimage.feature import blob_dog, blob_log, blob_doh
from math import sqrt
from skimage.color import rgb2gray
from scipy import misc # try

image = misc.imread('test.jpg')
image_gray = rgb2gray(image)

blobs_log = blob_log(image_gray, max_sigma=10, num_sigma=5, threshold=.1)
# Compute radii in the 3rd column.
blobs_log[:, 2] = blobs_log[:, 2] * sqrt(2)

blobs_dog = blob_dog(image_gray, max_sigma=2, threshold=.051)
blobs_dog[:, 2] = blobs_dog[:, 2] * sqrt(2)

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

blobs_list = [blobs_log, blobs_dog, blobs_doh]
colors = ['yellow', 'lime', 'red']
titles = ['Laplacian of Gaussian', 'Difference of Gaussian',
          'Determinant of Hessian']
sequence = zip(blobs_list, colors, titles)

for blobs, color, title in sequence:
    fig, ax = plt.subplots(1, 1)
    ax.set_title(title)
    ax.imshow(image, interpolation='nearest')
    for blob in blobs:
        y, x, r = blob
        c = plt.Circle((x, y), r, color=color, linewidth=2, fill=False)
        ax.add_patch(c)

plt.show()

目前取得的最好成绩仍然不尽人意:

我该如何改进它?

【问题讨论】:

    标签: python-2.7 image-segmentation


    【解决方案1】:

    您可以使用 Gimp 或 Photoshop 并测试一些滤镜和颜色更改,以区分圆圈和背景。亮度和对比度调整可能会起作用。然后您可以应用边缘检测器来检测圆圈。

    【讨论】:

      【解决方案2】:

      通过将此图像转换为灰度,您有效地丢弃了分割珠子所需的最强大的提示 - 它们独特的绿色。尝试运行相同的代码但替换

      image_gray = rgb2gray(image)
      

      image_gray = image[:,:,1]
      

      【讨论】:

        猜你喜欢
        • 2012-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-23
        相关资源
        最近更新 更多