PIL消除颜色区域之间的颜色混合

时间:2017-12-06 15:58:55

标签: python numpy image-processing pillow

我的图片颜色很少。 (最多5种颜色,并且都非常不同。)

在颜色之间的区域的边界处,在这些颜色之间存在(通常是单像素宽)混合线。我该如何删除?

无论如何,我之后使用它们作为一个numpy数组进行操作,所以如果这可以通过numpy数组来实现,那也是有用的。

例如,此图片:

10*10 white, 1*10 (.25, .25, .25) and 10*10 black

这是从这个数组:

image = np.append(
    np.append(np.ones((10, 10, 3)), np.ones((1, 10, 3)) / 5., axis=0),
    np.zeros((10, 10, 3)), axis=0
)

# Or a 10 * 10 white (0, 0, 0) region with a 1 * 10 line of (0.2, 0.2, 0.2) pixels
# underneath and a 10 * 10 black (1, 1, 1) region underneath that.

# Expected result:
expected = np.append(np.ones((10, 10, 3)), np.zeros((11, 10, 3)), axis=0)

我想要一个将1 * 10灰色像素线转换为黑色的功能,因为它更接近黑色。

1 个答案:

答案 0 :(得分:2)

您可以使用Image.quantize强制所有颜色与调色板匹配。这会将您的图片模式更改为P,并在您完成后将其转换回RGB