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

StackOverflow https://stackoverflow.com//questions/23049228

Вопрос

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

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

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

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

Это было полезно?

Решение

Imagemagick's 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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top