将图像转换为黑白图像以在 R 中进行图像识别

Converting Images to Black and White for Image Recognition in R

我正在尝试获得一些自动文本识别的经验,我正在使用包 tesseract 对某些文本执行 ocr图片(即我拍摄的一些屏幕截图)。

为了提高程序识别下图中价格的性能,我使用 magick 包[=32] 对图像 进行了一些预处理=] 通过改变亮度和饱和度参数来增加图像的对比度。

不过,我认为通过转换为 黑白 图像可以进一步提高性能。

如何在 R 中有效地实现这一点?

原图

预处理后

您可以使用 magick::image_quantize:

转换色彩空间
library(magick)
#> Linking to ImageMagick 6.9.9.25
#> Enabled features: cairo, fontconfig, freetype, fftw, lcms, pango, rsvg, webp
#> Disabled features: ghostscript, x11

i <- image_read('https://i.stack.imgur.com/nn9k0.png')

i

i %>% image_quantize(colorspace = 'gray')

根据你想要的图片结构,你也可以使用image_convert做同样的事情:

i %>% image_convert(colorspace = 'gray')
# or
i %>% image_convert(type = 'Grayscale')

或转换为真正的黑白(非灰度),

i %>% image_convert(type = 'Bilevel')

在这种情况下 returns 带有椒盐噪声的图像,可能有用也可能没用。

但是请注意,虽然这对于 OCR 来说可能是一个很好的做法,但通过网络抓取来获取这些数据会简单得多,例如rvest should it be permissible (presumably the same issues apply to grabbing these images). Better, should it contain the information you need, is to use the appropriate RyanAir API.

在 ImageMagick 命令行中,您可以简单地以某个百分比作为阈值。我在这里使用了 50%,但可以根据需要进行调整。

convert image.png -threshold 50% result.png

在Imagick中,命令是Imagick::thresholdImage。参见 http://php.net/manual/en/imagick.thresholdimage.php。抱歉,我不知道您使用的是哪个 "Magick" 软件包。