我正在尝试从大型灰度TIF文件中提取(非常)大量的子图像,并使用MATLAB将每个图像保存为GIF,PNG或其他TIF。我可以使用imshow(sub(:,:,1),cmap)
显示单个图像,但是当我尝试将数据写入图像文件时,生成的文件只是白色方块101x101像素。使用cmap
中的imwrite
参数会产生相同的结果,就像更改图像格式一样(我尝试过使用PNG,TIF,GIF和JPG而没有运气)。根据Windows资源管理器中的属性菜单,文件a.tif
为16位。任何帮助表示赞赏。我真的很想结束这个。
% Import coordinates array and correct for multiplication by 10
datafile = 'data.xlsx';
coords = xlsread(datafile,1,'G2:H13057');
x = coords(:,1) ./ 10;
y = coords(:,2) ./ 10;
r = 50;
[img, cmap] = imread('a.tif'); % import the image
s = 2*r+1; % scalar of size of each submatrix in the array (sise of image)
sub = zeros(s,s,num); % create 3D matrix/array of matrices. Each submatrix corresponds to 50 px box around each point
i = 1:4;
subrgb = zeros(s,s,num);
for i=1:4
sub(:,:,i) = img((y(i)-r):(y(i)+r),(x(i)-r):(x(i)+r));
filename = 'dot_%d.png';
filename = sprintf(filename,i);
imwrite(sub(:,:,i),filename,'png');
end
答案 0 :(得分:0)
尝试更改行:
sub = zeros(s,s,num);
为:
sub = zeros(s,s,num,class(img));
我认为问题是sub是double类型。
祝你好运