2022.03.20-高宝琪毕设阶段性汇报
作者:互联网
第9次汇报 (2022.03.20)
基本跑通了印度学者ECG数字化的代码, 但发现其只给出了提取波形的代码, 并未给出得出网格大小的代码, 这导致整个心电数字化的算法不完整; 论文中也是将此处一笔带过. 所以这篇论文也很大程度失去了参考价值
但很幸运地发现了另一个ECG数字化的开源项目, 来自一些美国学者, 他们做的就要完善和复杂很多, 我试了一下他们的程序, 感觉效果不错, 所以打算以此为参考进行学习
基本流程
1. 预处理
- 旋转校正 (调用扫描全能王的智能裁剪接口?)
- 导联切割 (用户手动划分导联?)
2. 信号提取和网格提取
- 对每一个导联
- 信号检测
- 灰度化: 彩图 —> 灰度图
- 二值化: 将灰度图二值化
- 计算灰度图的otsu阈值
- 将otsu阈值不断减小, 直到用该阈值二值化的图像检测不到网格 或 阈值减小到原阈值的60%
- 用得到的阈值去做二值化
- 信号提取
- 维特比算法 (一种动态规划算法)
- 对于每一列, 都有一些连续True像素的区域, 我们将每个区域的中心都标记为该列的节点
- 第一列的每个节点代价为0
- 第二列的每个节点, 都计算自己连接上一列的每个节点, 各要付出多少代价, 保留最小值和所连接的上一列节点的像素值
- 之后的列重复这一过程, 直到最后一列
- 找出最后一列代价最小的节点, 回溯得出路径, 即为波形路径
- [ 注 ] 代价函数为同时考虑节点距离和角度变化的一个函数
- 维特比算法 (一种动态规划算法)
- 网格检测
- 灰度化: 彩图 —> 灰度图
- 二值化: 将灰度图用230二值化
- 网格提取
- 计算每一列黑色素的个数
- 得到基频, 即一个格子是多少像素 (调用SciPy库里的函数)
- 信号检测
3. 后处理
- 信号归零
- 信号缩放 (一个格子边长为1mm, 25mm/s, 10mV/mm; 所以一个格子为0.04s 或 10mV)
- 0填充
标签:毕设,20,阈值,网格,灰度,一列,高宝琪,提取,节点 来源: https://blog.csdn.net/bzsgbq/article/details/123601689