在Matlab中将alpha通道添加到geoTIFF图像

时间:2017-09-11 11:15:22

标签: matlab tiff alpha geotiff

尝试将alpha(透明度)通道添加到地理配准的tiff图像中的RGB数据。在一个单独的问题中,我被引导完成了创建geotiff的过程。代码的第一部分从附加的png文件(uk_dT.png)创建一个geotiff,第二部分从白色区域创建一个掩码,将其附加到RGB数据并尝试在重写geotiff之前修改相应的标记一个新文件。但是结果图像是空白的。我怀疑我对光度计'做错了。标签,但无法看到问题?

file = 'uk_dT.png' ; 
[path,name,ext] = fileparts(file) ;

I = imread(file) ;
I = flipud(I);

lonmin = -17; lonmax = 10; latmin = 47; latmax = 63;

% Write to geotiff
R = georasterref('RasterSize',size(I),'LatitudeLimits',[latmin,latmax],'LongitudeLimits',[lonmin,lonmax]);
tiffile = strcat(name,'.tif') ;
geotiffwrite(tiffile,I,R) ;

%% Now we have a geotiff but need transparency.

% Make alpha mask by identifying white regions
S = sum(I,3);
mask = 255*ones(size(I,1),size(I,2));
mask(S==765) = 0; % create mask
I = cat(3,I,mask); % concatenate alpha channel onto RGB data

info = geotiffinfo(tiffile); % reload RGB tiff data

% use Tiff tags to append alpha data
tiffile2 = strcat(name,'2.tif') ;
geotiffwrite(tiffile2,I,R,'GeoKeyDirectoryTag', ...
  info.GeoTIFFTags.GeoKeyDirectoryTag,'TiffTags', ...
  struct('ExtraSamples',Tiff.ExtraSamples.AssociatedAlpha, ...
  'Photometric',Tiff.Photometric.Separated));

编辑:在更多地解决了这个问题之后,似乎无法在Matlab中添加alpha通道到geoTIFF(至少没有一些聪明的解决方法),原因有两个:

1:'光度测定'标签应设置为' RGB',因为我们创建的颜色空间是RGB + alpha。但是,geotiffwrite中存在一个互锁,当此标记设置为RGB时,它会阻止您编写除x * y * 3数组之外的任何内容。我上面使用的代码(在网上找到的代码)通过使用'分隔'来解决错误。相反,但这与CMYK色彩空间有关,所以肯定不是正确的设置。

2:您设置了' ExtraSamples'标记以通知除RGB数据之外的其他内容。但在我见过的其他例子中,您还必须设置“SamplePerPixel”'标记为4以反映这一点。 Geotiffwrite不会将此识别为有效标记。事实上,深入了解geotiffwrite代码并查看有效的标签,与tiff()命令相比,只有一小部分可用选项。

我希望被证明是错的,但似乎我必须在外部包中手动加载数百个文件并将白色区域更改为透明!

0 个答案:

没有答案