平滑滤波需要读取相邻像素,但图像边缘外没有真实像素。把坐标限制在边上与从另一边循环取样,会让同一个小滤波器产生不同结果。
使用五乘五灰度网格,横向和纵向都按一、二、一的权重平均,权重总和为四。分别计算夹取边缘和循环坐标两种规则;两步滤波中间保留分数,不做整数舍入。
原图五行灰度依次为[[8, 5, 28, 24, 24], [14, 23, 29, 4, 31], [14, 27, 0, 28, 20], [12, 11, 5, 29, 4], [20, 11, 3, 23, 8]]。结果全部以分数或整数保留。
夹取边缘横向中间值: ['29/4', '23/2', '85/4', '25', '24'] ['65/4', '89/4', '85/4', '17', '97/4'] ['69/4', '17', '55/4', '19', '22'] ['47/4', '39/4', '25/2', '67/4', '41/4'] ['71/4', '45/4', '10', '57/4', '47/4'] 夹取边缘最终结果: ['19/2', '227/16', '85/4', '23', '385/16'] ['57/4', '73/4', '155/8', '39/2', '189/8'] ['125/8', '33/2', '245/16', '287/16', '157/8'] ['117/8', '191/16', '195/16', '267/16', '217/16'] ['65/4', '87/8', '85/8', '119/8', '91/8'] 循环边界横向中间值: ['45/4', '23/2', '85/4', '25', '20'] ['41/2', '89/4', '85/4', '17', '20'] ['75/4', '17', '55/4', '19', '41/2'] ['39/4', '39/4', '25/2', '67/4', '49/4'] ['59/4', '45/4', '10', '57/4', '59/4'] 循环边界最终结果: ['231/16', '113/8', '295/16', '325/16', '299/16'] ['71/4', '73/4', '155/8', '39/2', '161/8'] ['271/16', '33/2', '245/16', '287/16', '293/16'] ['53/4', '191/16', '195/16', '267/16', '239/16'] ['101/8', '175/16', '215/16', '281/16', '247/16']
表中编号仅用于识别本例的元素。读取一个结果时,应先核对它对应的输入、处理顺序和边界约定;布尔值表示条件是否成立,空集合表示没有符合要求的对象,不应把这些字段混成同一种数值。
横纵分开处理应与直接使用九项权重积并除以十六一致。原图若处处相同,输出也应相同;边界之外的坐标必须在每次取样时按当前规则转换。
这里模拟线性灰度数值,未处理实际颜色空间、透明度或显示色调。把结果直接当作任意彩色图片的正确模糊并不合适;本文关注的是取样边界与分离计算的一致性。
练习时可以先独立计算最前面的一步,再检查最后的整体不变量。若结论不同,应保留各步记录,定位第一处差异;只调整最终数字会掩盖规则理解上的问题。改变输入后也要重新演算,而不是照抄这一例的输出。
以便获取最新的优惠活动以及最新资讯!