imagemagick - 使用从相邻像素插值的图像中的一种颜色替换/重绘所有像素
问题描述
我有一个由程序生成的 GIF 图像,其中每个输出值通过附加的调色板由其颜色表示。我需要用相邻像素插值替换一个值,即图像中的颜色。由于我无法更改程序输出,因此我需要修改输出图像。生成的图像将以 PNG 或 GIF 格式保存。
我可以轻松地提取(屏蔽)所有需要重新绘制的像素,因为它们具有固定的颜色,但是我无法找到如何用相邻像素的插值颜色替换 imagemagick 中一个/所有像素的颜色的解决方案。有没有办法在 imagemagick 中做到这一点?
像素的原始值与物理值成比例,因此如果可以对原始值进行插值,然后通过提供的调色板将其转换为颜色,那就太好了。
附图显示了原始图像(左)并在 GIMP 中手动处理(右)。
解决方案
一种技术是用背景替换有问题的颜色,然后使用侵蚀和扩张形态的组合来去除路径。
鉴于...
convert input.png \
-fill white -fuzz 10% -opaque black \
-morphology Erode Diamond \
-morphology Dilate Diamond \
output.png
这不是最近邻居的真正插值,但很接近。还要注意边缘的舍入误差。
更新
或者正如 Fred 在评论中指出的那样,只需使用-morphology Smooth Diamond
而不是 Erode + Dilate
convert input.png \
-fill white -fuzz 10% -opaque black \
-morphology Smooth Diamond \
output.png
推荐阅读
- rust - 将 println 设为宏有什么好处?
- azure - Azure B2C 自定义策略 Rest API 客户端证书
- python - tkinter 使用默认的 Mac 主题
- python - 应用 SciPy 牛顿法优化熊猫数据框 Weibull 和
- android - IDE 无法识别 Android Kotlin checkBox.isChecked
- r - 在 R 中为海洋添加颜色
- nginx - 无法使用 Laravel 使用 Nginx 将图像转发到 webp
- azure-ad-b2c - 接受使用条款的 B2C 自定义政策
- firebase - 基于 Firebase 数据 Flutter 的存在导航到屏幕
- graph - 如何在不使用 Rc/RefCell 污染类型签名的情况下,在 arenas 看起来不够用时重构循环数据使用?