【问题标题】:Image transformation in Matlab: translation and scalingMatlab中的图像转换:平移和缩放
【发布时间】:2014-01-26 15:29:59
【问题描述】:

我正在尝试将表示网格(行数和列数已知)的图像转换为或多或少地匹配表示网格状图案的图片。

我正在使用 imregtform 函数来获得仿射变换:

[ a b 0 ;
  c d 0 ;
  e f 1 ] 

并将获得的 tform 应用于我的网格。它不能很好地工作。

请考虑以下简化:

base=im2uint8(zeros(16)); base([3:5 10:12],[3:5 10:12])=255;
target=im2uint8(zeros(16)); target([4:8 11:15],[4:8 11:15])=255;
[optimizer, metric] = imregconfig('monomodal');
    optimizer.MaximumStepLength = 0.591;
    optimizer.MaximumIterations = 100;
tform = imregtform(base,target,'affine',optimizer,metric,'PyramidLevels',2);
transformedBase = imwarp(base,tform,'OutputView',imref2d(size(target)));

请参考以下link

表示在简化图像上使用上述函数的结果。我计算 tform 并将其应用于“基础”图像,以查看它是否与“目标”匹配。此策略适用于简单翻译的“目标”图像,但如图所示,不适用于已翻译和缩放的图像。在对优化器参数进行了大量摆弄之后,这是我能得到的最接近的参数。

减小 optimizer.MaximumStepLength 进一步导致 tform 变为单位矩阵 [100;010;001]。

为什么这种简单的转变如此难以实现?我是不是走错路了?

我知道图像没有旋转,是否有助于获得没有旋转的变换矩阵?我一直在追求这个想法,但还没有弄清楚如何去做;有没有办法自己计算缩放矩阵?然后我可以基于 imregtform'translation' 设置创建一个 tform

【问题讨论】:

    标签: image matlab translation transformation scaling


    【解决方案1】:

    您示例中的基本图像和目标图像与简单的仿射变换无关。块之间的间距与块本身的比例不同。

    【讨论】:

      猜你喜欢
      • 2010-10-19
      • 2016-07-22
      • 1970-01-01
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      • 2011-09-10
      • 2023-03-11
      相关资源
      最近更新 更多