В моем проекте я должен оцифровать изображение ЭКГ, полученное с помощью обычной камеры (JPEG). Например, у меня есть следующее изображение с камеры:
и я хочу получить что-то вроде этого:
а затем оцифрованные данные (х, у точек), как в этом видео о оцифровке ЭКГ
Я понятия не имею, как это сделать, поэтому я искал и консультировался с несколькими исследовательскими работами. Общий подход алгоритмов выглядит так:
- изменить на изображение уровня серого
- удалить линии сетки
- добавить недостающие точки
- конвертировать 2D изображение в 1D изображение
Я застрял со вторым пунктом, т.е. удаление линий сетки. Я нашел еще несколько ссылок, чтобы сделать это, и обнаружил, что анализ гистограммы может быть полезным.
Подскажите, пожалуйста, как мне это сделать (я использую MATLAB 2010)? Любая помощь будет оценена.
image-processing
Дипак
источник
источник
Ответы:
Извините, я использую Mathematica, но реализовать эту идею в Matlab должно быть действительно легко. Я даю код в любом случае, поэтому, когда мое описание недостаточно подробное, вы можете получить остальное из кода.
Основная идея такова: вы смотрите на свое изображение по столбцам. Обработайте каждый столбец пикселей отдельно. Обратите внимание, что на графике я инвертировал значения серого. Таким образом, черный цвет равен 1, а белый равен 0.
Если вы строите (инвертированные) значения яркости в пикселях, у вас есть только две ситуации. Первый, когда ваш столбец не находится на вертикальной линии сетки. Сюжет выглядит так
Вторая ситуация, когда вы находитесь прямо на вертикальной линии сетки. Тогда линия сетки влияет на яркость всего столбца
Но вы видите, что ваша темная ЭЭГ, кажется, всегда максимальна. Поэтому очень сложный алгоритм таков: пройти через каждый столбец и занять позицию самого черного пикселя.
Обратите внимание, что я обрезал немного правой стороны вашего изображения, так как оно было полностью белым. Результат
Теперь вы можете присоединиться к точкам или интерполировать их любым удобным для вас способом, и вы получите свою ЭЭГ
источник
У вас есть цветное изображение, где линии сетки красные, а трасса черная. так что просто игнорируйте любые пиксели, которые красные!
Если вы не можете быть уверены, что изображение точно выровнено, вы можете использовать линии сетки для вычисления перекоса (просто наклон изображения в пикселях на пиксель при движении вправо).
Затем превратить черный след в значение 1d просто. Начните в первом столбце с левого края и найдите черный пиксель (или центроид небольшой связанной группы пикселей) - вертикальное положение - это ваше значение.
Сделайте это для каждого столбца в изображении.
Там, где у вас есть пропущенное значение, вам нужно будет интерполировать между известными значениями до и после.
Для дополнительных точек вы можете установить предел того, насколько трасса может меняться от столбца столбец, чтобы вы могли обнаружить случайные точки или пики шума.
источник