抱歉,我使用Mathematica,但是将其实现到Matlab中应该真的很容易。无论如何,我都会给出代码,所以当我的描述不够详细时,您可以从代码中获取其余内容。
基本思想是:按列查看图像。分别处理像素的每一列。请注意,在绘图中,我反转了灰度值。因此,黑色为1,白色为0。
如果绘制(反转的)亮度像素值,则基本上只有两种情况。第一个是,当您的列不在垂直网格线上时。情节看起来像
第二种情况是,您直接在垂直网格线上。然后,网格线会影响整个列的亮度
但是您看到的是,您的黑暗脑电图似乎总是最大的。因此,非常复杂的算法是:遍历每一列并确定最黑像素的位置。
img = ColorConvert[
ImagePad[
Import["http://i.stack.imgur.com/500Kg.jpg"], {{0, -20}, {0, 0}}],
"Grayscale"];
Image[
Transpose[Function[With[{m = Min[#]},
Map[Function[{v}, If[v == m, 1, 0]], #]]] /@
Transpose[ImageData[img, "Real"]]
]
]
请注意,我在图像的右侧部分进行了裁切,因为此处完全是白色的。结果是
现在,您可以按照自己喜欢的任何方式加入或插入点,从而获得脑电图