c# - 如何检测 C# 中 2 个图像之间的旋转角度?

标签 c# image winforms image-processing rotation

我有 2 张图片,一张是原始图片,里面有网格,另一张是同一张图片,只是在这些网格中写了数字,并且旋转了,我应该找到该图片的旋转角度,所以我可以把它弄直并认出写的那些数字。

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

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

图片示例如下:

最佳答案

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

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

http://i.imgur.com/fKqDwCC.png

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

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

关于c# - 如何检测 C# 中 2 个图像之间的旋转角度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29066341/

相关文章:

c# - 如何在 XML-RPC 和 C# 中使用枚举?

c# - 等待创建数据库完成

c# - 通过 ODBC 执行参数化 SQL 存储过程

python - tf.image.decode_jpeg() 返回零矩阵

c# ListView 标题的单独上下文菜单

.net - "Lock"你如何将一个窗体的焦点转移到一个特定的控件上?

c# - 如何在 CSharp 的类级别捕获所有异常?

c# - 静态类的范围是什么?

image - 需要一点数学帮助才能调整图像大小

java - 我们如何使用任何 Java API 将 WMF/EMF(MS 图元文件)转换为 JPG 或 PNG 等标准图像?