【发布时间】:2017-05-21 21:59:44
【问题描述】:
编辑 1: 重写问题,以便更清晰易懂。
这个真的让我心碎。
我想对图像应用过滤器,使超过某个阈值的值显示为全白,而所有等于或小于阈值的值都显示为全黑。
这是一张表示 3x3 像素图像的 RGB 值的地图:
|(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 |
这又会应用于输入图像的每个像素。
【问题讨论】:
-
您可以查看 svg 过滤器。很难看出你在追求什么。是否有将被擦除的初始图像或 svg,或者什么?
-
没有特定的 svg 或图像。基本上我需要(创建)一个过滤器来获取图像并返回单色图像(不是灰度,而是严格的黑白)。让所有大于 x 的值显示为白色,所有小于或等于 x 的值显示为黑色。
-
如果您知道内置的 svg 过滤器等,那就太好了。如果没有,我将不得不解决这个数学问题。 math.stackexchange.com/questions/2087482/…
-
我知道您想将 RGB 图像转换为黑白图像。正如您稍后所说,您可能想要一个应用于每个像素的应用程序,返回 (0,0,0) 或 (255,255,255)(A 代表不透明度)。我的问题是:如果你得到一个像素(203,97,150),输出会是什么?
-
我没有像素 (203,97,150)。在我的输入中,所有三个字段都是相等的,格式始终为 (x,x,x)
标签: image-processing svg raphael snap.svg svg-filters