RMagick图像转换

时间:2019-01-14 03:50:43

标签: ruby-on-rails ruby imagemagick rmagick

在破解一个简单的项目时,我陷入了RMagick问题的一天。由于我对RMagick很陌生,因此需要建议。

我正在尝试扫描用户上传的图像,并尝试将图像捕捉/选择到实际内容所在的特定区域。但是用户可能会用手机或其他设备拍摄图像,并最终给图像增加很多噪音。

从用户上传的示例image如下所示。

我试图将图像转换为像波纹管这样的greyscale

 img.quantize(2, GRAYColorspace, false)

但是转换时会产生很大的噪声(image)。有人能建议我如何只选择包含上载图像中实际信息的截面/矩形吗?

下面是我要弄污双手的方法。

  • get_pixels
  • find_similar_region
  • adaptive_threshold

1 个答案:

答案 0 :(得分:1)

在ImageMagick命令行中,可以使用-negate(反转颜色)和-lat(局部区域阈值)将其转换为二进制(黑白),这可能更多。 RMagick中应该有等效的命令。

输入: enter image description here

convert t2.jpg -negate -lat 20x20+10% -negate result.png


enter image description here

添加:

请注意,上面生成的图像中有一些黑点。您需要先使用-connected-components过滤掉它们,然后才能将图像修整为黑框。

convert t2.jpg -negate -lat 20x20+10% -negate -type bilevel \
-define connected-components:area-threshold=10 \
-define connected-components:mean-color=true \
-connected-components 4 \
-bordercolor white -border 1x1 \
-fuzz 15% -trim +repage \
result.png


enter image description here