Как я могу массово преобразовать изображения без цвета в оттенки серого?

У меня есть каталог, содержащий очень большое количество изображений JPG (сканирование бумажных документов), которые в настоящее время являются sRGB.

Многие, но не все из них на самом деле не имеют цвета или имеют цвет только в качестве фона (например, цветная бумага или слегка беловатый скан).

Я хотел бы массово преобразовать эти изображения (но не изображения с реальным цветом) в оттенки серого, чтобы сэкономить место на диске.

Я предполагаю, что есть способ сделать это с помощью ImageMagick, но я не знаю, как это сделать. Предложения?


person Sai    schedule 13.04.2014    source источник


Ответы (1)


Утилита Imagemagick mogrify была бы самым простым решением.

mogrify -path /path/to/output/dir/ -colorspace Gray /path/to/source/files

Возможность определить, какой документ квалифицируется как настоящие цвета, может быть очень локализована. Я бы посоветовал оценить количество цветов для каждого изображения и преобразовать только те изображения, которые опускаются ниже заданного порога.

THRESHOLD=1024
FILES=`ls /path/to/source/files`
for FILE in ${FILES}; do
COLORS=`identify -format %k "$FILE"`
if [[ $COLORS -lt $THRESHOLD ]]; then
  mogrify -path /path/to/output/dir/ -colorspace Gray "$FILE"
fi

Также может быть целесообразно оценить параметры предварительной обработки для уменьшения шума. Монохромный применить проще всего, но существуют другие отличные решения.

person emcconville    schedule 14.04.2014