回答
如果尺寸相同,則可以將多個圖像存儲在矩陣中。 但是,如果圖像尺寸不同,則應將圖像存儲在cell
中。這種方法不太麻煩,因爲您不必擔心以後如何提取它們。
定義一個大小等於圖像數的單元。
numImages = 3;
Images = cell(1,numImage);
存儲圖像I
進入細胞:
Images{1,1} = I;
現在走在圖像上,並顯示他們
for ii = 1:3
imshow(Images{1,ii});
end
例子:
I = imread('cameraman.tif');
J = imread('peppers.png');
K = imread('snowflakes.png');
Images = cell(1,3);
Images{1,1} = I;
Images{1,2} = J;
Images{1,3} = K;
for ii=1:numel(Images)
figure;imshow(Images{1,ii});
end
爲了更好地理解你錯過了哪些點/這裏發生了什麼:使用方括號在這裏像串聯一樣工作。太行
i = [I, J, K] % separated with commas or spaces for horzcat
i = [I; J; K] % separated with semi-colons for vertcat
i = horzcat(I, J, K);
i = vertcat(I, J, K);
比方說I, J, K
是64×64的灰度值圖像。 (水平)級聯會創建一個64x192矩陣。 for
循環將按照列方式遍歷矩陣,這意味着它將提取192倍的64x1向量(對於較大的圖像可能更常見,這可能會覺得像「無限」)。只顯示imshow()
的矢量不會顯示任何內容。
正如已經指出的那樣,使用單元格是一種更靈活的方式來存儲圖像。當使用數組你必須處理每個維度(如果您的圖片大小相等方有效):
sizeImage = size(I); % assume all img are same size (as I)
numImages = 3; % needed for allocating array
% init array for imgs and fill images into array: e.g. 64x64x3
imageArray = zeros([sizeImage numImages]);
imageArray(:,:,1) = I; % :,: selects all elements of a dimension
imageArray(:,:,2) = J;
imageArray(:,:,3) = K;
for n = 1:numImages % iterate over image index
figure; imshow(imageArray(:,:,n)); % n = 1, 2 ... , numImages
end % is used for position in imageArray
使用冒號:
訪問陣列時/細胞選擇維度的所有元素。例如。 imageArray(:,:,n)
將選擇第一維和第二維的所有元素,對應於64x64圖像。對於RGB圖像,包含3幅圖像的陣列將爲64x64x3x3,您必須使用imageArray(:,:,:,n)
來選擇全部三個顏色通道。
請注意,使用for i = img_array
將不起作用,因爲這會再次提供向量。
E.g.爲img_array
:64x64x5(5×64灰度值圖像),這將遍歷所有,但一個尺寸(以及分配剩餘暗淡i
):img_array(:,1,1)
,img_array(:,2,1)
,img_array(:,3,1)
,...,img_array(:,1,2)
,img_array(:,2,2)
...,img_array(:,64,5)
,並且將再次產生用於i
的64 * 3 = 192個載體。
正如已經指出的那樣,如果您有可變圖像大小,使用單元陣列就是這種方式。您可能想諮詢:Difference between cell and matrix in matlab?
- 1. 意外無限循環
- 2. 意外的無限循環出現
- 3. python無限循環意外結束
- 4. ViewPropertyAnimator意外循環
- 5. 意外的無限循環爲一個while語句
- 6. 在迅速操場斷裂(意外)無限循環
- 7. Apache kafka消費者對意外消息的無限循環
- 8. C++子類和operator =:無限循環和意外調用
- 9. 無限循環?
- 10. 無限循環:
- 11. 無限循環
- 12. 無限循環
- 13. 無限循環
- 14. 無限循環
- 15. 無限循環
- 16. 無限循環
- 17. (?無限)循環
- 18. 無限循環?
- 19. 無限循環...?
- 20. 無限循環
- 21. 無限循環
- 22. 無限循環
- 23. 無限循環
- 24. while循環意味着第一次循環後無限凍結
- 25. loop()函數之外的無限循環
- 26. 意外的循環終止
- 27. 意外keyword_end每循環
- 28. For循環意外行爲
- 29. 意外的循環行爲
- 30. 無限FOR循環