Редактировать 1: вопрос переписан, чтобы его было проще понять.
Это действительно поразило меня.
Я хотел бы применить фильтр к изображению, чтобы значения, превышающие определенный порог, отображались полностью белыми, а все значения, которые равны или меньше порогового значения, были полностью черными.
вот карта, представляющая значения RGB изображения 3x3 пикселя:
|(255,255,255)|(220,220,220)|(100,100,100)|
|(254,254,254)|(12 ,12 ,12 )|(38 ,38 ,38 )|
|(201,201,201)|(105,105,105)|(60 ,60 ,60 )|
После применения моего фильтра я хочу получить изображение, в котором все значения больше 200 преобразуются в (255,255,255), а все значения, равные или меньшие 200, преобразуются в (0,0,0), например:
|(255,255,255)|(255,255,255)|(0 ,0 ,0 )|
|(255,255,255)|(0 ,0 ,0 )|(0 ,0 ,0 )|
|(255,255,255)|(0 ,0 ,0 )|(0 ,0 ,0 )|
Есть идеи, с чего мне начать? Это вообще возможно в SVG? Я знаю, что могу создавать матричные умножения в фильтрах в svg, но не знаю, как подойти к этой проблеме.
Спасибо!
Изменить 1: Связанный вопрос, который я разместил в математическом обмене: https://math.stackexchange.com/questions/2087482/creating-binary-matrix-for-threshold-as-a-result-of-matrix-multiplcation
Редактировать 2: извлечено из кода Snap.svg: эта матрица преобразует цветное изображение в оттенки серого:
<feColorMatrix type="matrix" values="0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"/>
Вместо получения оттенков серого я хотел бы изменить значения здесь, чтобы получить черный и белый. И я хотел бы выбрать порог, выше которого значения возвращаются как белые, а ниже возвращаются как черные
Дополнительная информация. Согласно MSDN, умножение происходит следующим образом:
Resulting vector my coveted matrix original vector
| R' | | a00 a01 a02 a03 a04 | | R |
| G' | | a10 a11 a12 a13 a14 | | G |
| B' | = | a20 a21 a22 a23 a24 | * | B |
| A' | | a30 a31 a32 a33 a34 | | A |
| 1 | | 0 0 0 0 1 | | 1 |
Это, в свою очередь, применяется к каждому пикселю введенного изображения.