Эффект свертки матрицы
Используйте эффект сверток матрицы для применения произвольного 2D-ядра к изображению. Этот эффект можно использовать для размытия, обнаружения краев, emboss или резкого изображения.
CLSID для этого эффекта CLSID_D2D1ConvolveMatrix.
- Пример изображения
- Свойства эффекта
- Режимы масштабирования
- Режимы границ
- Выходной растровый рисунок
- Требования
- Связанные статьи
Пример изображения
В примере ниже показаны входные и выходные данные эффекта сверток матрицы с ядром 3 x 3.
Перед |
---|
После |
ComPtr<ID2D1Effect> convolveMatrixEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ConvolveMatrix, &convolveMatrixEffect);
convolveMatrixEffect->SetInput(0, bitmap);
float matrix[9] = {-1, -1, -1, -1, 9, -1, -1, -1, -1};
convolveMatrixEffect->SetValue(D2D1_CONVOLVEMATRIX_PROP_KERNEL_MATRIX, matrix);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(convolveMatrixEffect.Get());
m_d2dContext->EndDraw();
Свойства эффекта
Отображаемое имя и перечисление индексов | Description |
---|---|
KernelUnitLength D2D1_CONVOLVEMATRIX_PROP_KERNEL_UNIT_LENGTH |
Размер одной единицы в ядре. Единицы находятся в (diPs/ядро), где единица ядра — это размер элемента в ядре свертки. Значение 1 (единица DIP/ядра) соответствует одному пикселю на изображении с 96 DPI. Тип FLOAT. Значение по умолчанию — 1.0f. |
Scalemode D2D1_CONVOLVEMATRIX_PROP_SCALE_MODE |
Режим интерполяции, который используется для масштабирования изображения до соответствующей длины единицы ядра. Существует шесть режимов масштабирования, которые отличаются качеством и скоростью. Тип D2D1_CONVOLVEMATRIX_SCALE_MODE. Значение по умолчанию — D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR. |
KernelSizeX D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_X |
Ширина матрицы ядра. Единицы указываются в единицах ядра. Тип — UINT32. Значение по умолчанию равно 3. |
ЯдроSizey D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_Y |
Высота матрицы ядра. Единицы указываются в единицах ядра. Тип — UINT32. Значение по умолчанию равно 3. |
KernelMatrix D2D1_CONVOLVEMATRIX_PROP_KERNEL_MATRIX |
Матрица ядра, применяемая к изображению. Элементы ядра не привязаны и указываются в виде с плавающей запятой. Первый набор чисел KernelSizeX в FLOAT[] соответствует первой строке в ядре. Второй набор чисел KernelSizeX соответствует второй строке и т. д. до строк KernelSizeY . Тип FLOAT[]. Значение по умолчанию — {0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f}. |
Делитель D2D1_CONVOLVEMATRIX_PROP_DIVISOR |
Матрица ядра применяется к пикселю, а затем результат делится на это значение. 0 ведет себя как значение float epsilon. Тип FLOAT. Значение по умолчанию — 1.0f. |
Предвзятости D2D1_CONVOLVEMATRIX_PROP_BIAS |
Эффект применяет матрицу ядра, делитель, а затем смещение добавляется к результату. Предвзятость не связана и неуправляема. Тип FLOAT. Значение по умолчанию — 0.0f. |
ЯдроOffset D2D1_CONVOLVEMATRIX_PROP_KERNEL_OFFSET |
Перемещает ядро свертки из центрированного положения в выходной пиксель в положение, указываемое слева или вправо и вниз. Смещение определяется в единицах ядра. При некоторых смещениях и размерах ядра образцы ядра сверток не будут приземляться в центре изображения пикселей. Значения пикселей для образца ядра вычисляются двулинейной интерполяцией. Тип D2D1_VECTOR_2F. Значение по умолчанию — {0.0f, 0.0f}. |
СохранитьAlpha D2D1_CONVOLVEMATRIX_PROP_PRESERVE_ALPHA |
Указывает, применяется ли ядро свертки к альфа-каналу или только цветным каналам. Если задать значение TRUE , ядро свертки применяется только к цветным каналам. Если задано значение FALSE , ядро свертки применяется ко всем каналам. Тип — BOOL. Значение по умолчанию — FALSE. |
BorderMode D2D1_CONVOLVEMATRIX_PROP_BORDER_MODE |
Режим, используемый для вычисления границы изображения, мягкого или жесткого. Дополнительные сведения см . в режимах границы. Тип D2D1_BORDER_MODE. Значение по умолчанию — D2D1_BORDER_MODE_SOFT. |
ClampOutput D2D1_CONVOLVEMATRIX_PROP_CLAMP_OUTPUT |
Если эффект зажимает значения цвета в диапазоне от 0 до 1, прежде чем эффект передает значения следующему эффекту в графе. Эффект зажимает значения перед тем, как он премультирует альфа- . Если задано значение TRUE, эффект зацепнет значения. Если задано значение FALSE, эффект не зацепляет значения цвета, но другие эффекты и выходная поверхность могут зажать значения, если они не имеют достаточной точности. Тип — BOOL. Значение по умолчанию — FALSE. |
Режимы масштабирования
Перечисление | Description |
---|---|
D2D1_CONVOLVEMATRIX_SCALE_MODE_NEAREST_NEIGHBOR | Примеры ближайшей единой точки и используют ее. В этом режиме используется меньше времени обработки, но выводится изображение с наименьшим качеством. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR | Использует четырехточечный образец и линейную интерполяцию. Этот режим выводит изображение более высокого качества, чем ближайший режим соседа. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_CUBIC | Использует 16 примеров кубового ядра для интерполяции. В этом режиме используется максимальное время обработки, но выводится более качественный образ. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_MULTI_SAMPLE_LINEAR | Использует 4 линейных выборки в одном пикселе для хорошего анти-псевдонима края. Этот режим подходит для масштабирования на небольшие объемы на изображениях с несколькими пикселями. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_ANISOTROPIC | Использует анисотропную фильтрацию для выборки шаблона в соответствии с преобразованной формой растрового изображения. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_HIGH_QUALITY_CUBIC | Использует размер переменной с высоким качеством кубическом ядре для предварительного масштабирования изображения, если уменьшение масштаба участвует в матрице преобразования. Затем используется режим интерполяции кубов для конечных выходных данных. |
Примечание.
Если режим не выбран, эффект по умолчанию D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR.
Режимы границ
Имя | Описание |
---|---|
D2D1_BORDER_MODE_SOFT | Эффект заполняет входное изображение прозрачными черными пикселями для выборок за пределами входных границ при применении ядра свертки. При этом создается обратимое крае для изображения, а в процессе расширяется выходное растровое изображение по размеру ядра. |
D2D1_BORDER_MODE_HARD | Эффект расширяет входное изображение с преобразованием границы типа зеркало для примеров за пределами входных границ. Размер выходного растрового изображения равен размеру входного растрового изображения. |
Выходной растровый рисунок
Размер выходных данных эффекта зависит от размера ядра свертки, смещения ядра, длины единицы ядра и параметра режима границы.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Минимальная версия сервера | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Верхний колонтитул | d2d1effects.h |
Библиотека | d2d1.lib, dxguid.lib |