概述
该项目旨在使用计算机视觉技术追踪心脏收缩和舒张过程中的某些关键点的周期性运动轨迹。输入数据是一个以 500 fps 拍摄的心脏收缩和舒张视频分解成的 TIFF 图像序列。输出结果是一个视频文件,展示了心脏上关键点的运动轨迹。
技术原理
图像序列提取
首先,我们使用 tifffile
库来读取 image.tif
文件,并逐帧提取图像。每帧图像的形状为 (159, 202)
,维度为 2
,数据类型为 uint8
。提取的图像被保存到 image_folder
目录中,文件名格式为 image_0000.tif
, image_0001.tif
, …, image_1999.tif
。
关键点检测和追踪
接下来,我们使用 opencv
库来检测和追踪心脏上的关键点。具体步骤如下:
- 读取第一帧图像:使用
cv2.imread
读取image_folder
目录中的第一帧图像,并将其转换为灰度图像。 - 检测关键点:使用
cv2.goodFeaturesToTrack
函数在第一帧图像中检测关键点。 - 初始化 HSV 图像:创建一个与第一帧图像相同大小的 HSV 图像,用于绘制运动轨迹。
- 追踪关键点:遍历
image_folder
目录中的剩余帧图像,使用cv2.calcOpticalFlowPyrLK
函数计算光流。 - 绘制轨迹:对于每个检测到的关键点,使用
cv2.line
函数在 HSV 图像上绘制运动轨迹,并使用cv2.circle
函数在当前帧图像上绘制关键点的位置。 - 写入视频帧:将当前帧图像与 HSV 图像叠加后写入视频文件。
- 更新前一帧图像和点:将当前帧图像和关键点位置更新为前一帧图像和关键点位置,以便继续追踪。
视频生成
使用 cv2.VideoWriter
函数生成最终的视频文件 heart_tracking.avi
。视频的帧率为 500 fps,与输入图像序列的帧率一致。帧率也可以根据情况自行设定。
使用方法
-
安装依赖库:
pip install tifffile opencv-python
-
运行图像提取脚本:
python extract_images.py
-
运行关键点追踪脚本:
python track_heart_points.py
-
查看结果视频:
open heart_tracking.avi
文件结构
image.tif
: 输入的 TIFF 图像序列文件。image_folder/
: 存储提取的单帧图像文件的目录。extract_images.py
: 提取 TIFF 图像序列中的单帧图像并保存到image_folder
目录中的脚本。track_heart_points.py
: 检测和追踪心脏上关键点的运动轨迹,并生成heart_tracking.avi
视频文件的脚本。heart_tracking.avi
: 输出的视频文件,展示了心脏上关键点的运动轨迹。print_image_info.py
: 打印图像信息的脚本。print_all_frames_info.py
: 打印所有帧图像信息的脚本。print_first_frame_info.py
: 打印第一帧图像信息的脚本。print_all_frames_info_tifffile.py
: 使用tifffile
库打印所有帧图像信息的脚本。
注意事项
- 确保
opencv-python
和tifffile
库已正确安装。
联系方式
如有任何问题、建议或合作,请联系项目维护者:
- 邮箱: mypython@126.com
- 博客: thinknext.top