Extract values from colormap

47 Ansichten (letzte 30 Tage)
eddie
eddie am 12 Okt. 2023
Kommentiert: eddie am 13 Okt. 2023
Hi everyone. I have an image where each pixel has a specific color. Each color represents a range for values, let's say: brown (value from 0 to 0.3), yellow (from 0.3 to 0.6) and green (from 0.6 to 0.9). The idea is to extract the corresponding value depending on the color for each pixel. Therefore, what I did was: Load the image using imread or readgeoraster, create a colormap. What I should do next is to define a range of values for every color and then extract the corresponding values.
% Load the image
[RasterName,RasterPath]=uigetfile('.tif','Select file');
[A,R]=readgeoraster([RasterPath,RasterName]);
p=R.ProjectedCRS;
[x,y]=worldGrid(R);
[lat,lon]=projinv(p,x,y);
InfoRaster=geotiffinfo([RasterPath,RasterName]);
RR=InfoRaster.GeoTIFFTags.GeoKeyDirectoryTag;
% Create a colormap
c1=[183,119,5]/255;
c2=[242,242,0]/255;
c3=[214,225,0]/255;
c4=[193,211,0]/255;
c5=[172,196,0]/255;
c6=[150,181,0]/255;
c7=[129,167,0]/255;
c8=[108,152,0]/255;
c9=[87,138,0]/255;
c10=[66,123,0]/255;
c11=[44,108,0]/255;
c12=[23,94,0]/255;
cmap=createcolormap(c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12);
% Define range of values for every color
color_range_1=[183,119,5,255,0.00,0.10];
color_range_2=[242,242,0,255,0.11,0.20];
color_range_3=[214,225,0,255,0.21,0.30];
color_range_4=[193,211,0,255,0.31,0.40];
color_range_5=[172,196,0,255,0.41,0.50];
color_range_6=[150,181,0,255,0.51,0.60];
color_range_7=[129,167,0,255,0.61,0.70];
color_range_8=[108,152,0,255,0.71,0.80];
color_range_9=[87,138,0,255,0.81,0.90];
color_range_10=[66,123,0,255,0.91,1.00];
color_range_11=[44,108,0,255,1.01,1.10];
color_range_12=[23,94,0,255,1.11,1.20];

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 12 Okt. 2023
Put your color_range information together into one 12 x 6 array. Extract the first 3 columns, divide by 255 to get colors in the range 0 to 1. Use those as the colormap parameter with the image and rgb2ind(). The result should be an array of indices into the color_range array, which you can then use to pull out the range columns.
  3 Kommentare
Walter Roberson
Walter Roberson am 13 Okt. 2023
range_min = Data(X, 5);
range_max = Data(X, 6);
eddie
eddie am 13 Okt. 2023
Many thanks for your help!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by