我正在寻找适用于(最好)或算法的iOS和Android库,它可以帮助我像在Photoshop中处理图像边缘一样。下图显示了算法的预期效果。我不感兴趣羽化图像的边界,只是alpha边缘。我一直在寻找能够在没有运气的情况下完成它几天的算法。任何帮助将不胜感激。
答案 0 :(得分:6)
假设你有alpha通道(比如带有透明背景的照片),似乎常规的痉挛模糊矩阵应该让你满意。
然而,您应该只通过ALPHA频道而不是通过RGB频道。
检查模糊滤镜: https://en.wikipedia.org/wiki/Kernel_%28image_processing%29
您对盒子模糊/高斯模糊感兴趣。但是为了使这种效果更加平滑 - 你应该使用更大尺寸的矩阵。
算法满足您需求的原因是,如果所有周围像素都有alpha 0 - 它仍然是0.如果255 - 它将保持255.只有alpha 0/255之间边界区域的像素会受到影响。
修改强>
请检查这个小提琴(在ff中真的很慢): http://jsfiddle.net/5L40ms65/
您可以在代码末尾查看算法。自实施以来我注意到: - 如果所有neigbour像素都是255或0(alpha通道),则无需模糊 - 在其他情况下还需要模糊RGB
一般来说:
RADIUS = 2 (makes total width of matrix = 5)
For x = 0..width
for y = 0..width
if all pixels in square of radius 2 are alpha = 0
do nothing
elsif all pixels in square have alpha = 255
do nothing
else
pixel[x][y].RGB = average RGB of adjacent pixels where alpha != 0
pixel[x][y].ALPHA = average ALPHA in square
radius = 2
的结果示例当然这是一个相当概念的程序,有很多地方可以进行记忆和调整这个脚本,但是它应该能够清晰地显示出来。