【问题标题】:Extract object (signature) from white background image (A4 paper) using C# / .NET?使用 C#/.NET 从白色背景图像(A4 纸)中提取对象(签名)?
【发布时间】:2023-03-11 20:29:01
【问题描述】:

如何从使用 C#/.NET 中的移动相机拍摄的白色背景图像(A4 纸)中提取对象(签名)并在可能的情况下对其进行裁剪?

我正在尝试 ImageMagick 库,但输出不是 100% 正确,我试图在没有运气的情况下操纵这些值:

    string GetSignature(string signature) {
        string withoutBackground = "signature_no_bg.png";
        using (var image = new MagickImage(signature))
        {
            image.Transparent(MagickColors.White);
            // -alpha set
            image.Alpha(AlphaOption.Set);
            // -channel RGBA (don't think you need this)
            // -fuzz 50% 
            image.ColorFuzz = new Percentage(40);
            // -fill none
            image.Settings.FillColor = MagickColors.None;
            // -floodfill +0+0 white 
            image.FloodFill(MagickColors.White, 0, 0);

            image.Write(Server.MapPath(withoutBackground));
        }

        return withoutBackground;
    }

使用上面的代码,如下图:

被转换为:

另一种选择是 https://www.remove.bg/tools-api ,效果很好,但有点贵。

有什么建议可以增强我的 ImageMagick 代码或使用其他类型的库吗?

【问题讨论】:

    标签: c# .net imagemagick


    【解决方案1】:

    我没有使用 ImageMagick 的经验,但我会尝试以下步骤作为填充的简单(st)替代方法:

    1. 转换为灰度
    2. 图像阈值
    3. 使用阈值图像作为掩码从原始 RGB 图像中提取签名。

    不过,您必须尝试它在您自己的图像上的表现。您还可以尝试在灰度图像上添加一些模糊处理,然后再对噪声进行阈值处理。

    【讨论】:

    • 我也不是专家。
    • 您尝试过这些步骤吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 2010-11-02
    • 2018-10-19
    • 2020-12-05
    相关资源
    最近更新 更多