skimage.registration
#
从粗到细的光流估计器。 |
|
从粗到细的光流估计器。 |
|
通过互相关实现高效的亚像素图像平移配准。 |
- skimage.registration.optical_flow_ilk(reference_image, moving_image, *, radius=7, num_warp=10, gaussian=False, prefilter=False, dtype=<class 'numpy.float32'>)[源代码][源代码]#
从粗到细的光流估计器。
在图像金字塔的每一层都应用了迭代 Lucas-Kanade (iLK) 求解器。iLK [1] 是 TVL1 算法的快速且鲁棒的替代方案,尽管在渲染平面和物体边界时精度较低(参见 [2])。
- 参数:
- 参考图像ndarray, 形状 (M, N[, P[, …]])
序列中的第一张灰度图像。
- moving_imagendarray, 形状 (M, N[, P[, …]])
序列中的第二张灰度图像。
- 半径int, 可选
每个像素周围考虑的窗口半径。
- num_warpint, 可选
moving_image 被扭曲的次数。
- 高斯bool, 可选
如果为真,则使用高斯核进行局部积分。否则,使用均匀核。
- 预过滤器bool, 可选
是否在每次图像扭曲前预过滤估计的光流。当设置为True时,将对每个轴应用窗口大小为3的中值滤波器。这有助于去除潜在的异常值。
- dtypedtype, 可选
输出数据类型:必须是浮点型。单精度提供了良好的结果,并且与双精度相比节省了内存使用和计算时间。
- 返回:
- 流程ndarray, 形状 (reference_image.ndim, M, N[, P[, …]])
每个轴的估计光流分量。
注释
实现的算法在 [1] 的 表2 中描述。
不支持彩色图像。
参考文献
[1] (1,2)Le Besnerais, G., & Champagnat, F. (2005, 九月). 通过迭代局部窗口配准实现密集光流。在2005年IEEE国际图像处理会议(第1卷,第I-137页)。IEEE。DOI:10.1109/ICIP.2005.1529706
[2]Plyer, A., Le Besnerais, G., & Champagnat, F. (2016). 大规模并行Lucas Kanade光流法用于实时视频处理应用。实时图像处理杂志, 11(4), 713-730. DOI:10.1007/s11554-014-0423-0
示例
>>> from skimage.color import rgb2gray >>> from skimage.data import stereo_motorcycle >>> from skimage.registration import optical_flow_ilk >>> reference_image, moving_image, disp = stereo_motorcycle() >>> # --- Convert the images to gray level: color is not supported. >>> reference_image = rgb2gray(reference_image) >>> moving_image = rgb2gray(moving_image) >>> flow = optical_flow_ilk(moving_image, reference_image)
- skimage.registration.optical_flow_tvl1(reference_image, moving_image, *, attachment=15, tightness=0.3, num_warp=5, num_iter=10, tol=0.0001, prefilter=False, dtype=<class 'numpy.float32'>)[源代码][源代码]#
从粗到细的光流估计器。
TV-L1 求解器应用于图像金字塔的每一层。TV-L1 是由 Zack 等人引入的一种流行的光流估计算法 [1],在 [2] 中得到改进,并在 [3] 中详细说明。
- 参数:
- 参考图像ndarray, 形状 (M, N[, P[, …]])
序列中的第一张灰度图像。
- moving_imagendarray, 形状 (M, N[, P[, …]])
序列中的第二张灰度图像。
- 附件float, 可选
附件参数 (\(\lambda\) 在 [1] 中)。这个参数越小,返回的结果越平滑。
- 紧密性float, 可选
紧度参数(在 [1] 中的 \(\theta\))。为了保持附着和正则化部分的一致性,它应该有一个较小的值。
- num_warpint, 可选
moving_image 被扭曲的次数。
- num_iterint, 可选
固定点迭代的次数。
- tolfloat, 可选
基于 (u, v) 两个连续值之间的 L² 距离,将容差用作停止准则。
- 预过滤器bool, 可选
是否在每次图像扭曲前预过滤估计的光流。当设置为True时,将对每个轴应用窗口大小为3的中值滤波器。这有助于去除潜在的异常值。
- dtypedtype, 可选
输出数据类型:必须是浮点型。单精度提供了良好的结果,并且与双精度相比节省了内存使用和计算时间。
- 返回:
- 流程ndarray, 形状 (image0.ndim, M, N[, P[, …]])
每个轴的估计光流分量。
注释
不支持彩色图像。
参考文献
[1] (1,2,3)Zach, C., Pock, T., & Bischof, H. (2007年9月). 一种基于对偶的实时TV-L 1光流方法。在联合模式识别研讨会(第214-223页)。Springer, 柏林, 海德堡. DOI:10.1007/978-3-540-74936-3_22
[2]Wedel, A., Pock, T., Zach, C., Bischof, H., & Cremers, D. (2009). 一种改进的 TV-L 1 光流算法。在统计和几何方法进行视觉运动分析(第23-45页)。Springer, 柏林, 海德堡。DOI:10.1007/978-3-642-03061-1_2
[3]Pérez, J. S., Meinhardt-Llopis, E., & Facciolo, G. (2013). TV-L1 光流估计。在线图像处理, 2013, 137-150. DOI:10.5201/ipol.2013.26
示例
>>> from skimage.color import rgb2gray >>> from skimage.data import stereo_motorcycle >>> from skimage.registration import optical_flow_tvl1 >>> image0, image1, disp = stereo_motorcycle() >>> # --- Convert the images to gray level: color is not supported. >>> image0 = rgb2gray(image0) >>> image1 = rgb2gray(image1) >>> flow = optical_flow_tvl1(image1, image0)
- skimage.registration.phase_cross_correlation(reference_image, moving_image, *, upsample_factor=1, space='real', disambiguate=False, reference_mask=None, moving_mask=None, overlap_ratio=0.3, normalization='phase')[源代码][源代码]#
通过互相关实现高效的亚像素图像平移配准。
这段代码在计算时间的一小部分内提供了与FFT上采样互相关相同的精度,并且减少了内存需求。它通过FFT获得互相关峰值的初始估计,然后通过矩阵乘法DFT [1] 仅在上采样该估计的小邻域内来细化移位估计。
- 参数:
- 参考图像数组
参考图片。
- moving_image数组
要注册的图像。必须与
reference_image
具有相同的维度。- 上采样因子int, 可选
上采样因子。图像将被注册到
1 / upsample_factor
像素以内。例如,upsample_factor == 20
表示图像将被注册在 1/20 像素以内。默认值为 1(无上采样)。如果reference_mask
或moving_mask
中任何一项不为 None,则不使用此参数。- 空间字符串,可选值为“real”或“fourier”,可选
定义算法如何解释输入数据。“real” 表示数据将进行 FFT 以计算相关性,而 “fourier” 数据将绕过输入数据的 FFT。不区分大小写。如果
reference_mask
或moving_mask
中的任何一个不为 None,则不使用。- 消除歧义布尔
此函数返回的位移仅在图像形状的 模 内是准确的,这是由于傅里叶变换的周期性特性。如果此参数设置为
True
,则计算每个可能位移的 实 空间互相关,并返回在重叠区域内具有最高互相关的位移。- reference_maskndarray
reference_image
的布尔掩码。掩码应在有效像素上评估为True
(或 1)。reference_mask
应与reference_image
具有相同的形状。- moving_maskndarray 或 None,可选
moving_image
的布尔掩码。掩码应在有效像素上评估为True
(或 1)。moving_mask
应与moving_image
具有相同的形状。如果为None
,则将使用reference_mask
。- overlap_ratiofloat, 可选
图像之间允许的最小重叠比率。低于此阈值的重叠比率对应的平移相关性将被忽略。较低的 overlap_ratio 会导致较小的最大平移,而较高的 overlap_ratio 则会导致对由于掩码图像之间重叠较小而产生的虚假匹配具有更强的鲁棒性。仅在
reference_mask
或moving_mask
之一不为 None 时使用。- 规范化
phase
, None 应用于互相关的归一化类型。当提供了掩码(reference_mask 和 moving_mask)时,此参数未使用。
- 返回:
- shiftndarray
位移向量(以像素为单位),用于将
moving_image
与reference_image
对齐。轴的顺序与输入数组的轴顺序一致。- 错误浮动
reference_image
和moving_image
之间的平移不变归一化 RMS 误差。对于掩码互相关,此误差不可用,返回 NaN。- phasediff浮动
两幅图像之间的全局相位差(如果图像为非负,则应为零)。对于掩码互相关,此相位差不适用,返回NaN。
注释
使用互相关来估计图像平移有着悠久的历史,至少可以追溯到 [2]。”相位相关”方法(由
normalization="phase"
选择)首次在 [3] 中提出。文献 [1] 和 [2] 使用了未归一化的互相关(normalization=None
)。哪种归一化形式更好取决于应用。例如,相位相关方法在不同光照条件下注册图像时效果良好,但对噪声的鲁棒性不强。在高噪声情况下,未归一化的方法可能更可取。参考文献
[1] (1,2)Manuel Guizar-Sicairos, Samuel T. Thurman, 和 James R. Fienup, “高效的亚像素图像配准算法,” 光学快报 33, 156-158 (2008). DOI:10.1364/OL.33.000156
[2] (1,2)P. Anuta, Spatial registration of multispectral and multitemporal digital imagery using fast Fourier transform techniques, IEEE Trans. Geosci. Electron., vol. 8, no. 4, pp. 353–368, Oct. 1970. DOI:10.1109/TGE.1970.271435.
[3]C. D. Kuglin D. C. Hines. The phase correlation image alignment method, Proceeding of IEEE International Conference on Cybernetics and Society, pp. 163-165, New York, NY, USA, 1975, pp. 163–165.
[4]James R. Fienup, “图像重建的不变误差度量” 光学快报 36, 8352-8357 (1997). DOI:10.1364/AO.36.008352
[5]Dirk Padfield. 傅里叶域中的掩码对象配准. IEEE图像处理汇刊, 第21卷(第5期), 第2706-2718页 (2012). DOI:10.1109/TIP.2011.2181402
[6]D. Padfield. “Masked FFT registration”. In Proc. Computer Vision and Pattern Recognition, pp. 2918-2925 (2010). DOI:10.1109/CVPR.2010.5540032