Единственный способ воспроизвести ошибку, которую вы получаете, это когда map
- это двухэлементный вектор, в котором первый элемент больше второго. Прежде всего обратите внимание, что функция IMSHOW может вызываться со следующим синтаксисом:
imshow(I,[low high]);
, в котором I
- это изображение в градациях серого, а low
и high
указывают диапазон отображения для интенсивности пикселей. Дополнительный аргумент игнорируется, когда I
является изображением RGB, но даже тогда значение high
должно быть больше значения low
или выдается ошибка (та, которую вы видите выше).
Что сбивает с толку, так это то, почему map
будет двухэлементным вектором. При загрузке изображения с помощью IMREAD вывод map
будет либо пустым (если изображение не является индексированным изображением), либо будет цветовой картой N-3. Я не могу вспомнить ситуацию, когда встроенный IMREAD вернул бы аргумент map
всего с 2 элементами.
Исходя из того, что вы сказали, что работало , а теперь вдруг не работает, я бы предложил сначала проверить, не случайно ли вы создали m-файл где-то с именем imread
, Это может привести к вызову новой функции imread
вместо встроенной, что даст вам результаты, отличные от ожидаемых.