【问题标题】:Detect Rotation of a scanned image in C#在 C# 中检测扫描图像的旋转
【发布时间】:2011-01-29 13:30:03
【问题描述】:

我们需要一个 c# 解决方案来纠正扫描的图像,因为它是旋转的。为了解决这个问题,我们必须先检测旋转角度,然后再旋转图像。这是我们对问题的第一个想法。但是后来我们认为图像变形会更准确,因为我认为它会使扫描的图像像我们的模板一样。然后我们可以处理它,因为我们知道模板的所有坐标......我搜索了免费的 SDK 或 c# 中的免费解决方案。在这方面帮助我会很棒,因为这是我们工作中的最后一项任务。真的,谢谢大家。

【问题讨论】:

    标签: c# image-processing


    【解决方案1】:

    我们使用PrimeOCR 产品来执行此操作。它不是免费的,但我们找不到与之相媲美的免费程序。

    【讨论】:

    • 您能否提供有关 PrimeOCR 定价的想法?谢谢
    • 不,抱歉。我没有参与定价。
    【解决方案2】:

    所以,最难的部分是检测页面的角度。

    如果您可以完全控制模板,最简单的方法可能是想出一个易于检测的符号(例如一个实心黑色圆圈)并将其中的 3 个粘贴在模板上。然后,检测它们(只寻找具有高饱和度的大块像素,在实心黑色圆圈的情况下)。

    因此,您将拥有 3 组坐标。如果您有一个顶部圆圈、一个左侧圆圈和一个右侧圆圈,并且所有 3 个圆圈彼此之间的距离不同,那么检测哪个圆圈是顶部圆圈应该很容易。

    然后调用一个旋转函数。这部分很简单,之前已经做过(例如http://www.switchonthecode.com/tutorials/csharp-tutorial-image-editing-rotate)。

    编辑: 我建议使用圆形,因为它更容易找到中心,但矩形也可以。

    为了更明确地了解如何实际定位矩形/圆形,请取每 a × 一组像素的平均亮度值。如果该值大于 b,则表示 a × 一组像素是矩形的一部分。 a 和 b 是您自己想出的变量。

    使用flood-fill(或更准确地说,Connected Component Labeling)将生成的像素组合在一起。最终结果应该给你你的矩形。

    【讨论】:

    • 我们现在已经在模板上放置了 3 个矩形,但是如何在扫描图像中检测这些矩形并获取它们的位置来计算旋转角度这是我们现在面临的,但我们可以使用旋转代码嗯。还是提前检测旋转角度比xxxxxxxxxxxx有问题
    • @ahmed:我添加了更多细节。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    • 2021-09-08
    相关资源
    最近更新 更多