MAS*_*MAS -3 python image-processing image-segmentation scikit-learn
我有一个图像:python中分离背景和前景的最佳方法是什么?
如果您想要的是估计对象的位置,您可以使用图像的颜色来获得想法.所有下面的步骤都是使用scikit-image完成的.这些操作非常基本,是Lab色彩空间中的简单阈值处理(最基本的图像处理工具).如果您想要在没有用户交互的情况下更复杂的事情,则需要更多的努力.
0)导入包
import numpy as np
from skimage import io, color
Run Code Online (Sandbox Code Playgroud)
1)加载图像
rgb = io.imread('your_image_path')
Run Code Online (Sandbox Code Playgroud)
2)将图像转换为Lab颜色空间.对于大多数应用,Lab色彩空间通常提供更好的色彩分离性.
img = color.rgb2lab(rgb)
Run Code Online (Sandbox Code Playgroud)
3)阈值Lab颜色空间
thresholded = np.logical_and(*[img[..., i] > t for i, t in enumerate([40, 0, 0])])
Run Code Online (Sandbox Code Playgroud)
上面的线基本上使图像阈值并且将第一通道(L)中的所有像素设置为1,并且在第二和第三通道(a,b)中,将打破任何这些条件的像素设置为0.>40
>0
4)显示结果:
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()
Run Code Online (Sandbox Code Playgroud)
如上所述,这是一个非常快速(不太好)的结果,但应该足以让你获得一个边界框.然后,您可以ymin, ymax, xmin, xmax
从thresholded
图像中提取,然后您将拥有对象的边界框.