簡體   English   中英

使用MATLAB以全分辨率將許多圖像的蒙太奇圖像保存為一個大圖像文件

[英]Using MATLAB to save a montage of many images as one large image file at full resolution

我正在嘗試使用MATLAB函數imwrite保存許多(〜500個,每個2MB)圖像的蒙太奇,但是我不斷收到此錯誤:

Error using imwrite>validateSizes (line 632)
Images must contain fewer than 2^32 - 1 bytes of data.
Error in imwrite (line 463)
validateSizes(data);

這是我正在使用的代碼:

close all
clear all
clc
tic
file = 'ImageRegistrations.txt';
info = importdata(file);
ImageNames = info.textdata(:,1);
xoffset = info.data(:,1);
yoffset = info.data(:,2);
for i = 1:length(ImageNames);
ImageNames{i,1} = imread(ImageNames{i,1});
ImageNames{i,1} = flipud(ImageNames{i,1});
end
ImageNames = flipud(ImageNames);

for i=1:length(ImageNames)
    diffx(i) = xoffset(length(ImageNames),1) - xoffset(i,1);
end
diffx = (diffx)';
diffx = flipud(diffx);

for j=1:length(ImageNames)
    diffy(j) = yoffset(length(ImageNames),1) - yoffset(j,1);
end
diffy = (diffy)';
diffy = flipud(diffy);
matrix = zeros(max(diffy)+abs(min(diffy))+(2*1004),max(diffx)+abs(min(diffx))+(2*1002));
%matrix(1:size(ImageNames{1,1},1),1:size(ImageNames{1,1},2)) = ImageNames{1,1};
for q=1:length(ImageNames)
matrix((diffy(q)+abs(min(diffy))+1):(diffy(q)+abs(min(diffy))+size(ImageNames{q,1},1)),(diffx(q)+abs(min(diffx))+1):((diffx(q)+abs(min(diffx))+size(ImageNames{q,1},2)))) = ImageNames{q,1};
end

graymatrix = mat2gray(matrix);
graymatrix = flipud(graymatrix);
figure(2)
imshow(graymatrix)
imwrite(graymatrix, 'montage.tif')
toc

我使用imwrite是因為它可以將最終蒙太奇保留在完整分辨率的文件中,而如果我僅單擊圖形文件上的保存,則會將其保存為低分辨率文件。

謝謝!

錯誤確實在錫紙上說了什么。 imwrite ,輸入變量的大小有某種內在的限制,您可以遍歷它。

請注意,大多數圖像都以uint8形式存儲,但是我想您會由於處理而最終加倍。 這增加了內存使用量。

因此,強制轉換為另一種類型可能會有所幫助。 在調用imwrite之前,嘗試使用im2uint8 (假設變量graymatrix是double,縮放范圍為0到1)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM