對於處理一組向量的一維情況,其他答案指出正確的解決方案(涉及用零填充較短的向量或使用子索引添加到較長的向量中執行加法)。但是,由於您在評論中提到您最終想要將兩個灰度圖像添加到一起,因此我認爲我會向您展示矩陣的更一般的二維解決方案。
首先,我會加載一些內置的MATLAB樣本圖像,並得到它們的大小:
image1 = rgb2gray(imread('peppers.png'));
image2 = imread('cameraman.tif');
[r1, c1] = size(image1);
[r2, c2] = size(image2);
請注意,我轉換的RGB圖像灰度首先使用rgb2gray
。接下來,我將做零,其尺寸爲最大的兩個圖像的尺寸中的一個新的矩陣:
newImage = zeros(max(r1, r2), max(c1, c2), 'uint8');
請注意,我在調用zeros
包括'uint8'
,既然你想零到矩陣與您的圖像類型相同,以便後續對它們的操作能夠正常工作。矩陣newImage
現在足夠大以包含兩個圖像中的任何一個。最後,圖像可以被添加到新的圖像,像這樣:
newImage(1:r1, 1:c1) = image1; % Insert image 1
newImage(1:r2, 1:c2) = newImage(1:r2, 1:c2)+image2; % Add image 2
而且你可以用下面查看它們:
imagesc(newImage);
colormap(gray);
注:一個重要的事情考慮是你使用的圖像類型。通常情況下,加載到MATLAB中的圖像數據類型爲uint8
。但是,您可能會注意到,如上所述添加兩個8位無符號整數圖像可能會導致飽和,其中像素數超過255(8位無符號整數的最大值)。結果是圖像的部分看起來很亮白,並且失去了細節(注意一些與上面小圖像重疊的辣椒)。您可能希望通過在添加圖像之前縮放圖像中的值來避免這種情況,或者通過將圖像轉換爲double
來執行操作,然後在重新保存圖像前對其進行縮放。
酷。這是因爲我有2個矩陣,其實是我想補充的灰度圖。所以現在我想推廣你的解決方案矩陣=) – Louise 2009-12-21 12:19:37
-1:它在某些情況下在數學上有意義。 – 2014-06-28 01:46:29
是是的話,例如,治療信號作爲向量時(意味着Z變換) – 2016-12-22 04:18:15