微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 ImageMagick 将高度图分成几层?

如何解决如何使用 ImageMagick 将高度图分成几层?

假设我有一个灰度高度图,其颜色范围从 A(相当暗)到 B(相当白)。该贴图未标准化,因此最低值不是漆黑,最高值可能也不是全白。 我们还说 0 表示黑色,1 表示白色。我想要做的是根据高度将图像分成几个单独的图像。每张图片都有黑色背景。

例如,这意味着: 图像 1 包含 0 到 0.2 之间的所有图像内容,高于此值的内容将减少到 0.2。 图像 2 包含 0.2 和 0.4 之间的所有内容,低于 0.2 的所有内容都是黑色的。 图 3 在 0.4 和 0.6 之间是相同的,所有这些都上升到 1。你明白了。

你知道有什么方法可以用 ImageMagick 自动化这个过程吗? 如果没有,我还有其他方法可以做到这一点吗?

谢谢

解决方法

如果您想在不同的高度对图像进行切片,那么您可以使用 -black-threshold 和 -white-threshold 的组合在 ImageMagick 中使用百分比而不是分数来实现。以下将保留每个灰度级范围,并将其余部分设为黑色。黑色阈值将所有内容保持在某个值以上,并使其余部分变为黑色。白色阈值将所有内容保持在一个值以下,并使其余部分变为白色。所以在白色阈值之后,我们只是将白色改为黑色。

IM 6 的 Unix 语法。如果使用 IM 7,请将 convert 更改为 magick

输入: (创建一个渐变图像用于演示)

convert -size 256x256 gradient: grad.png

enter image description here

convert grad.png -write mpr:grad +delete \
\( mpr:grad -white-threshold 20% -fill black -opaque white +write t1.png \) \
\( mpr:grad -black-threshold 20% -white-threshold 40% -fill black -opaque white +write t2.png \) \
\( mpr:grad -black-threshold 40% -white-threshold 60% -fill black -opaque white +write t3.png \) \
\( mpr:grad -black-threshold 60% -white-threshold 80% -fill black -opaque white +write t4.png \) \
\( mpr:grad -black-threshold 80% +write t5.png \) \
null:

结果:

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

添加

根据您的评论,代码应更改如下:

convert grad.png -write mpr:grad +delete \
\( mpr:grad -white-threshold 20% -fill "gray(20%)" -opaque white +write t1.png \) \
\( mpr:grad -black-threshold 20% -white-threshold 40% -fill "gray(40%)" -opaque white +write t2.png \) \
\( mpr:grad -black-threshold 40% -white-threshold 60% -fill "gray(60%)" -opaque white +write t3.png \) \
\( mpr:grad -black-threshold 60% -white-threshold 80% -fill "gray(80%)" -opaque white +write t4.png \) \
\( mpr:grad -black-threshold 80% +write t5.png \) \
null:

结果:

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。