自迁移出 MediaWiki 以来,本页内容尚未经过审查。如果您愿意帮忙,请查看帮助指南!
这是一份非常不完整的草案
测试机
用于这些测试的计算机如下:
- Mac Pro *米-2010
- 处理器 2 x 2.66 GHz 6 核 Intel Xeon
- 内存 24 GB 1333 MHz DDR3 ECC
- 软件 Mac OS X Lion 10.7.5 (11G63)
执行时间
此处报告的测试在 Apple Mac Pro、2 x 2.66 GHz 6 核 Intel Xeon、24 Go 1333 MHz DDR3、运行 Mac OS X v10.7.5 和 Java 1.6 上运行。实例化的检测器被驯服为仅使用 1 个线程。除非没有说明,否则不进行中值模块和子节点定位。
DoG 和 LoG 乐园
二维图像的处理时间与大小的关系
对于uint16图像,改变其大小,包含200个半径为3个的高点(一切均以像素为单位)。
| N(像素) | 图像尺寸 | DoG检测器时间(毫秒) | LoG检测器时间(毫秒) | |
|---|---|---|---|---|
| 256 | 256 256 16x16 | 256 16x16 16x16 3.0 | 4.8 | |
| 1024 | 1024 1024 32x32 | 32x32 2.95 | 2.95 4.3 | 2.95 4.3 |
| 4096 | 64x64 | 64x64 64x64 3.95 | 3.95 4.35 | 4.35 |
| 16384 | 128x128 | 128x128 128x128 7.9 | 7.9 5.85 | 5.85 |
| 65536 | 256x256 | 256x256 256x256 23.35 | 256x256 23.35 17.7 | 17.7 |
| 262144 | 262144 262144 512x512 | 512x512 88.2 | 88.2 61.15 | 61.15 |
| 1048576 | 1024x1024 | 1024x1024 1024x1024 357.3 | 357.3 251.65 | 357.3 251.65 251.65 |
| 2359296 | 2359296 2359296 1536x1536 | 1536x1536 789.85 | 789.85 605.4 | 789.85 605.4 605.4 |
| 4194304 | 4194304 4194304 2048x2048 | 2048x2048 1463.4 | 2048x2048 1463.4 1463.4 1201.1 | 1201.1 |
对于DoG检测器来说,毫不奇怪,我们发现执行时间与像素数量成正比,大约为t (ms) = 3.4e-4 x Npixels。这是预期的因为,所有计算都是在直接空间中完成的。
LoG检测器在傅里叶空间中运行,并且由于我们使用傅里叶变换实现,图像会用0填充来达到等于2的大小。此处未点这一点,因为除了一个测试之外,所有测试都是使用这样的大小进行的。尽管如此,执行时间仍然是一个线性情况,并表现出一些的第二形状。最佳线性拓扑产生t (ms) = 2.8e-4 x Npixels的低值,表明LoG检测器比DoG检测器稍快。
![]()
3D 图像的处理时间与其大小的关系
| N(像素)|图像尺寸| DoG检测器时间(毫秒)| LoG检测器时间(毫秒)| |:———–|————-|————————————————|————————| | 4096 | 16x16x16 | 16x16x16 16x16x16 8.7 | 8.7 24.7 | 24.7 | 32768 | 32x32x32 | 32x32x32 32x32x32 23.5 | 32x32x32 23.5 38.5 | 38.5 | 262144 | 262144 262144 64x64x64 | 64x64x64 129.3 | 64x64x64 129.3 159.2 | 129.3 159.2 159.2 | 2097152 | 2097152 2097152 128x128x128 | 128x128x128 875.1 | 875.1 936.3 | 936.3 | 16777216 | 256x256x256 | 256x256x256 256x256x256 7054.0 | 256x256x256 7462.4 | 7462.4 7462.4 | 134217728 | 512x512x512 | 61477.2 | 58860.6 |
然而,线性结构轮廓陡峭一些:我们同样,t (ms) = 4.6e-4 x Npixels*,将其顶点于 3D 内核头部。
有趣的是,LoG 检测器在大多数情况下似乎变得最慢,我无法很好地解释这一点。
![]()
二维图像的处理时间与光斑半径的关系
我们使用了 1024x1024 uint16 图像,带有 200 个高点,我们改变了它们的大小。

我们发现,对于 DoG 检测器,处理时间随着指定的半径线性增加,大约如下 t (ms) = 20.5 x radius + 260。由于高斯差是在直接空间中计算的,因此预计会有显着的增加,因为有更多的像素需要迭代。然而,如果没有优化,我们应该发现时间随着半径的平方而增加,并且发现与图像尺寸相同的依赖性。由于高斯滤波[^1]的巧妙实现,这种情况得以避免。 LoG检测器显示出近乎恒定的处理时间,这使得它适合半径大于2像素的光点。这是由于我们计算本质的方式造成的,如下所述。
3D图像的处理时间与光斑半径的关系
这次我们使用了 256x256x256 3D 图像,但其他参数相同。
处理时间增加,但与 DoG 情况下的线性略有偏差。我们检索 3D 图像的 3D 内核开销。
LoG 性能明显强调了由于傅立叶变换而使用的 0 填充:事实上,处理以渐进方式增加。我们使用傅立叶变换通过 LoG 核来计算填充。但对于我们使用的实现,内核映像(以及源映像)会用 0 填充,直到它们的大小达到 2 的幂(128、256、512 等)。一旦所需的内核大小时间小于 2因为最终处理时间取决于像素数量,所以我们看到处理时间恒定,直到内核大小施加更大的2次方。
####根据性能选择DoG和LoG
渐进的演变使得根据LoG和DoG之间的性能进行选择变得更加困难。作为粗略的经验法则,我们会记住
- 对于半径大于2像素的情况,LoG检测器在2D中相当于DoG检测器。
- 对于半径大于4像素的情况,LoG检测器在3D中相当于DoG检测器。
参考文献
[^1]:https://github.com/imagej/imglib/blob/-/algorithms/core/src/main/java/net/imglib2/algorithm/gauss3/Gauss3.java