将背景和前景分开

时间:2015-09-08 05:03:55

标签: python image-processing scikit-learn image-segmentation

我有一个图像: python中分离背景和前景的最佳方法是什么?

enter image description here

1 个答案:

答案 0 :(得分:8)

如果你想要的是估计对象的位置,你可以使用图像的颜色来获得一个想法。所有下面的步骤都是使用scikit-image完成的。这些操作非常基础,是 Lab 色彩空间中的简单阈值处理(最基本的图像处理工具)。如果您想要在没有用户交互的情况下更复杂的事情,则需要更多的努力。

0)导入包

import numpy as np
from skimage import io, color

1)加载图像

rgb = io.imread('your_image_path')

2)将图像转换为Lab colorspace。对于大多数应用,Lab色彩空间通常具有更好的色彩分离性。

img = color.rgb2lab(rgb)

3)实验室颜色空间阈值

thresholded = np.logical_and(*[img[..., i] > t for i, t in enumerate([40, 0, 0])])

上面的行基本上会对图像进行阈值处理,并设置为 1 第一个通道中>40的所有像素( L )和{{1在第2和第3个通道( a,b )中,将破坏任何这些条件的像素设置为 0

4)显示结果:

>0

enter image description here

如上所述,这是一个非常快速(不太好)的结果,但应该足以让你获得一个边界框。然后,您可以从from matplotlib import pyplot as plt fig, ax = plt.subplots(ncols=2) ax[0].imshow(rgb); ax[0].axis('off') ax[1].imshow(thresholded); ax[1].axis('off') plt.show() 图像中提取ymin, ymax, xmin, xmax,然后您将拥有对象的边界框。