Обработка изображений и регрессия

 

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

Мы хотим построить по данному рисунку аналитическую зависимость. Использование отдельных программ регрессии и обработки изображений весьма трудоёмко. Решение задачи при помощи универсального комплекса AstroFrame может быть осуществлено следующим образом:

 

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

В данной формуле  r, g, b представляют компоненты красного, зелёного и синего цвета.  В результате фильтрации мы получаем следующее изображение:

Далее компонент Selection  преобразует данное изображение в две выборки. Первая выборка – это выборка x- координат чёрных точек, вторая выборка это выборка y – координат. Далее применяя следующую формулу регрессии полиномом 5 й степени

 

Мы получаем следующую зависимость:

 

Данный пример является очень простым. Гораздо сложнее обработать рисунок следующего вида:

 

Рисунок неровный. Много помех. Для его обработки используются нелокальные фильтры в которых результат вычислений использует не только цвет точки прототипа но и цвет близких точек. Например, для выделения нижней синусоиды применялся фильтр сгущения точек. Отфильтрованное изображение имело вид:

Неровность рисунка компенсировалась обработкой вертикальных и горизонтальных линий и последующим аффинным преобразованием. В результате поучились следующие зависимости.

Они отмасштабированы таким образом, чтобы абсцисса и ординаты прямоугольника осциллограммы изменялась в пределах [0,1].

 

Для отсканированных графиков вида:

целесообразно метить точки. В данном рисунке начало координат отмечено красной точкой, верхняя точка зелёная правая синяя, а точки графика голубые.  Для определения начала координат, верхней и правой точки сначала применяются следующие локальные фильтры:

Фильтр красного цвета.

Фильтр зелёного цвета

Фильтр голубого цвета.

В данных выражениях r, g, b представляют относительные интенсивности красного, синего и зелёного цвета пикселя. Параметры x и y являются константами, имеющими следующие значения:

 

Фактически первый фильтр ставит на место красного пикселя – черный. Результат получается следующий:

Аналогично мы получаем изображение верхней и правой опорной точки. Для того чтобы рассчитать их положение мы, используя компонент , преобразуем данные изображения в выборки. Поскольку пример с одной точкой не является наглядным, мы покажем выборку  несколькими точками.

Приведённое выше изображение компонент  преобразует в следующую выборку:

Точнее говоря приведённому выше рисунку, соответствуют две выборки. Первая из них выборка – абсцисс точек, вторая – выборка ординат точек. Теперь на надо из выборок получить координаты опорных точек. Для этого мы вводим формулу регрессии.

Поясним суть данной формулы. Будем рассматривать только координату x,  поскольку координата y абсолютно аналогична. В первой формуле параметр х представляет собой параметр X компонента Zero Selection.  Тип последнего Double[4] или массив (вектор) состоящий из четырёх точек.  Данное обстоятельство обусловлено тем, что мы изначально пометили начало координат квадратиком, состоящим из четырёх пикселов. Редактор формул переводит произведение числа на вектор в вектор, компонентами которого являются произведения компонентов исходного вектора на число. Соответственно 0x в формуле представляет собой вектор, состоящий из четырёх нулевых компонент. Аналогично вся формула представляет собой вектор, каждая компонента которого равна a. Далее мы используем компонент регрессии . Его свойства приведены ниже:

Данный компонент производит определение констант a и b компонента Zero Regression. Данный компонент осуществление приближение выборок X и Y компонента Zero Selection формулами Formula_1 и Formula_2 компонента Zero Regression. Выборки X и Y, а также формулы Formula_1 и Formula_2  помечены индексами 0 и 1 соответственно. Отметим что каждая выборка X и Y имеет 4 элемента. Аналогично на выходе Formula_1 и Formula_2 мы имеем четырёхмерные вектора, как это отмечалось выше. Благодаря регрессии мы определяем значения a и b компонента Zero Regression:

 Разумеется, в данном случае регрессия тривиальна. Она является арифметическим средним. Однако она используется не изолированно, а в следующем сложном сценарии, состоящем из простых элементов:

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

Абсциссы опорных точек равны -20 и 200, а ординаты -0,5 и 0,5. Соответственно компонент Scale содержит их в качестве констант:

 

Y

Выравнивание графика осуществлялось аффинным преобразованием. Мы не будем здесь приводить  подробности элементарных аффинных преобразований http://ru.wikibooks.org/wiki/%D0%90%D1%84%D1%84%D0%B8%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F .  Отметим только что для обратного афинного  преобразования использовался компонент матрица  и формула её обращения:

Далее для выделения точек графика использовался локальный фильтр следующего типа:

Данный фильтр позволил выделить пиксели, цвет которых является суммой синего и зелёного цветов. В результате получаются следующие точки:

 

Мы их аппроксимируем следующей гармонической регрессионной зависимостью:

На её входе вектор x, являющийся выходной формулой Processed X необходимой для учёта аффинного преобразования. Аналогично мы обрабатываем данную формулу при помощи компонента регрессии:

В данном случае определяемые параметры – коэффициенты гармоник.

 

 

Результат аппроксимации приведён ниже:

 

Естественно, что в случае, когда данный инструментарий дезинтегрирован, решение данной задачи крайне неудобно.  Для рисунков типа:

 

целесообразно метить только опорные точки, а для точек графика применять фильтр, зависящий от координат пикселя.

В данном фильтре r, g, b являются компонентами цвета, а x и y представляют координаты пикселя. Данный фильтр позволяет отсечь координатные линии и оцифровку.

 Результаты фильтрации и регрессии приведены ниже: