Как считывать данные линейного графика с размытого изображения

#graph #data-extraction #linegraph

Вопрос:

У меня есть задание, в котором мне нужно прочитать точки данных с изображения линейного графика и записать их в файл csv. Однако изображение имеет довольно низкое разрешение, и точки данных трудно отличить от самой линии диаграммы, даже для человеческого глаза. Теперь мой вопрос в том, как бы вы подошли к решению этой проблемы, потому что у меня нет ни малейшего представления о структуре, которую я мог бы использовать, и я не нашел подобных проектов, на которые можно было бы взглянуть.

Моя цель состоит не в том, чтобы вы написали код для меня, а в том, чтобы вы поделились своими мыслями о том, как бы вы подошли к этому или любым подобным проектам или фреймворкам, которые могли бы быть полезны в качестве ресурсов для изучения. Язык не имеет большого значения, однако предпочтительнее использовать c#, Java или Python.

Ниже я привел пример графика; линии очень размыты, а точки данных трудно разобрать. Горизонтальная ось представляет месяцы с промежутками в два месяца, а вертикальная ось показывает логарифмические значения в долларах США.

небольшой образец графика

Результат должен выглядеть следующим образом:

как должен выглядеть результат

Любая помощь будет признательна!

Ответ №1:

 LOOP over x ( horizontal )pixels ( there are 250 in your image )  LOOP over y ( vertical ) pixels  IF x,y pixel is blue  SAVE y value  END LOOP over y pixels  CALCULATE median of saved y values  CALCULATE tx time of x  CALCULATE vy value of median y  SAVE tx, vy END LOOP over x CHOOSE reasonable point count N CALCULATE inc = x range / N FOR x = 0; x lt; x range; x  = inc  OUTPUT tx, vy  

Комментарии:

1. Спасибо за ваш ответ, я также подумал о том, чтобы просто распределить свои собственные баллы по графику. Ценю, что вы не торопитесь и пишете такой подробный фрагмент.

2. Ладно, поговорил сегодня с профессором, он сказал, что распределение моих собственных баллов совершенно нормально и что задание в принципе невозможно с предоставленными данными. Пока вы пытаетесь найти решение, он будет доволен, поэтому я просто распределю несколько очков и начну с этого. Спасибо за вашу помощь.

3. Пожалуйста. Голос всегда приветствуется.