【问题标题】:Anti Aliasing - Alpha Image [Unity3D]抗锯齿 - Alpha 图像 [Unity3D]
【发布时间】:2015-03-06 16:02:34
【问题描述】:

我有一个系统可以从图像中去除白色(给予或采取一些阴影)并用 Alpha 通道替换它。 (图片取自用户手机摄像头,并尝试去除选定的颜色)

这在大多数情况下会留下粗糙的边缘,我想知道是否可以在顶部添加某种类型的抗锯齿。

系统通过获取图像并搜索每个像素数据来工作。如果像素为白色(或接近),它将用 alpha 颜色替换它。

所以我想我的问题是,如何使边缘不那么刺眼。谢谢。

【问题讨论】:

  • 如果您已经有了一个 Alpha 通道的开头,您可以将它“模糊”到图像中,您认为需要多少像素就可以。常规模糊会涂抹在白色和图像中,但我认为“侵蚀”算法应该可以工作。

标签: image alpha


【解决方案1】:

抗锯齿不是您想要的。这可以解决因图像分辨率有限而造成的影响。但是,您的问题与分辨率无关,您仍然会遇到无限分辨率的问题。

你需要做的是,当你找到一个白色像素时,增加像素本身及其周围像素的透明度。

您可以只包含白色像素的上方、下方、左侧或右侧的四个像素,或者您可以选择任何其他形状,例如位于白色像素周围给定半径的圆圈内的所有像素。

您还可以选择一个函数来确定透明度在该形状上的分布方式。您可以将所有内容设为半透明,也可以减少该形状边缘的效果(尽管我认为这不是必需的)。

因此,每个像素都会从它们周围的几个像素中获得透明度。必须从所有这些贡献中计算得到的透明度。简单地将它们相乘可能是行不通的,因为您将很难达到 alpha=0。但是,您可以将 (255-alpha) 解释为透明度的度量,添加所有贡献的透明度,然后转换回 alpha。类似于 max (0, 255 - (255-a1) + (255-a2) ...)。

很难就地执行此操作,即仅使用图像的副本。您可能需要一个中间“图像”,其中每个像素都与其周围像素的所有透明度贡献相关联。

【讨论】:

    猜你喜欢
    • 2010-12-01
    • 2016-04-24
    • 1970-01-01
    • 2014-02-18
    • 2021-02-12
    • 2020-03-25
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多