最近写打马赛克的算法,查了不少博客,用的都是左上角元素填充。 经过各类搜索和计算,最终总结发现了一个规律: 马赛克边长为色块区域边长的整数倍时,临近采样后的结果等同于用左上角元素填充。算法
所谓插值,是用于图像放大的一种图像处理方式,临近插值是最简单最经常使用的放大方式之一,不少图像放大算法都是临近差值。若想将 的图片放大为 , 则其计算公式为: spa
其中为 目标图片的轴像素, 为原图片的轴像素。3d
在作打马赛克的算法时,用左上角像素填充色块算是临近采样的一种。 不管是采样仍是插值,其根本思想是临近的概念。总的来讲,意思就是:目标图片的目标像素要取原图像的哪一个像素呢? 目标像素后 取整。code
设 ,若, 即目标图片边长为色块区域边长的整数倍时,临近采样后的结果等同于用左上角元素填充。blog
原图:图片
a | b |
c | d |
目标图片(假设):ci
a | _ | _ | b | _ | _ |
_ | _ | _ | _ | _ | _ |
_ | _ | _ | _ | _ | _ |
c | _ | _ | d | _ | _ |
_ | _ | _ | _ | _ | _ |
_ | _ | _ | _ | _ | _ |
在插值的时候, 博客
y轴同理,所以最终的临近插值结果为:图像处理
a | a | a | b | b | b |
a | a | a | b | b | b |
a | a | a | b | b | b |
c | c | c | d | d | d |
c | c | c | d | d | d |
c | c | c | d | d | d |