用于Photoshop斜角/浮雕图层样式技术的算法凿软

时间:2016-09-26 21:14:51

标签: javascript image-processing

我正在尝试使用Javascript中的技术“chisel soft”重新创建图层样式“斜面和浮雕”。

以下是示例图像和应用过滤器。

original image

chisel soft, depth 100%, size 50px

stackoverflow问题https://dsp.stackexchange.com/questions/530/bitmap-alpha-bevel-algorithm中描述了“平滑”和“凿硬”技术的算法。我相信“凿子软”技术是一种变体,它使用与凿子一样坚硬和光滑的相同构件。

官方photoshop告诉以下有关效果: “Chisel Soft使用改进的距离测量技术,虽然不如Chisel Hard那样准确,但在更大范围的遮罩上更有用。它保留了比平滑技术更好的功能。”

技术:凿硬

  1. 计算高度贴图:计算图像的欧氏距离变换。 alpha == 1.0的像素是对象,alpha <1.0的像素是自由空间。
  2. Comute Surface法线:距离变换被解释为高度图。可以通过从相邻的垂直和水平值计算dx / dy来确定表面法线(例如,使用简单差分算子或sobel滤波器。)这两个数字提供凹凸贴图所需的法线
  3. BumpMapping:将曲面法线与全局光源组合以计算光照强度。强度是从-1到1的值,其中负值是阴影,正值是高光,绝对值是光源的大小。
  4. 技术:平滑

    1. 计算高度贴图:不使用计算欧氏距离变换,对于平滑技术,使用适当大小的两遍框模糊(近似高斯模糊)对原始图像进行平滑处理。
    2. 计算曲面法线:1的结果被解释为高度贴图。像凿子一样计算表面法线。
    3. BumpMapping:看到凿子。
    4. 技术:Chisel Soft

      我只能通过一些实验粗略地说出我发现了什么。

      1. 计算高度地图: 高度图似乎是两个欧几里德距离变换和原始图像的alpha通道的组合。第一距离变换将具有α> = 0.5的像素视为对象,将其他像素视为自由空间。 第二距离变换将具有α<= 0.5的像素视为对象,将其他像素视为自由空间。 不幸的是,我不知道如何组合这些部分以获得正确的效果。 步骤2和3可能与技术“平滑”和“凿硬”相同。
      2. 非常感谢任何想法!

0 个答案:

没有答案