「新 SuperSAI」ImageResizer 修改版
Super SAI 应该是目前看来用于放大 16x 素材最接近 MF 风格的方法,然而用 ImageResizer 调用该方法得到的结果总是会产生莫名其妙的锯齿好在这是个开源项目,于是我研究了一下 Super SAI 算法相关的源码,发现一个严重的问题:
这个算法中有一个很重要的环节,是判断某个像素点与周围的像素点是否「相似」,而判断是否相似的方法则是比较 YUV 值
然而,这样的判断方式忽略了透明度,而完全透明度的像素,其本身恰好是「黑色」,即 RGBA:(0,0,0,0)
这直接导致,算法认为:黑色像素与透明像素相似
于是,对于那些与透明区域接触的偏黑的像素,算法就出现了错误,进而产生莫名其妙的锯齿
为此,我引入了一个 alpha threshold 参数,作为判定相似的条件:
https://s1.ax1x.com/2023/06/27/pCaIXb6.png
此外,我还注意到一些明度差异不大的区域可能也会有锯齿现象,为了缓解这类现象,我也尝试调整了 luminance threshold
最后附一张修改后的 SuperSAI 效果:
https://s1.ax1x.com/2023/06/27/pCao98H.png
题外话:这个陈年项目的环境是 VS2010,为了让我的 VS2019 能顺利编译,也颇费了我一番功夫,软件开发环境这事真是折腾啊。。。
已上传至 http://dasasdhba.ysepan.com,「MF 做关常用工具」
尽管这个项目是 GPL 协议,但我懒得挂 GitHub 上了,真有人想要源码可以问我要(((( Update: 现将上述内部参数作为可调项放出
https://pic.imgdb.cn/item/6764eefdd0e0a243d4e6cd7a.png
所有参数取值范围均为 0-255,Alpha 参数是我新增的(原因见一楼),若想得到与原版完全一致的行为,置 Alpha 参数为 255 即可。
页:
[1]