如何使用 IMAGEMAGICK 转换获得图像的投影轮廓?

Posted

技术标签:

【中文标题】如何使用 IMAGEMAGICK 转换获得图像的投影轮廓?【英文标题】:How to get projection profile of image using IMAGEMAGICK convert? 【发布时间】:2021-11-01 01:26:35 【问题描述】:

例如,我复制了一篇论文,PDF pg 24:

https://uknowledge.uky.edu/cgi/viewcontent.cgi?article=1055&context=cs_etds



我想使用“转换”来获取“x”配置文件、“y”配置文件或同时获取“x,y”配置文件。配置文件将是每个像素桶中数据的像素计数,我们分别处于灰度或黑白模式 [0,1] 或 0,1。

附件是“投影配置文件”示例的 PNG。

convert pp.png pp.txt

有什么想法吗?

【问题讨论】:

我的回答解决了你的问题吗?如果是这样,请考虑接受它作为您的答案 - 通过单击计票旁边的空心对勾/复选标记。如果没有,请说出什么不起作用,以便我或其他人可以进一步帮助您。谢谢。 meta.stackexchange.com/questions/5234/… 【参考方案1】:

我从您的猜测命令中假设您需要文本输出,因此请尝试对 66 行投影进行此操作:

magick pp.png -threshold 50% -negate -crop x1 -format "%[fx:w*h*mean]\n" info:

输出

0
0
0
0
0
0
0
0
0
0
0
0
0
25
33
38
41
40
36
29
18
18
18
18
96
150
214
232
226
171
160
150
149
151
167
167
139
135
138
135
134
138
135
140
160
212
233
181
18
18
18
18
17
17
17
17
17
30
34
31
2
0
0
0
0
0

该命令应该是不言自明的。 -negate 是反转图像并计算黑色而不是白色像素。 -crop x1 是将图像拆分为单行,以便随后的 format 命令对每一行运行一次。 -format 命令将行中像素的平均值乘以行的面积,得到设置的像素数。


这对于 399 列投影:

magick pp.png -threshold 50% -negate -crop 1x -format "%[fx:w*h*mean]\n" info:

如果您想要图形、直方图样式的输出,您可以通过管道发送到gnuplot。以垂直投影为例:

magick pp.png -threshold 50% -negate -crop 1x -format "%[fx:w*h*mean]\n" info: | gnuplot -e 'plot "-" using 1: xtic(1) with histogram' -persist

请注意,您可以一次性完成水平和垂直投影,但这可能不值得麻烦和复杂。您可以在计数前加上 hv 并在 gnuplot 中过滤它们。或者您可以将水平投影写入fd:3,将垂直投影写入fd:4,然后在shell中分别将两者重定向到gnuplot的不同实例

【讨论】:

以上是关于如何使用 IMAGEMAGICK 转换获得图像的投影轮廓?的主要内容,如果未能解决你的问题,请参考以下文章

imagemagick:调整大小后如何获取图像大小?

ImageMagick:转换、裁剪、调整大图像

如何将命令 imagemagick 转换为 php 代码?

ImageMagick:转换以保持转换后图像的相同名称

将PDF转换为图像时,ImageMagick会更改颜色

如何在 Imagemagick 中禁用颜色转换