Matlab `imread` читает в некоторых изображениях все нули - PullRequest
0 голосов
/ 24 февраля 2020

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

Неудачные изображения различаются по своему:

  • расширению файла (PNG, JPG)
  • цветовому пространству (RGB, серый)
  • цветовой профиль (sRGB IEC61966-2.1, калиброванное цветовое пространство RGB, профиль Generi c Grey Gamma 2.2)

Однако я успешно читаю в других изображениях PNG и JPG в цветовых пространствах RGB и Grey. У меня нет ни одного случая успешного чтения цветового профиля sRGB IEC61966-2.1, хотя, опять же, не все изображения с ошибками имеют этот профиль. Я не вижу шаблонов расширения файла, цветового пространства и т. Д. c. это отличает неудачу от успешно прочитанных.

Я пробовал следующее:

  • [img, map, alpha] = imread('fname.png');. Во всех случаях это создает матрицы с нулем для img, map и alpha.
  • , делая расширение файла явным, например imread('fname.png', 'png');. Результат тот же.

Я использую Matlab 2019b на macOS Catalina.

Есть предложения, что может вызвать сбой некоторых изображений и как успешно их импортировать?

1 Ответ

3 голосов
/ 24 февраля 2020

Связанные вами изображения содержат канал альфа-прозрачности, поэтому простое чтение с использованием imread() не вернет данные изображения. Вы должны прочитать изображение, используя дополнительные параметры , как определено на странице справки :

[imRGB, map, alpha] = imread('AcbK5pRoi.png');

, где imRGB будет содержать изображение RGB и Alpha будет содержать данные о прозрачности. Вы можете использовать переменную imRGB как обычное изображение.

...