看樓主的要求,似乎沒樓上說的那麽復雜。
樓主只是要求把四幅圖片變成同樣大小然後拼接起來就是了。
如果上述理解無誤,那麽實現並不困難,主要有以下幾點需要註意:
1、圖像格式:由於圖像格式包括索引色和真彩色這兩大類不同的類型,所以需要統壹轉換壹下才能拼接。這兩類圖像的判斷根據是讀入的數據是二維還是三維,對於二維的數據,如果調色板為空,則按照灰度圖像處理。
2、數據格式:根據具體的圖像文件格式不同,讀入的數據可能是logical、uint8、uint16、uint32、single、uint64、double?等不同的格式,要想進行拼接,需要轉換為同壹種數據類型。
3、註意圖像的寬高順序:512*384的圖像應為[384 512]。
參考代碼
%?待拼接文件imfile?=?{'1.jpg',?'2.jpg',?'3.gif',?'4.png'};
%?讀入文件,並調整大小、轉換格式
A?=?cell(2,2);
for?i=1:4
%?讀入圖像數據
[X,?map]?=?imread(imfile{i});
if?size(X,3)?==?1
%?有些灰度圖像無map數據
if?isempty(map)
map?=?gray;
end
%?轉換為真彩色
X?=?ind2rgb(X,map);
end
%?調整圖像大小,並轉換數據格式
A{i}?=?im2double(?imresize(X,?[384?512])?);
end
%?拼接圖像並顯示
A?=?[A{1}?A{2};?A{3}?A{4}];
imshow(A)