从图像中删除特定大小的线条

时间:2018-02-06 11:11:11

标签: imagemagick

我在下面的图片中使用了以下imagemagick命令:

convert img.png -define morphology:compose=darken -morphology Thinning Rectangle:17x1+0+0\< tmp.png

这将从图像中删除所有行,但我只想删除每个块左上角数字右侧和底部的小水平和垂直线。我想保留主列和行。谁能告诉我怎么做? enter image description here

这就是我得到的(注意将图像内容划分为列和行的长行也消失了。我希望这些行留下来):enter image description here

2 个答案:

答案 0 :(得分:2)

我注意到脚本比线条更精细/更薄且更不规则,因此它更容易受到侵蚀技术的影响。考虑到这一点,我们可以抛弃这样的文字:

[1]  2  3  4  5 12 13 14 15

enter image description here

这是一个好的开始,但如果我们将其用作遮罩,我们将丢失原始图像中的长水平线。因此,我们可以通过将所有行投影到单像素宽的高列中并对所有超过80%白色的行进行阈值处理来找到所有这些行。然后将图像加宽回原始宽度。

v <- c(2,2,3,5,8,0,32,1,3,12,5,2,3,5,8,33,1)
x <- c(2,3,5,8)

enter image description here

现在组合两个面具,这样他们只会做你的小标题框的下边和右边。

convert vcards.png -colorspace gray -threshold 50% -morphology erode disk:1.5 +repage z1.png

enter image description here

最后,因为它可能在之前的处理过程中移动了一点,因此会掩盖一些,并将其应用到原始图像。

convert z1.png -colorspace gray -resize 1x\! +repage -threshold 80% -scale 810x1518\! +repage z2.png

enter image description here

它可以合并为一个命令,但我不会这样做,因为某些方面可能不适用于所有图像,虽然它们都是单独实现和记录的,但它们更易于单独改进或纠正。

答案 1 :(得分:0)

您可以将以下代码用于水平方向,对于垂直线可以稍作更改

magick 21.gif -monochrome ( +clone -negate -statistic median 219x1 ) -compose lighten -composite q1.png