小编Fra*_*ard的帖子

反向(移除)抗锯齿滤波器

我有一组消除锯齿的灰度PNG图像.我需要知道如何以编程方式恢复抗锯齿效果并再次获得锐利边缘.

我正在使用GDI +,但我对代码不太感兴趣.如果可以构建这样的矩阵,我需要一个算法,可能是卷积滤波器.

灰度图像(应该)仅包含6种颜色(或不同的灰色阴影).这样我以后可以使用Color-Lookup过滤器对它们进行重新着色.但是,当保存的图像时,Photoshop会自动应用抗锯齿,因此边缘模糊(因为启用了双立方插值模式).我需要恢复这种效果.

这是一个例子:

在此输入图像描述

这是Photoshop的截图

有人建议我应该使用Sharpen过滤器,所以我在photoshop上试了一下.以下是它的外观:

在此输入图像描述

即使外边缘很细,2种不同颜色相遇的边缘也会显示出瑕疵.

编辑:

这就是我最终做到的方式.这是非常即兴的,可能会做得更好,更快,但我找不到更好的解决方案.

我们的想法是迭代每个像素,得到它的直接邻居并将它的颜色与它们的颜色进行比较.如果它由相同颜色的至少2个像素支持,则它还检查相邻像素是否也被支持.如果不是,则用自己的邻居像素替换邻居像素.

码:

    private static void Resample(Bitmap bmp)
    {
        // First we look for the most prominent colors
        // i.e. They make up at least 1% of the image
        Hashtable stats = new Hashtable();

        for (int x = 0; x < bmp.Width; x++)
        {
            for (int y = 0; y < bmp.Height; y++)
            {
                Color px = bmp.GetPixel(x, y);
                if (px.A == 0)
                    continue;

                Color pxS = Color.FromArgb(255, px);
                if (stats.ContainsKey(pxS.ToArgb())) …
Run Code Online (Sandbox Code Playgroud)

graphics rendering image-processing antialiasing imagefilter

5
推荐指数
1
解决办法
4775
查看次数