gpt4 book ai didi

python - 如何防止 Numpy/SciPy 高斯模糊将图像转换为灰度?

转载 作者:太空狗 更新时间:2023-10-30 02:10:08 25 4
gpt4 key购买 nike

我想对图像执行高斯模糊,但我不想转换为灰度。无论如何执行此操作并保持颜色?

from scipy import misc

import scipy

import numpy as np

a = misc.imread('A.jpg')

# A retains its color
misc.imsave('color.jpg', a)

# A_G_Blur gets converted to grey scale, I want to prevent this
a_g_blure = ndimage.uniform_filter(a, size=11)

# I want it to keep it's color
misc.imsave('now_grey.jpg', a)

最佳答案

a 是一个形状为 (M, N, 3) 的 3 维数组。问题在于 ndimage.uniform_filter(a, size=11) 将长度为 11 的过滤器应用于 a 的每个维度,包括保存颜色 channel 的第三个轴。当您将长度为 11 的过滤器应用于长度为 3 的轴时,结果值都非常接近三个值的平均值,因此您得到的结果非常接近灰度。 (根据图像,您可能会留下一些颜色。)

您真正想要的是分别对每个颜色 channel 应用二维滤镜。您可以通过将元组作为 size 参数来实现,最后一个轴的大小为 1:

a_g_blure = ndimage.uniform_filter(a, size=(11, 11, 1))

注意:uniform_filter 不是 Gaussian blur .为此,您将使用 scipy.ndimage.gaussian_filter .您可能还对 scikit-image 提供的过滤器感兴趣.特别是,参见 skimage.filters.gaussian_filter .

关于python - 如何防止 Numpy/SciPy 高斯模糊将图像转换为灰度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31751210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com