2017-01-30 25 views
3

Не могу понять, как работает colormap и как он используется.Как работает colormap

Я выполняю задание программирования, где мне предоставляется код, в котором используется colormap, однако я не могу понять, что именно он выполняет.

Вот сгущенное код:

colormap(gray); 
h = imagesc(display_array, [-1 1]); 

Здесь display_array содержит интенсивности пикселов в оттенках серого.

this Я прочитал статью и немного понимать, что colormap представляет собой матрицу с любым количеством строк и столбцов 3 со значениями между 0 и 1.

Я проверил значения интенсивности пикселей в изображении в градациях серого и нашел значения между -1 и 2. Теперь я не могу понять, как происходит mapping между этим изображением и colormap, как упомянуто в вышеупомянутой статье. Просто идея высокого уровня, как это произойдет, поможет.

ответ

5

При отображении изображения необходимо установить связь между данными значениями и цветом пикселей на экране, которые соответствуют этим значениям. Это цель цветовой карты. Это буквально maps значение данных до цвет.

Как это происходит, зависит от границ цвета осей. Пределы цвета указывают, какое значение ваших данных будет сопоставлено первому значению в цветовой палитре и которое должно сопоставляться с последним значением в цветовой палитре. Вы можете настроить эти пределы для данного axes через свойство CLim или через функцию caxis.

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

set(gca, 'CLim', [min(display_array(:)), max(display_array(:))]) 

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

Вы можете использовать функцию colormap, чтобы указать любую цветовую карту, которую вы хотите. grey - это просто встроенная цветовая палитра для изображений в оттенках серого. Формат цветовой карты состоит в том, что каждая строка содержит три элемента (красный, зеленый, синий), а нижний предел цвета сопоставляется с первой записью, верхний предел цвета отображается последним, а данные отображаются линейно ко всем цветам, которые могут появляются между ними.

В приведенном выше примере вы указали пределы цвета as the second input argument to imagesc и вручную вынудили их быть [-1 1]. Это означает, что теперь -1 сопоставляется с первым значением в цветовой палитре (черный), а 1 сопоставляется с последним (белый). Поскольку у вас есть значения больше 1, все эти значения будут вынуждены быть белыми, так как верхний предел цвета равен 1.

+0

Спасибо за объяснение. У моего изображения есть значения между '-1' и' 0', как указано в вопросе, но ваше неправильное толкование помогло мне понять его еще лучше. – shiva

+0

Я просто не могу понять одну вещь, которую вы написали: 'Вы можете настроить эти пределы для заданных осей', о которых мы говорим осями? – shiva

+0

@shiva Оси, содержащие изображение. – Suever