2013-03-08 3 views
1

У меня есть два разных изображения спутников с различными полосами. То, что я хочу видеть, - это разница между пикселями. Для этого я вычитал значения двух изображений. В результате у меня есть новое изображение с разностными значениями (в случае группы). Я не знаю, было бы возможно, но я бы классифицировал эти значения в цветах. Например, если разница составляет от 0 до 20, я хочу, чтобы пиксель был смещен как синий, зеленый, если он идет от 30 до 40 и красный, если он выше сорока. Можно ли сделать это?Классификация изображений Matlab по цветам

Заранее благодарен!

ответ

0
img=rand(300,200)*256; // test image 
image(img) 
colorbar 

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

Обратите внимание, что image принимает матрицу со значениями от 0 до 255 в качестве аргумента, в то время как цветная карта по умолчанию содержит 64 записи, поэтому каждая из них будет использоваться для четырех смежных значений. Однако цветовая карта может иметь 256 строк.

Просто переопределять цветовую палитру, например, так:

myMap = [repmat([0 0 1],20,1); ... %# blue for first 20 values 
     repmat([0 1 0],20,1); ... %# green for next 20 
     repmat([1 1 0.5],216,1)]; %# bright yellow for the rest 
colormap(myMap); 

(Это предполагает, что ваши ценности изображений масштабируются от 0 до 255. Если количество строк в палитре, чем здесь, является значение в изображении, colormap будет масштабироваться, а метки в цветовой панели не будут соответствовать значениям изображения. Однако вы можете создать цветовой код с рядом строк, соответствующих наивысшему значению (если < = 255), чтобы он соответствовал. помощь image и colormap для получения более подробной информации, если не уверены.)

+0

Thankyou arne! У меня проблемы, потому что значения от 0,001 до 1, и я попытался изменить его, но я не получаю точно результат (я тоже умножал изображение * 256) – user1578688

+0

@ user1578688 В чем проблема? Это с самыми высокими значениями? (Тогда попробуйте умножить на 255). Или что слишком много низких значений сгруппированы вместе? (Тогда, возможно, сделайте нелинейное масштабирование, например, взяв квадратный корень из значений перед умножением на 255. Значки цветной панели также могут быть установлены вручную, если это необходимо.) –

+0

Привет! Наибольшее значение - 500 (значения от 0 до 500). изображение (roug) colorbar myMap = [repmat ([0 0 1], 50,1); ...% # синий для первых 20 значений repmat ([0 1 0], 180,1); ...% # зеленый для следующих 20 repmat ([1 1 0.5], 500,1)]; % # ярко-желтый для остальных colormap (myMap); Проблема в том, что первый цвет повторяется. – user1578688

Смежные вопросы