Преобразование серии растровых изображений в оттенки серого

1168
The Vivandiere

У меня есть серия файлов изображений BMP, содержащих данные в кодировке RGB. Мне нужно преобразовать все эти изображения в их эквиваленты в оттенках серого. Я рассмотрел два подхода к этому, оба оказались недостаточными.

1) Я пытался использовать IrfanView и Gimp. В обоих программах мне удалось загрузить отдельные изображения, преобразовать их в оттенки серого и сохранить изображение в оттенках серого. Однако, поскольку у меня есть 500 изображений, этот подход неосуществим, поскольку ни один из них не позволяет мне применять операцию RGBTogreyscale ко всей серии изображений

2) Я попробовал Matlab. Однако мои файлы по какой-то причине не совместимы с Matlab. простой imread в Matlab не смог загрузить файлы изображений.

imgdata = imread('myimg.bmp') % gives error saying that 'Bitfield compression not supported' 

Какие-либо предложения?

2
Как примечание для других людей, попадающих сюда: в GIMP можно автоматизировать подобные задачи через интерактивную консоль Python. jsbueno 9 лет назад 0

4 ответа на вопрос

3
ebrious

Я бы порекомендовал Imagemagick. Это утилита командной строки, которая чрезвычайно гибка со многими поддерживаемыми функциями. Одним из которых является преобразование в оттенки серого.

Смотрите этот пост для более:

http://www.imagemagick.org/Usage/color_mods/

ТЛ; др

convert test.png -type GrayScale grey_type.png 

Чтобы установить Imagemagick, здесь есть все виды двоичных файлов:

http://www.imagemagick.org/script/binary-releases.php

Вы можете изменить свою ссылку на эту страницу: http://www.imagemagick.org/Usage/color_mods/ dlemstra 9 лет назад 0
@dlemstra Договорились и сделали, спасибо! ebrious 9 лет назад 0
2
galacticninja

In Irfanview, go to 'File' » 'Batch Conversion' (or press the hotkey, B), add all files to be converted, check 'Use advanced options', then click on the 'Advanced' button, and check 'Convert to grayscale', like so:

screenshot of described configuration above

This should allow a batch conversion of multiple bitmap images to grayscale. You can also batch convert to any of the image file formats supported by Irfanview, e.g. BMP, PNG, GIF, JPG, etc.

1
Fit Nerd

Even though there is an accepted answer, thought I would give my 2 cents.

If you just want to convert to grayscale using default conversion method, IrfanView does the job. However, for those who might want to specify exactly how the colors are to be converted to grayscale I thought I will mention the program I use.

It is commercial, but allows one to specify how much Red, Green, and Blue contribute, as well as allows one to use Lightness or Intensity "channels" of other color models like HSL and HSI to achieve conversion: Batch Image Processor In addition it has various options for saving grayscale images: 8-Bit Bitmap, 8-Bit PNG, 8-Bit GIF, and some others. And if you need, it has a host of other image processing functions like brightness, contrast, etc.

So my take is that if you just want to convert to grayscale using some default implementation, use IrfanView, but if you need more flexibility, options, and perhaps want to compose different batch processing actions together, use more professional tool like the one I mentioned.

0
The Vivandiere

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