我有一个由程序生成的 GIF 图像,其中每个输出值都通过附加的调色板由其颜色表示。我需要替换一个值,即图像中的颜色与相邻像素的插值。由于我无法更改程序输出,因此我需要修改输出图像。生成的图像将以 PNG 或 GIF 格式保存。
我可以轻松地提取(屏蔽)所有需要重新绘制的像素,因为它们具有固定颜色,但是我无法找到有关如何使用来自相邻像素的插值颜色替换 imagemagick 中一个/所有像素的颜色的解决方案。
有没有办法在 imagemagick 中做到这一点?
像素的原始值与物理值成正比,因此如果可以对原始值进行插值,然后通过提供的调色板将其转换为颜色,那就太好了。
附图显示了原始(左)和在 GIMP 中手动处理的图像(右)。
最佳答案
一种技术是用背景替换有问题的颜色,然后使用侵 eclipse 和扩张形态的组合来删除路径。
鉴于...
convert input.png \
-fill white -fuzz 10% -opaque black \
-morphology Erode Diamond \
-morphology Dilate Diamond \
output.png
这不是最近邻居的真正插值,而是接近的。还要注意边缘的舍入误差。
更新
或者正如 Fred 在评论中指出的那样,只需使用
-morphology Smooth Diamond
而不是侵 eclipse + 扩张convert input.png \
-fill white -fuzz 10% -opaque black \
-morphology Smooth Diamond \
output.png
关于imagemagick - 使用从相邻像素插值的图像中的一种颜色替换/重新绘制所有像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56265704/