сохранение серых изображений в формате JPEG с помощью Matlab imwrite - PullRequest
0 голосов
/ 30 октября 2011

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

У меня есть серое (черно-белое) изображение 'grayimage', которое я хочу сохранить с помощью функции imwrite в Matlab с использованием формата JPEG.Я использую следующий синтаксис:

imwrite(grayimage,cmap, 'imagename.jpg', 'jpeg');

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

Кто-нибудь может подсказать, что я делаю неправильно и какие параметры / параметры мне не хватает в imwrite?

Я думал о преобразовании изображения в RGB и сохранении его в формате jpeg.Это поможет?

Ответы [ 3 ]

3 голосов
/ 30 октября 2011

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

I = ind2gray(grayimage,cmap);
imwrite(I,'imagename.jpg');
3 голосов
/ 30 октября 2011

Откуда берется ваша карта? Вероятно, это «цветная» цветовая карта. Попробуйте использовать серую карту цветов:

cmap = colormap('gray');
imwrite(grayimage,cmap, 'imagename.jpg', 'jpeg');

Больше информации на карте цветов: http://www.mathworks.se/help/techdoc/ref/colormap.html

0 голосов
/ 30 октября 2011

Добро пожаловать в мир сжатия с потерями .

Если вы просто хотите использовать jpeg в градациях серого, возможно, проще всего будет установить программу jpegtrans и использовать опцию -grayscale дляСкрипт с каналом цветности изображения:

colorful jpeg converted to grayscale using jpegtrans

Лучшим вариантом будет вывод с использованием формата сжатия без потерь например png .

(Благодаря странице Википедии по сжатию с потерями для цветного изображения идеального размера, с которым можно поиграться.)

...