You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建像素强度0-255且服从正态分布的图像?

生成服从正态分布的0-255像素图像

你的现有做法存在明显问题:直接对标准正态分布(均值0,标准差1)的结果转uint8,会导致几乎所有像素都是0或1(因为标准正态的取值99.7%集中在[-3,3],负数转uint8会被截断为0,正数仅能得到0或1),完全不符合0-255范围的正态分布需求。

正确的实现步骤如下:

  1. 设定符合0-255范围的正态分布参数:均值取0-255的中点127(保证分布对称),标准差可根据需求调整(比如32,让99.7%的数值落在31-223区间,覆盖大部分0-255范围)。
  2. 生成对应分布的浮点数组,截断超出0-255的极端值(避免转uint8时出现溢出异常)。
  3. 转换为uint8类型得到最终图像。

示例代码:

import numpy as np

# 设定图像尺寸
M, N = 512, 512
# 设定正态分布参数:均值127,标准差32
mean = 127
std = 32

# 生成正态分布数值
normal_vals = np.random.normal(mean, std, size=(M, N))
# 截断到0-255范围
clipped_vals = np.clip(normal_vals, 0, 255)
# 转换为uint8类型的图像数组
normal_image = clipped_vals.astype('uint8')

如果需要更严格的“从0-255整数中按正态分布采样”,可以先生成连续正态分布后取整再截断,代码只需修改最后两步:

# 取整后截断
rounded_vals = np.round(np.random.normal(mean, std, size=(M, N)))
clipped_vals = np.clip(rounded_vals, 0, 255)
normal_image = clipped_vals.astype('uint8')

内容的提问来源于stack exchange,提问作者Mina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 12:47:31