Changeset 27606


Ignore:
Timestamp:
02/22/23 07:30:10 (2 years ago)
Author:
Mathieu Morlighem
Message:

CHG: enable MOG or other geotif images

Location:
issm/trunk-jpl/src/m/plot
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/plot/plot_overlay.m

    r27402 r27606  
    4242        xlim=getfieldvalue(options,'xlim',[min(x) max(x)])/getfieldvalue(options,'unit',1);
    4343        ylim=getfieldvalue(options,'ylim',[min(y) max(y)])/getfieldvalue(options,'unit',1);
     44        if exist(options, 'axis');
     45                myaxis = getfieldvalue(options,'axis');
     46                xlim = [myaxis(1), myaxis(2)];
     47                ylim = [myaxis(3), myaxis(4)];
     48        end
    4449        options=addfielddefault(options,'xlim',xlim);
    4550        options=addfielddefault(options,'ylim',ylim);
     
    4853contrast = getfieldvalue(options,'contrast',1); 
    4954radar    = md.radaroverlay.pwr;
    50 if size(radar,3)>1,
    51         disp('WARNING: color image converted to greyscale intensity image');
    52         if strcmp(class(radar),'uint8'),
    53                 radar=double(sum(radar,3))/(255*3);
    54         else
    55                 radar=sum(radar,3)/3;
     55
     56if ~radaronly
     57        if size(radar,3)>1,
     58                disp('WARNING: color image converted to greyscale intensity image');
     59                if strcmp(class(radar),'uint8'),
     60                        radar=double(sum(radar,3))/(255*3);
     61                else
     62                        radar=sum(radar,3)/3;
     63                end
    5664        end
     65        if getfieldvalue(options,'backgroundbtw',0)
     66                radar(find(radar==0))=1; %Change background from black to white
     67        end
     68        radar = radar.^(contrast);
     69        radar = radar./max(radar(:));
    5770end
    58 if getfieldvalue(options,'backgroundbtw',0)
    59         radar(find(radar==0))=1; %Change background from black to white
    60 end
    61 radar = radar.^(contrast);
    62 radar = radar./max(radar(:));
    6371
    6472if getfieldvalue(options,'backgroundbtw',0)
     
    101109
    102110%Special colormaps that require hsv treatment
    103 colorm=getfieldvalue(options,'colormap','Rignot');
     111colorm=getfieldvalue(options,'colormap','parula');
    104112if strcmpi(colorm,'Rignot') | strcmpi(colorm,'Seroussi') | strcmpi(colorm,'redblue')
    105113        if strcmpi(colorm,'Rignot'),
     
    133141        image_rgb=hsv2rgb(image_hsv);
    134142else
    135         colorm = getcolormap(options);
    136         len    = size(colorm,1);
     143        if radaronly
     144                image_rgb = radar;
     145        else
     146                colorm = getcolormap(options);
     147                len    = size(colorm,1);
    137148
    138         ind = ceil((len-1)*(data_grid-data_min)/(data_max - data_min + eps) +1);
    139         ind(find(ind>len))=len;
    140         image_rgb=zeros(size(data_grid,1),size(data_grid,2),3);
    141         r=colorm(:,1); image_rgb(:,:,1)=r(ind); clear r;
    142         g=colorm(:,2); image_rgb(:,:,2)=g(ind); clear g;
    143         b=colorm(:,3); image_rgb(:,:,3)=b(ind); clear b;
     149                ind = ceil((len-1)*(data_grid-data_min)/(data_max - data_min + eps) +1);
     150                ind(find(ind>len))=len;
     151                image_rgb=zeros(size(data_grid,1),size(data_grid,2),3);
     152                r=colorm(:,1); image_rgb(:,:,1)=r(ind); clear r;
     153                g=colorm(:,2); image_rgb(:,:,2)=g(ind); clear g;
     154                b=colorm(:,3); image_rgb(:,:,3)=b(ind); clear b;
    144155
    145         %Now add radarmap
    146         r = image_rgb(:,:,1).*radar;  r(data_nan) = radar(data_nan);  image_rgb(:,:,1) = r;  clear r;
    147         g = image_rgb(:,:,2).*radar;  g(data_nan) = radar(data_nan);  image_rgb(:,:,2) = g;  clear g;
    148         b = image_rgb(:,:,3).*radar;  b(data_nan) = radar(data_nan);  image_rgb(:,:,3) = b;  clear b;
     156                %Now add radarmap
     157                r = image_rgb(:,:,1).*radar;  r(data_nan) = radar(data_nan);  image_rgb(:,:,1) = r;  clear r;
     158                g = image_rgb(:,:,2).*radar;  g(data_nan) = radar(data_nan);  image_rgb(:,:,2) = g;  clear g;
     159                b = image_rgb(:,:,3).*radar;  b(data_nan) = radar(data_nan);  image_rgb(:,:,3) = b;  clear b;
     160        end
    149161end
    150162
  • issm/trunk-jpl/src/m/plot/radarpower.m

    r26663 r27606  
    100100        %}}}
    101101else %user provided image {{{
     102
    102103        %user provided an image. check we also have overlay_xlim and overlay_ylim  options, to know what range of coordinates the image covers.
    103         if (~exist(options,'overlay_xlim') | ~exist(options,'overlay_xlim')| ~exist(options,'overlay_xposting')| ~exist(options,'overlay_yposting')),
    104                 error('radarpower error message: please provide overlay_xlim, overlay_ylim, overlay_xposting and overlay_yposting options together with overlay_image option');
     104        filename = getfieldvalue(options,'overlay_image');
     105        [filepath,name,ext] = fileparts(filename);
     106        if ~exist(filename)
     107                error([filename ' not found']);
    105108        end
    106         overlay_image=getfieldvalue(options,'overlay_image');
    107         overlay_xlim=getfieldvalue(options,'overlay_xlim');
    108         overlay_ylim=getfieldvalue(options,'overlay_ylim');
    109         overlay_xposting=getfieldvalue(options,'overlay_xposting');
    110         overlay_yposting=getfieldvalue(options,'overlay_yposting');
    111109
    112         sizex=floor((x1-x0)/overlay_xposting);
    113         sizey=floor((y1-y0)/overlay_yposting);
    114         topleftx=floor((x0-overlay_xlim(1))/overlay_xposting); % x min
    115         toplefty=floor((overlay_ylim(2)-y1)/overlay_yposting); % y max
     110        %Is it a geotiff?
     111        if strcmp(ext,'.tiff') || strcmp(ext,'.tif')
    116112
    117         %Read and crop file
    118         disp('Warning: expecting coordinates in polar stereographic (Std Latitude: 70ºN Meridian: 45º)');
    119         im=imread(overlay_image);
    120         %adjust contrast and brightness
    121         %im=imadjust(im,[a b],[c d]);
    122         im=im(toplefty:toplefty+sizey,topleftx:topleftx+sizex);
    123         md.radaroverlay.pwr=double(flipud(im));
    124         md.radaroverlay.x=(x0:(x1-x0)/(size(md.radaroverlay.pwr,2)-1):x1);
    125         md.radaroverlay.y=(y0:(y1-y0)/(size(md.radaroverlay.pwr,1)-1):y1);
     113                %Crop image from xylim
     114                tempfilename='./temp.tif';
     115                eval(['!gdal_translate -quiet -projwin ' num2str(x0) ' ' num2str(y1) ' ' num2str(x1) ' ' num2str(y0) ' ' filename ' ' tempfilename]);
     116
     117                %Read in temp.tif:
     118                im=imread('temp.tif','TIFF');
     119                %adjust contrast and brightness
     120                %im=imadjust(im,[a b],[c d]);
     121                pixelskip=max(1,ceil(posting/((x1-x0)/(size(im,2)))));
     122                %md.radaroverlay.pwr=double(flipud(im(1:pixelskip:end,1:pixelskip:end,:)));
     123                md.radaroverlay.pwr=double(im(1:pixelskip:end,1:pixelskip:end,:))/255;
     124                md.radaroverlay.x=x0:(x1-x0)/(size(md.radaroverlay.pwr,2)-1):x1;
     125                md.radaroverlay.y=y1:-(y1-y0)/(size(md.radaroverlay.pwr,1)-1):y0;
     126
     127                %Erase image or keep it?
     128                if ~getfieldvalue(options,'keep_image',0),
     129                        delete(tempfilename);
     130                end
     131        else
     132                if (~exist(options,'overlay_xlim') | ~exist(options,'overlay_xlim')| ~exist(options,'overlay_xposting')| ~exist(options,'overlay_yposting')),
     133                        error('radarpower error message: please provide overlay_xlim, overlay_ylim, overlay_xposting and overlay_yposting options together with overlay_image option');
     134                end
     135                overlay_xlim=getfieldvalue(options,'overlay_xlim');
     136                overlay_ylim=getfieldvalue(options,'overlay_ylim');
     137                overlay_xposting=getfieldvalue(options,'overlay_xposting');
     138                overlay_yposting=getfieldvalue(options,'overlay_yposting');
     139                overlay_image=getfieldvalue(options,'overlay_image');
     140
     141                sizex=floor((x1-x0)/overlay_xposting);
     142                sizey=floor((y1-y0)/overlay_yposting);
     143                topleftx=floor((x0-overlay_xlim(1))/overlay_xposting); % x min
     144                toplefty=floor((overlay_ylim(2)-y1)/overlay_yposting); % y max
     145
     146                %Read and crop file
     147                disp('Warning: expecting coordinates in polar stereographic (Std Latitude: 70ºN Meridian: 45º)');
     148                im=imread(overlay_image);
     149                %adjust contrast and brightness
     150                %im=imadjust(im,[a b],[c d]);
     151                im=im(toplefty:toplefty+sizey,topleftx:topleftx+sizex);
     152                md.radaroverlay.pwr=double(flipud(im));
     153                md.radaroverlay.x=(x0:(x1-x0)/(size(md.radaroverlay.pwr,2)-1):x1);
     154                md.radaroverlay.y=(y0:(y1-y0)/(size(md.radaroverlay.pwr,1)-1):y1);
     155        end
    126156end %}}}
    127157
Note: See TracChangeset for help on using the changeset viewer.