一幅灰度图如果很多像素挤在少数亮度层级里,可以用累计分布重新安排层级。这个操作依据整幅图的亮度数量分布,并不知道哪些像素属于重要角色或背景。
本例采用的规则
本例用零至七表示八级灰度。统计各层数量和累计数量,找第一个非零累计值。非恒定图把累计值减去这个最小累计值,再除以像素总数与它的差,乘七并四舍五入到整数;只对实际出现的灰度建立映射。
独立输入与结果
六乘六、共三十六个像素,灰度层级为零到七。
原图: [6, 4, 5, 4, 3, 5] [2, 3, 2, 2, 1, 6] [2, 5, 4, 5, 6, 2] [6, 5, 6, 5, 4, 6] [1, 5, 2, 4, 4, 3] [2, 5, 6, 1, 3, 1] 灰度计数:[0, 4, 7, 4, 6, 8, 7, 0] 累计计数:[0, 4, 11, 15, 21, 29, 36, 36] 出现灰度的映射:{1: 0, 2: 2, 3: 2, 4: 4, 5: 5, 6: 7} 变换后: [7, 4, 5, 4, 2, 5] [2, 2, 2, 2, 0, 7] [2, 5, 4, 5, 7, 2] [7, 5, 7, 5, 4, 7] [0, 5, 2, 4, 4, 2] [2, 5, 7, 0, 2, 0] 输出计数:[4, 0, 11, 0, 6, 8, 0, 7]表中的编号仅用于区分当前案例里的对象,不能与数值大小或另一份记录中的身份混淆。先核对输入、单位和边界约定,再跟随过程检查输出。空列表、不存在和数值零各有不同含义,分数则保留精确形式便于复算。
检查与练习
映射应随原灰度单调不减,最暗的已出现灰度映到零,最亮映到七。多个输入灰度可能落到同一输出层,因此这不是可逆操作。若整图只有一种灰度,本例保持原样,避免分母为零。
先检查所有灰度计数之和等于像素数,再按映射重算输出直方图。输出直方图不一定完全平均,因为原像素只能整批映射到有限层级。比较前后时保留原图,避免把经过一次变换的数据误当成原始亮度测量。
结论适用范围
这是一种明确规定的全图灰度变换,没有色彩空间转换、局部窗口或曝光反馈。它可能放大噪声,也不保证图像主观上更好看。彩色图逐通道单独变换还可能改变色相,不能直接沿用本例当作通用美化步骤。
这是一份可重复演算的游戏知识记录,结论只对写明的输入与规则成立。练习时可以先改变一个条件,再对照中间记录寻找变化从哪一步开始。若结果不同,应先确认操作顺序和边界定义,而不是只改最后一个数字;原始输入与完整过程应一起保留。
