per il caso 1-D che fare con un insieme di vettori, i altre risposte indicano le soluzioni corrette (che includono il riempimento del vettore più breve con gli zeri o l'esecuzione dell'aggiunta utilizzando un sottoindice nel vettore più lungo). Tuttavia, dal momento che hai menzionato in un commento che in definitiva desideri aggiungere due immagini in scala di grigi, ho pensato di mostrarti una soluzione 2D più generale per le matrici.
In primo luogo, io caricare alcuni built-in immagini di esempio MATLAB e ottenere le loro dimensioni:
image1 = rgb2gray(imread('peppers.png'));
image2 = imread('cameraman.tif');
[r1, c1] = size(image1);
[r2, c2] = size(image2);
Si noti che ho convertito l'immagine RGB in scala di grigio primo utilizzo rgb2gray
. Poi, farò una nuova matrice di zeri cui dimensione è la massima delle dimensioni delle due immagini:
newImage = zeros(max(r1, r2), max(c1, c2), 'uint8');
Si noti che ho incluso 'uint8'
nella chiamata a zeros
, dal momento che si desidera che la matrice di zeri a essere dello stesso tipo delle immagini in modo che le operazioni successive su di esse funzionino correttamente. La matrice newImage
ora è abbastanza grande da contenere una delle due immagini. Infine, le immagini possono essere aggiunte alla nuova immagine in questo modo:
newImage(1:r1, 1:c1) = image1; % Insert image 1
newImage(1:r2, 1:c2) = newImage(1:r2, 1:c2)+image2; % Add image 2
e si possono visualizzare con il seguente:
imagesc(newImage);
colormap(gray);
NOTA: Una cosa importante da considerare è il tipo che usi per le immagini. Normalmente, i dati di immagine caricati in MATLAB sono di tipo uint8
. Tuttavia, si può notare che l'aggiunta di due immagini intero senza segno a 8 bit come ho fatto sopra può portare a saturazione in cui i pixel superano il valore di 255 (il valore massimo per un intero senza segno a 8 bit). Il risultato è che le parti dell'immagine appaiono di un bianco brillante e perdono i dettagli (notare alcuni dei peperoni che si sovrappongono all'immagine più piccola sopra). Si consiglia di evitare ciò ridimensionando i valori nelle immagini prima di aggiungerli o convertendo le immagini in digitare double
per eseguire le operazioni e ridimensionarle prima di salvare nuovamente l'immagine.
Cool. È perché ho 2 matrici, che in realtà sono immagini in scala di grigi che vorrei aggiungere. Quindi ora mi piacerebbe generalizzare la soluzione alle matrici =) – Louise
-1: in alcuni casi ha senso matematico. –
sì, ad esempio, quando si trattano segnali come vettori (indica la z-transform) –