Эффекты изображения
Постобработка: удаление цвета, синий цвет, фильтрация
Постобработка захваченного изображения
Иногда захваченное изображение не подходит для поиска по изображению/цвету/ML в исходном виде: оно может быть слишком шумным, содержать слишком много похожих цветов или объектов, из-за чего анализ работает хуже.
В таких случаях помогает постобработка с помощью одного или нескольких эффектов. С их помощью можно:
- удалить или заменить цвета, похожие на указанный оттенок
- перевести изображение в оттенки серого или инвертировать его, чтобы упростить распознавание текста
- сделать края более резкими, чтобы ML-модели было проще находить пути
- применять erosion и dilation, чтобы усилить нужные цветовые области
- подгонять изображение под letterbox, чтобы упростить ML-обработку
- и многое другое
Производительность
Все эффекты хорошо оптимизированы и рассчитаны на применение к захваченным изображениям в реальном времени. Некоторые из них, например удаление цвета, работают со скоростью 500+ fps, поэтому можно использовать сразу несколько эффектов без заметного увеличения времени обработки.
Если какой-то эффект сильно влияет на производительность, пожалуйста, сообщите об этом — скорее всего, это баг.
Доступные эффекты
Ниже — примеры того, что умеют эффекты. Вот исходное изображение:

Color Removal
Удаляет цвета, похожие на указанный, заменяя их на черный. Сравнение выполняется в HSV-пространстве.
Например, можно легко убрать землю и оставить только персонажей и монстров — это сильно упрощает обучение ML-модели для выбора цели.

Color Replacement
Работает почти так же, как Color Removal, но вместо удаления позволяет указать любой цвет замены.
Также эффект умеет заменять всё, что НЕ похоже на указанный цвет.
Например, если применить замену terrain так, чтобы проходимая поверхность была белой, а непроходимая — черной, на этом можно построить систему перемещения.
P.S. Обратите внимание: любой эффект можно применять не ко всему изображению, а только к его части.

Crop
Простой эффект, который позволяет обрезать изображение до нужной области.

Denoise
До:

После:

Dilate
Dilate увеличивает размер объектов переднего плана и особенно полезен, когда нужно соединить разорванные части изображения.

Erode
Подобно тому как вода размывает берег реки, erosion «размывает» объект переднего плана на изображении и уменьшает его. Проще говоря, пиксели рядом с границей объекта отбрасываются, из-за чего объект как бы «съедается» по краям.

Gaussian Blur
Размывает часть изображения. Это может быть полезно, например, чтобы убрать мелкие элементы вроде текста и сделать дальнейшую постобработку и/или анализ более эффективными.

Grayscale
Преобразует изображение в черно-белое. В некоторых случаях это эффективнее, чем вручную удалять нежелательные элементы по цвету.

Negate
Инвертирует ВСЕ цвета изображения. Черный становится белым, белый — черным.
Самое полезное применение — превращать белый текст или текст любого другого цвета в черный, потому что распознавание текста работает лучше всего, когда на белом фоне находятся черные буквы.

Rescale, %
Позволяет уменьшить размер захваченного изображения, чтобы снизить вычислительные затраты на обработку.
Например, изображение размером 1920x1080 содержит 2,073,600 пикселей. Если уменьшить его до 50%, получится 960x540, а это всего 518,400 пикселей.
Для ML это менее важно, но для классических алгоритмов, которые используются в Image Search и Color Search, такое уменьшение может дать заметный прирост производительности.
Resize, in pixels
Позволяет изменить размер изображения до указанных значений в пикселях. Это особенно полезно при работе с ML-моделями, обученными на изображениях определенного размера. С помощью letterboxing можно сохранить пропорции и добиться более стабильной работы моделей.

Binary Threshold
Этот эффект переводит изображение в черно-белый вид и выделяет только часть элементов.
Попробуйте разные методы разделения, чтобы подобрать тот, который лучше подходит именно для вашего случая.

Самое подробное руководство по этой теме есть у OpenCV. Оно написано для Python, но содержит много наглядных иллюстраций.
https://learnopencv.com/opencv-threshold-python-cpp/
https://medium.com/@manik.butex41/an-introduction-to-thresholding-operations-in-opencv-64aff0cb2826
Color Quantization (alpha)
Этот эффект уменьшает количество цветов в изображении, делая дальнейший анализ проще.