我试图确定两个图像之间的转换(旋转+平移+缩放),以便移动它们。在
这些图像是用两种不同的方式拍摄的,它们产生了截然不同的纹理。所以我不能使用基于维持光流的技术。我认为最好对图像设置阈值以提取几何图形(见下面的示例)。但是我很难看到我能做什么…也许提取垂直线和中心圆来帮助我提取我的转换。在
我在python工作,我研究了Opencv可以提供的功能,但是目前还没有成功。在
---稍后编辑---
我用Hough变换检测到了圆和线(见下图)。事实上,这将有助于正确注册。但是,我可以使用Python上的什么工具来注册这些元素?我经常使用光流守恒,但在这种情况下,它相当复杂。。。在
找到至少4个非共线对应点:
然后你可以用findHomography来计算单应矩阵,它是两幅图像之间的变换。在
示例代码类似于以下代码:
如果模式总是一个通道内的磁盘,并且有干净的二进制化,这看起来是一个简单的问题。在
您可以可靠而准确地获得磁盘中心和面积,从而获得半径。从侧面的斑点,你可以找到垂直线(Hough,或是与轮廓内部部分的直线拟合,或者只是通过一对对遥远的点的直线)。在
然后从半径的比值,或者直线之间的距离之比得到比例。旋转角度由垂直方向给出。以及中心坐标的平移。在
实际上,你有太多的数据要解决4自由度,有几种可能的解决办法。根据这些图像是如何产生的,您应该使用最可靠的信息。在
我有一个和你很相似的问题,试图在CT和MR图像中居中圆形物体,并通过注册、hough变换等各种方法进行处理,这些都是可行的,但速度慢,复杂,不太健壮。在
最后,我采用了一种更简单、更健壮、更快的方法,退一步用不同的方式思考。在
你有两个圆在一个图像,你想找到位置和比例。在
- 找到高斯分布的中心点。这是很容易与任何峰值发现算法。这就是你的圆心。在
^{pr2}$从这里你得到了圆的中心和直径。在
我用这个方法来做你正在做的事情——圆形轮廓的位置和大小——在CT和MR中,它的速度至少比其他任何东西都快一个数量级,而且更加坚固。在
相关问题 更多 >
编程相关推荐