输入图像已生成,因此每个像素都是精确的颜色。 我对这些颜色的交叉点以及它们定义的对象感兴趣。
我想将仅与相同颜色或已经是白色的像素相邻的每个像素变白。 与另一种颜色的像素相邻的像素未修改。
即,结果应该只是red正方形与green线交叉的点和/或边缘。
我的猜测是,morphology 涉及使用square 内核。 但我不知道方法。
我还没有完全弄清楚你想要什么,而且这周我手里只有一部 iPhone,所以我会尽力让你接近,希望你能解决剩下的问题。
您似乎想要所有不与白色相邻的边缘。所以让我们找到:
然后做一些差分。
所以,对于所有与白色相邻的边,让所有非白色的都变成黑色,然后找到边:
magick shapes.png -fill black +opaque white -canny 0x1+30% -negate whiteedges.png
现在所有边缘。将所有内容变成灰色阴影并找到所有边缘:
magick shapes.png -colorspace gray -canny 0x1+30% otheredges.png
现在通过相乘将两者结合起来,但您可以尝试其他混合模式:
magick whiteedges.png otheredges.png -compose multiply -composite result.png
您显然可以向边缘检测图像添加阈值以增亮检测到的边缘。您还可以扩大白色区域以使它们更大/更胖,或者侵蚀它们以使它们更薄。您还可以使用中值滤波器等去除小伪影,但我认为掩模接近您想要的。
如果性能很重要,我们还可以将上述所有内容组合成一个命令。