微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在matlab中使用二维互相关函数xcorr2确定两个矩阵之间的位移

如何解决如何在matlab中使用二维互相关函数xcorr2确定两个矩阵之间的位移

我对 matlab 和医学成像非常陌生。对于一个项目,我需要完成一个脚本,该脚本使用两个矩阵“内核”和“搜索区域”,使用多帧心动周期的区块链方法来确定心脏室间隔的位移。 “内核”是原始帧图像的一部分,“搜索区域”是下一帧中内核周围的区域。我必须使用互相关来执行此操作,并且已经尝试了以下操作(将对所有帧重复此过程):

crossCor = xcorr2(searchArea,kernel);
[max_cc,imax] = max(abs(crossCor(:)));
[ypeak,xpeak] = ind2sub(size(crossCor),imax(1));
            
dispLat = ypeak-size(kernel,1)
dispax = xpeak-size(kernel,2)

代码是根据 xcorr2 文档编写的:https://nl.mathworks.com/help/signal/ref/xcorr2.html

代码确实有效,但结果不符合我的预期,我提供的脚本使用横向位移(x 位移)和轴向位移(y 位移)来创建跟踪帧:

frame 1

frame 2

frame 3

结果应该像在第 1 帧中一样显示隔膜的位移,但您可以看到,在第 2 帧和第 3 帧中,位移相差甚远。

我不知道我是否在正确的轨道上为提供的脚本提供正确的置换,但欢迎任何建议或朝着正确方向的推动!

备注: 我正在为一个介绍性医学成像课程这样做,用于绘制运动的蓝色网格是使用散斑跟踪创建的,但是我没有得到有关其工作原理的任何详细信息,这可能是预期的。 Matlab 脚本依赖于轴向(y)和横向(x)位移的正确输入,结果是错误的,所以我编写的代码可能(部分)错误。我在 stackoverflow 上发布这篇文章的主要目的是接收关于我编写的代码的反馈,因为我不知道我做错了什么。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。