СПОСОБ И СИСТЕМА ПРЕОБРАЗОВАНИЯ МОМЕНТАЛЬНОГО СНИМКА ЭКРАНА В МЕТАФАЙЛ

1. Способ преобразования моментального снимка экрана (скриншота) в метафайл, включающий в себя выполнение следующих операций:
- обнаруживают фрагменты текста на скриншоте;
- оценивают цвет фона и цвет символов на каждом фрагменте;
- векторизуют контура символов;
- модифицируют скриншот за счет заполнения фрагментов текста цветом фона;
- создают метафайл на основе модифицированного скриншота и векторизованных контуров, заполненных цветом текста.
2. Способ по п.1, отличающийся тем, что фрагменты текста на скриншоте обнаруживают путем выполнения следующих операций:
- обнаруживают соседние пиксели с высоким значением горизонтального градиента;
- объединяют соседние пиксели во фрагменты;
- анализируют гистограммы фрагментов на предмет обнаружения признаков сглаженного текста;
- выделяют фрагменты с признаками сглаженного текста.
3. Способ по п.2, отличающийся тем, что объединяют соседние пиксели во фрагменты посредством морфологического расширения (дилатапии) и определения ограничивающих прямоугольников для каждой связанной группы пикселей.
4. Способ по п.2, отличающийся тем, что в процессе анализа гистограммы фрагментов обнаружение признаков сглаженного текста осуществляют за счет того, что подсчитывают количество изолированных групп с ненулевыми столбцами для каждого цвета и проверяют это количество на превышение заданного порога.
5. Способ по п.1, отличающийся тем, что цвет фона и цвет символов на каждом фрагменте оценивают на основе определения крайних столбцов гистограммы фрагмента.
6. Способ по п.1, отличающийся тем, что фрагменты текста на скриншоте обнаруживают путем выполнения следующих операций:
- делят скриншот на пересекающиеся прямоугольные блоки;
- вычисляют признаки для каждого блока;
- классифицируют каждый блок как текстовый или не текстовый;
- объединяют соседние блоки во фрагменты текста.
7. Способ по п.6, отличающийся тем, что для каждого блока вычисляют следующие характерные признаки:
+
0
- число ненулевых столбцов b и нулевых столбцов b раздельно для каждого канала цветового пространства RGB;
<mrow><msub><mover accent="true"><mi>I</mi><mo>¯</mo></mover><mi>i</mi></msub><mo>=</mo><mfrac><mrow><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>r</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><mrow><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>c</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><mrow><msub><mi>I</mi><mi>i</mi></msub><mrow><mo>(</mo><mrow><mi>r</mi><mo>,</mo><mi>c</mi></mrow><mo>)</mo></mrow></mrow></mstyle></mrow></mstyle></mrow><mrow><msup><mi>N</mi><mn>2</mn></msup></mrow></mfrac></mrow>
i
- среднюю яркость блока:
, где I(r, c) - яркость пикселя, расположенного в строке r и столбце c, N - количество пикселей в блоке;
k
i
<mrow><msub><mrow><mover accent="true"><mrow><mi>d</mi><mi>I</mi></mrow><mo stretchy="true">¯</mo></mover></mrow><mi>i</mi></msub><mo>=</mo><mfrac><mrow><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mn>4</mn></munderover><mrow><mrow><mo>|</mo><mrow><msub><mover accent="true"><mi>I</mi><mo>¯</mo></mover><mi>i</mi></msub><mo>−</mo><msub><mover accent="true"><mi>I</mi><mo>¯</mo></mover><mi>k</mi></msub></mrow><mo>|</mo></mrow></mrow></mstyle></mrow><mn>4</mn></mfrac></mrow>
- среднюю разность средних яркостей блоков I в 4-х связном соседстве с блоком I:
;
<mrow><mi>d</mi><msubsup><mi>I</mi><mi>y</mi><mi>i</mi></msubsup></mrow>
<mrow><mi>d</mi><msubsup><mi>I</mi><mi>x</mi><mi>i</mi></msubsup></mrow>
<mrow><msub><mrow><mover accent="true"><mrow><msub><mi>d</mi><mrow><mi>x</mi><mo>,</mo><mi>y</mi></mrow></msub><mi>I</mi></mrow><mo stretchy="true">¯</mo></mover></mrow><mi>i</mi></msub><mo>=</mo><mfrac><mrow><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>r</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><mrow><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>c</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>N</mi><mo>−</mo><mn>1</mn></mrow></munderover><mrow><mi>d</mi><msubsup><mi>I</mi><mi>x</mi><mi>i</mi></msubsup><mrow><mo>(</mo><mrow><mi>r</mi><mo>,</mo><mi>c</mi></mrow><mo>)</mo></mrow><mo>+</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>r</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>N</mi><mo>−</mo><mn>1</mn></mrow></munderover><mrow><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>c</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><mrow><mi>d</mi><msubsup><mi>I</mi><mi>y</mi><mi>i</mi></msubsup><mrow><mo>(</mo><mrow><mi>r</mi><mo>,</mo><mi>c</mi></mrow><mo>)</mo></mrow><mo>+</mo></mrow></mstyle></mrow></mstyle></mrow></mstyle></mrow></mstyle></mrow><mrow><mn>2</mn><mi>N</mi><mrow><mo>(</mo><mrow><mi>N</mi><mo>−</mo><mn>1</mn></mrow><mo>)</mo></mrow></mrow></mfrac></mrow>
- среднее значение вертикальных
и горизонтальных
производных по блокам:
;
<mrow><mi>H</mi><mo>=</mo><mstyle displaystyle="true"><munder><mo>∑</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></munder><mrow><mfrac><mrow><msub><mi>N</mi><mi>d</mi></msub><mrow><mo>(</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mo>)</mo></mrow></mrow><mrow><mn>1</mn><mo>+</mo><mrow><mo>|</mo><mrow><mi>i</mi><mo>−</mo><mi>j</mi></mrow><mo>|</mo></mrow></mrow></mfrac></mrow></mstyle></mrow>
d
- однородность блока:
, где N - это нормированная матрица вхождений, d - определяет пространственную связь;
<mrow><msub><mi>P</mi><mi>g</mi></msub><mo>=</mo><mstyle displaystyle="true"><munder><mo>∑</mo><mrow><mo>∀</mo><mrow><mo>(</mo><mrow><mi>r</mi><mo>,</mo><mi>c</mi></mrow><mo>)</mo></mrow><mo>∈</mo><mi>B</mi><mi>i</mi></mrow></munder><mrow><mo>{</mo><mn>1</mn><mo>|</mo><mo>∇</mo><msub><mi>I</mi><mi>i</mi></msub><mrow><mo>(</mo><mrow><mi>r</mi><mo>,</mo><mi>c</mi></mrow><mo>)</mo></mrow><mo>></mo><mi>T</mi><mo>}</mo><mo>/</mo><msup><mi>N</mi><mn>2</mn></msup></mrow></mstyle></mrow>
i
- процент пикселей с градиентом выше порога:
где ∇I(r, c) вычисляется как квадратный корень из суммы квадратов горизонтальных и вертикальных производных;
<mrow><msubsup><mi>I</mi><mi>i</mi><mi>o</mi></msubsup></mrow>
<mrow><msubsup><mi>I</mi><mi>i</mi><mi>b</mi></msubsup></mrow>
<mrow><msub><mi>P</mi><mi>m</mi></msub><mo>=</mo><mstyle displaystyle="true"><munder><mo>∑</mo><mrow><mo>∀</mo><mrow><mo>(</mo><mrow><mi>r</mi><mo>,</mo><mi>c</mi></mrow><mo>)</mo></mrow><mo>∈</mo><mi>B</mi><mi>i</mi></mrow></munder><mrow><mo>{</mo><mn>1</mn><mo>|</mo><msubsup><mi>I</mi><mi>i</mi><mi>o</mi></msubsup><mrow><mo>(</mo><mrow><mi>r</mi><mo>,</mo><mi>c</mi></mrow><mo>)</mo></mrow><mo>≠</mo><msubsup><mi>I</mi><mi>i</mi><mi>b</mi></msubsup><mrow><mo>(</mo><mrow><mi>r</mi><mo>,</mo><mi>c</mi></mrow><mo>)</mo></mrow><mo>}</mo><mo>/</mo><msup><mi>N</mi><mn>2</mn></msup></mrow></mstyle></mrow>
- процент изменений яркостей пикселей на изображении
, полученном в результате применения операции морфологического открытия к бинарному изображению
, полученному бинаризацией с пороговым значением 128:
.
8. Способ по п.6, отличающийся тем, что классифицируют каждый блок как текстовый или не текстовый по одному из следующих способов: бустинг комитета решающих деревьев, случайный лес решающих деревьев, машина опорных векторов, способ K-ближайших соседей.
9. Способ по п.1, отличающийся тем, что векторизуют контуры символов путем выполнения следующих операций:
- преобразуют фрагмент текста в полутоновое изображение;
- повышают разрешение полутонового изображения;
- бинаризуют фрагмент повышенного разрешения;
- отслеживают точки контуров символов в пределах фрагментов для описания траектории контуров;
- сокращают числа вершин контуров;
- аппроксимируют траекторию контуров с сокращенным числом вершин последовательностью отрезков прямых и кривых.
10. Система преобразования моментального снимка экрана (скриншота) в метафайл, включающая в себя:
- модуль сегментации текста, выполненный с возможностью сегментации текста, создания размеченной карты сегментированного текста и определения координат фрагментов, содержащих текст; причем на вход модуля поступает исходное растровое изображение скриншота, выходы модуля сегментации текста подключены к входам модулей векторизации и ретуширования, куда передается карта, а также к входу модуля оценки цвета, куда передаются координаты фрагментов и исходный скриншот;
- модуль оценки цвета, выполненный с возможностью определения цвета фона и текста для каждого фрагмента; на вход модуля поступают с выхода модуля сегментации текста координаты фрагментов и исходный скриншот; выходы модуля оценки цвета подключены к входу модуля ретуширования и входу модуля создания метафайла;
- модуль векторизации, выполненный с возможностью аппроксимации контуров символов на карте сегментированного текста замкнутой последовательностью отрезков прямых и кривых; вход модуля подключен к выходу модуля сегментации с возможностью получения карты; выход модуля векторизации подключен к входу модуля создания метафайла;
- модуль ретуширования текста, выполненный с возможностью модификации исходного растрового изображения скриншота посредством закрашивания области фрагментов с текстом соответствующим цветом фона; вход модуля подключен к выходу модуля оценки цвета; выход модуля подключен к входу модуль создания метафайла, куда передается модифицированный скриншот;
- модуль создания метафайла, выполненный с возможностью формирования метафайла из следующих записей: модифицированного скриншота, замкнутых последовательностей отрезков прямых и кривых, заполненных соответствующим цветом символа.