Extract values from colormap
47 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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];
0 Kommentare
Akzeptierte Antwort
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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Blue finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!