Image 抗锯齿-Alpha图像[Unity3D]

Image 抗锯齿-Alpha图像[Unity3D],image,alpha,Image,Alpha,我有一个系统,可以从图像中去除白色(给予或接受一些阴影),并用alpha通道替换它。(图像是从用户的手机摄像头拍摄的,并尝试删除选定的颜色) 这会在大多数情况下留下粗糙的边缘,我想知道是否有可能在顶部添加某种类型的抗锯齿 该系统的工作原理是获取图像,并搜索每个像素数据。如果像素为白色(或接近白色),它将替换为alpha颜色 所以我想我的问题是,如何使边缘不那么粗糙。谢谢。抗锯齿不是您想要的。这将考虑图像分辨率有限造成的影响。然而,你的问题与分辨率无关,你仍然会有无限的分辨率 你需要做的是当你发现

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

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

该系统的工作原理是获取图像,并搜索每个像素数据。如果像素为白色(或接近白色),它将替换为alpha颜色


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

抗锯齿不是您想要的。这将考虑图像分辨率有限造成的影响。然而,你的问题与分辨率无关,你仍然会有无限的分辨率

你需要做的是当你发现一个白色像素时,增加像素本身和周围像素的透明度

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

您还可以选择一个函数,该函数确定透明度在该形状上的分布方式。你可以让所有东西都是半透明的,或者你可以减少这个形状边缘的效果(尽管我认为这不是必要的)

因此,每个像素将从其周围的几个像素接收透明度。由此产生的透明度必须根据所有这些贡献来计算。简单地将它们相乘可能不行,因为你将很难达到alpha=0。但是,您可以将(255 alpha)解释为透明度的度量,添加所有贡献的透明度,然后转换回alpha。类似于max(0255-(255-a1)+(255-a2)…)


这将很难在适当的位置执行,即仅使用图像的一个副本。您可能需要一个中间“图像”,其中每个像素都与周围像素的所有透明度贡献相关联。

如果您已经有了alpha通道的开始,您可以将其“模糊”到图像中,使其达到您认为必要的像素深度。常规的模糊会涂抹到白色和图像中,但我认为“侵蚀”算法应该可以工作。