使用powershell过滤黑白照片

时间:2017-11-06 14:12:15

标签: powershell

对于我的工作,我们有时会处理几千张照片。但是只有带文字的照片(例如扫描文件)对我们来说很重要,所以我们只想要黑白照片(黑色照片可能很轻)。

这实际上是一种在我们让ocr工具松散之前过滤照片的方法。

所以经过一些谷歌搜索后,我认为我需要从图片中的每个像素计算RGB值,并且"纯粹"白色和"纯净"黑色。

我发现:Get Color Palette of Image using PowerShell

但不知道如何继续前进到我可以说的地方:这个图像主要由白色和黑色像素组成。

简而言之:

  1. 获取每个像素的rgb值的二维表
  2. 计算白色/黑色的像素数量,如果大于x%是白色,那么它很好,如果出现任何其他颜色则不好。

1 个答案:

答案 0 :(得分:3)

黑色,白色(和灰色阴影)的特点是饱和度非常低,因此您可以使用 ImageMagick (作为单线)来获得平均值或峰值饱和度,看看是否超过低门槛。

假设你的图像被称为image.jpg,这将告诉你图像的平均饱和度 - 表示为0(纯黑色和白色)和100(完全饱和色)之间的数字:

convert image.jpg -colorspace HSL -channel S -separate -format "%[fx:int(100*mean)]" info:

所以,如果我制作饱和的蓝色图像:

convert -size 100x100 xc:blue blue.jpg

enter image description here

并测试它,我得到100:

convert blue.jpg -colorspace HSL -channel S -separate -format "%[fx:int(100*mean)]" info:
100

然而,如果我做一个黑白渐变:

convert-size 100x100 gradient:black-white  gradient.jpg

enter image description here

并测试它,我得到零饱和度(没有颜色):

convert gradient.jpg -colorspace HSL -channel S -separate -format "%[fx:int(100*mean)]" info:
0

您可以像这样阅读 ImageMagick 命令... “打开输入图像并将其转换为色调,饱和度和亮度而不是RGB。选择饱和度通道并将其分开out - 丢弃Hue和Lightness。然后告诉我该通道的平均值缩放到0-100范围内的整数。“

如果您安装v7或更好的 ImageMagick ,请在命令中将convert更改为magick - 或勾选标有“安装旧版工具版本的复选框“安装时。