Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将图像旋转回原来的位置';原始状态_Java_Image_Image Processing_Trigonometry_Image Rotation - Fatal编程技术网

Java 将图像旋转回原来的位置';原始状态

Java 将图像旋转回原来的位置';原始状态,java,image,image-processing,trigonometry,image-rotation,Java,Image,Image Processing,Trigonometry,Image Rotation,我有一个程序,需要用iphone(或任何像样的相机)拍摄一张7x10网格的照片,边缘有一块厚厚的黑木板。此图像可以向右或向左旋转接收(无需担心倾斜)。我已经有了一个网格原始状态的图像,但我需要得到我正在拍摄的图片,并将其旋转到“完美/原始”状态 想法1:表现不佳/结果不佳 阈值图片,我收到和完美的网格图像,我已经有。比较0旋转的每个像素,获得总分,然后保存它。执行此操作,将增量图像旋转1到359。最低的分数是旋转,我们需要将图片恢复到原始状态 想法2:仍然不确定如何进行此操作 阈值图片,我收到和

我有一个程序,需要用iphone(或任何像样的相机)拍摄一张7x10网格的照片,边缘有一块厚厚的黑木板。此图像可以向右或向左旋转接收(无需担心倾斜)。我已经有了一个网格原始状态的图像,但我需要得到我正在拍摄的图片,并将其旋转到“完美/原始”状态

想法1:表现不佳/结果不佳

阈值图片,我收到和完美的网格图像,我已经有。比较0旋转的每个像素,获得总分,然后保存它。执行此操作,将增量图像旋转1到359。最低的分数是旋转,我们需要将图片恢复到原始状态

想法2:仍然不确定如何进行此操作

阈值图片,我收到和完美的网格图像,我已经有。在图片的中心垂直和水平地画一条线。根据垂直线和水平线通过的黑色像素计数查找旋转。这需要一些我不太理解的三角函数

有没有人有任何其他的想法让这个工作

如果您能为我指明正确的方向,我们将不胜感激


谢谢

不要画一条水平线和一条垂直线,而是画两条水平线(比如,每一条都在图片的三分之一处)。只看这些线的左半部分,计算每条线的路径上有多少黑色像素(
a1
a2
)。您还必须跟踪两条红线之间的距离,因此像素数
d

使用上图中的此符号,所需角度为:

alpha=atan2((a2-a1),d)


通过
alpha
逆时针旋转将使图片的白色部分正确对齐。

触发很容易。。。记住SOHCAHTOA:是的,我明白,但是如果我只知道斜边和明显的90度角,我如何计算出另外两个距离来找到θ(回到原始状态的旋转度)。我刚刚意识到我忘了提到这种方法容易产生噪音。错误会随着
d
的增加而减少,但如果选择的
d
太大,则该方法根本无法工作(红线不会与正确的边相交)。此外,图片的某些部分可能有黑色像素,这会使您的测量结果失真。作为第二步,您可以对
d
的不同值和图像的四个不同侧面重复此过程数次,然后对测量值进行平均,可选步骤是抛出异常值。