【问题标题】:Image processing: Rotational alignment of an object图像处理:对象的旋转对齐
【发布时间】:2012-11-30 08:32:33
【问题描述】:

我有一堆图像,中间有一个条。随着堆栈的进行,条形图围绕一端旋转,整个堆栈包含图像,条形图以许多不同的角度旋转,最高或低于水平 45 度。

如下图:

我正在寻找一种在进行其他处理之前旋转条形图和/或整个图像并水平对齐所有内容的方法。理想情况下,这将在 Matlab/imageJ/ImageMagick 中完成。我目前正在尝试使用第一个 Canny 边缘检测,然后是 Hough 变换,然后是图像旋转来制定一种方法,但我希望这是一个已经解决的更普遍问题的具体案例。

【问题讨论】:

  • 由于您的图像是一条直线,您可以检测点并使用最佳拟合来获得直线的公式;从那里可以通过简单的三角操作转换为角度。

标签: matlab image-processing octave imagej


【解决方案1】:

如果您有图像处理工具箱,则可以使用带有“方向”属性的 regionprops 来查找角度。

http://www.mathworks.com/help/images/ref/regionprops.html#bqkf8ji

【讨论】:

    【解决方案2】:

    您要解决的问题称为图像配准或图像对齐。

    -您需要做的第一件事是为图像设置阈值,因此您最终会得到一张黑白图像。这将简化流程。

    -然后您需要计算图像的质心,然后将它们平移以匹配彼此的质心。

    • 然后您需要旋转图像以相互匹配。这可以使用主轴测量来完成。主轴将为您提供解释总体中大部分方差的两个轴。这基本上会给你一个矢量,显示你的酒吧指向的方向。然后,您需要做的就是沿相同方向旋转条形。

    -在主轴变换后,您可以尝试将图片在每个方向上多旋转一点,以尝试优化旋转。

    在您的平移和旋转过程中,您需要一个衡量标准来向您展示您的转换有多适合。这个措施可以是很多东西。如果图片是黑白的,简单的图片减法就足够了。否则,您可以使用互信息等度量。

    ...您还可以查看 procrustes 分析,请参阅此链接以获取 matlab 函数http://www.google.dk/search?q=gpa+image+analysis&oq=gpa+image+analysis&sugexp=chrome,mod=9&sourceid=chrome&ie=UTF-8#hl=da&tbo=d&sclient=psy-ab&q=matlab+procrustes+analysis&oq=matlab+proanalysis&gs_l=serp.3.1.0i7i30l4.5399.5883.2.9481.3.3.0.0.0.0.105.253.2j1.3.0...0.0...1c.1.5UpjL3-8aC0&pbx=1&bav=on.2,or.r_gc.r_pw.r_qf.&bvm=bv.1355534169,d.Yms&fp=afcd637d8ae07bde&bpcl=40096503&biw=1600&bih=767

    【讨论】:

      【解决方案3】:

      您可能想研究 SIFT 变换。

      您应该将代表最坏情况猜测的矩形作为您的图像,并为此确定旋转矩阵。

      http://www.vlfeat.org/overview/sift.html

      【讨论】:

        【解决方案4】:

        使用 ImageJ 的StackReg 插件。我不是 100% 确定,但我认为它已经随 FIJI (FIJI Is Just ImageJ) 一起安装了。

        编辑:我想我误读了你的问题。那不是您要修复的一堆图像,对吗?在这种情况下,一种简单的方法(可能不是最有效但绝对有效)是以下算法:

        1. 对图像设置阈值(看起来很简单,您的背景总是白色的)
        2. 获取一条长水平线作为结构元素并用它放大图像
        3. 旋转结构元素并保持扩张图像,测量扩张的大小。
        4. 使其最大化的角度是您修复图像所需的旋转角度。

        【讨论】:

          【解决方案5】:

          正如其他答案所建议的那样,有几种方法可以解决这个问题。一种可能类似于您已经尝试过的方法是使用霍夫变换。霍夫变换擅长检测线的方向。在检测角度后将其与形态处理和图像旋转相结合,您可以创建一个校正角度变化的系统。基本步骤是

          1. 使用形态学操作使条形图成为单行斑点。
          2. 对此图像使用霍夫变换。
          3. 在变换输出中找到最大值并使用它来查找方向角。
          4. 使用角度固定原始图像。

          Computer Vision System Toolbox 附带的用于此方法的完整示例。看 http://www.mathworks.com/help/vision/examples/rotation-correction-1.html

          【讨论】:

            【解决方案6】:

            你可以尝试给定或户主变换,我更喜欢给定。 它需要一个角度,使用 cos(angle) 和 sin(angle) 来制作给定矩阵。

            【讨论】:

              猜你喜欢
              • 2011-06-12
              • 2021-08-06
              • 1970-01-01
              • 1970-01-01
              • 2012-11-26
              • 2013-09-03
              • 2011-03-21
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多