小编Ad *_*dum的帖子

活动形状模型:将模型点与目标点匹配

我有一个关于Active Shape Models的问题.我正在使用T. Coots的论文(可以在这里找到.)

我已经完成了所有的初始步骤(Procrustes Analysis计算平均形状,PCA以减小尺寸),但我仍坚持使用.

这是我在现在的情况:我已经计算出平均形状点X和也计算了一组新的点ŸX应该搬到,以更好地满足我的形象.

我使用以下算法,可以在之前链接的论文的第23页找到:


在此输入图像描述


澄清: 是用Procrustes分析计算的平均形状,和 是包含用PCA计算的特征向量的矩阵.

一切顺利到第4步.我可以计算姿势参数并将变换反转到点Y上.

然而,在第5版中,发生了一些奇怪的事情.无论姿势参数是在针3中计算并应用于针4中,针5总是导致具有非常低值的几乎完全相同的矢量y'(例如,其中一个是1.17747114e-05).(所以我是否计算了1/10或1000的比例,y'几乎没有变化).

这导致算法总是收敛到相同的b值,因此在相同的输出形状x中,无论目标点Y的输入集是什么,我希望模型点X匹配.

这肯定不是算法的目标......任何人都可以解释这种奇怪的行为吗?不知何故,将我在步骤5中计算出的矢量y投影到"切平面"中并未考虑步骤4中所做的任何更改.


编辑:我有更多的推理,虽然没有解释或解决方案.如果在步骤5中,我手动将y'设置为仅由零组成,则在步骤6中,b等于与均值形状相乘特征向量矩阵.这导致了我总是得到的相同的b(因为y'总是一个具有非常低值的向量).

但是这些特征向量是通过使用PCA的均值来计算出来的...那么预期的是,不应该发生变化,对吧?


python algorithm opencv image-processing matching

7
推荐指数
1
解决办法
1605
查看次数

在每个List.map迭代中递增uniqueID

我正在尝试使用唯一标识符初始化一组元素。这些元素是初始模型的一部分。

我想到的是一个功能

initElement: Int -> InputElement -> Output
initElement id element = ...
Run Code Online (Sandbox Code Playgroud)

将给定的id添加到给定的元素。现在,我在另一个函数中遍历这些元素,如下所示:

uid = 0    
elementsList = ...    
newList = List.map (initElement uid++) elementsList
Run Code Online (Sandbox Code Playgroud)

我希望List.map在元素上的每次迭代时都增加该整数uid,以便每个元素都分配一个唯一的数字。++显然不起作用。

这是否可能,或者我是否考虑面向对象?我对函数式编程非常陌生。

elm

4
推荐指数
1
解决办法
595
查看次数

Java在不同的地方同时修改列表

我有这段代码,我使用迭代器遍历ArrayList,如:

Iterator iterator = list.iterator();
while (iterator.hasNext()) {
  Element element = iterator.next();
  iterator.remove();
  handle(element)
}
Run Code Online (Sandbox Code Playgroud)

其中'handle(元素元素)`如下:

ListIterator iterator = list.listiterator();
iterator.add(element);
Run Code Online (Sandbox Code Playgroud)

现在这给出了ConcurrentModificationException,因为iterator第一个方法中没有使用新添加的元素更新.

我目前使用CopyOnWriteArrayList解决了这个问题,但这些对性能来说非常昂贵.有没有更好的方法来解决这个问题?

提前致谢!

(注意:这个例子没有任何意义,但是用来说明我面对的是什么)


我会试着解释为什么我这样做:

  • 我在主类中有一个需要执行的'命令'列表

  • 我有一个while循环(示例中的代码1)迭代这些命令并逐个执行它们,同时从列表中执行时删除它们.

  • 执行命令时,此命令可以依次向我的主类中保存的列表添加新命令.(这实际上有点复杂:处理命令要求客户端响应,而客户端的响应将响应命令,并且会将其添加到保存的列表中).

java iterator concurrentmodification copyonwritearraylist

3
推荐指数
1
解决办法
442
查看次数