【问题标题】:How can I detect rotation angle between 2 images in C#?如何在 C# 中检测 2 个图像之间的旋转角度?
【发布时间】:2015-03-16 05:37:48
【问题描述】:

我有 2 个图像,一个是其中有网格的原始图像,另一个是相同的图像,除了它在这些网格中写有数字,并且被旋转,我应该找到该图像的旋转角度所以我可以把它弄直并识别那些写的数字。

对于数字,我可能会将它们放在 2D 像素阵列中并查看模式,但我无法真正理解如何编写代码来检测旋转角度。这已在Calculating translation value and rotation angle of a rotated 2D image 得到解答,但我不知道如何将该代码翻译成 C#。

另外,我不能使用任何可以为我完成所有这些工作的库,我需要从头开始实现算法。我只能使用字节数组和 Bitmap 类。

以下是图片示例:

【问题讨论】:

    标签: c# image winforms image-processing rotation


    【解决方案1】:

    这个答案只是关于你应该如何去做的一个想法,而不是使用的确切代码。

    您可以做的是通过获取 X 和 Y 位置的像素值来“扫描”页面。从左上角附近开始(实际位置可以从您的示例图像中确定),然后从我的示例中的第一条红线开始向下扫描,直到找到接近黑色的颜色。记录这个位置并对另一侧做同样的事情。有了这两点,就可以计算出angle between themtranslate your image accordingly

    为了减少误报,在找到这些位置后,您可以向下跳过 X 个像素,直到找到下一行,并确保它与第一个结果的角度或预期距离相同。 (绿色箭头)

    如果您可以更改此纸,我建议添加更大的线来表示行的位置(在每一侧,因此可以找到一个角度),类似于此bubble sheet 左侧看到的内容

    【讨论】:

    • 这是一个很好的答案,但是如果我的图像旋转了 90 度呢?有什么算法可以解决这个问题吗?
    • 嗯,你可以考虑检查行之间的空白空间,或者边缘,或者看看它是否被旋转。
    猜你喜欢
    • 2018-03-25
    • 2014-10-02
    • 2014-07-24
    • 2020-08-19
    • 1970-01-01
    • 2016-09-22
    • 2011-01-29
    • 2012-11-03
    • 1970-01-01
    相关资源
    最近更新 更多