Für den 1-D Fall mit einem Satz von Vektoren zu tun, die andere Antworten weisen auf die richtigen Lösungen hin (wobei der kürzere Vektor mit Nullen aufgefüllt wird oder die Addition unter Verwendung eines Subindex in den längeren Vektor durchgeführt wird). Da Sie jedoch in einem Kommentar erwähnt haben, dass Sie letztendlich zwei Graustufenbilder zusammenfügen möchten, dachte ich, ich würde Ihnen eine allgemeinere 2-D-Lösung für Matrizen zeigen.
Zuerst werde ich einige eingebaute in MATLAB Beispielbilder laden und ihre Größe bekommen:
image1 = rgb2gray(imread('peppers.png'));
image2 = imread('cameraman.tif');
[r1, c1] = size(image1);
[r2, c2] = size(image2);
Beachten Sie, dass ich das RGB-Bild umgewandelt erste rgb2gray
mit Graustufen. Als nächstes werde ich eine neue Matrix von Nullen, deren Größe das Maximum der Größen der beiden Bilder machen:
newImage = zeros(max(r1, r2), max(c1, c2), 'uint8');
Beachten Sie, dass ich 'uint8'
zu zeros
im Aufruf enthalten, da Sie die Matrix von Nullen wollen Sie müssen denselben Typ wie Ihre Bilder haben, damit nachfolgende Operationen an ihnen ordnungsgemäß funktionieren. Die Matrix newImage
ist jetzt groß genug, um eines der beiden Bilder zu enthalten.
newImage(1:r1, 1:c1) = image1; % Insert image 1
newImage(1:r2, 1:c2) = newImage(1:r2, 1:c2)+image2; % Add image 2
Und Sie können sie mit dem folgenden Modus: Schließlich können die Bilder, die auf das neue Bild wie so hinzugefügt werden
imagesc(newImage);
colormap(gray);
![enter image description here](https://i.stack.imgur.com/LMAxc.jpg)
HINWEIS: Eine wichtige Sache zu Betrachten Sie den Typ, den Sie für die Bilder verwenden. Normalerweise sind Bilddaten, die in MATLAB geladen werden, vom Typ uint8
. Möglicherweise stellen Sie jedoch fest, dass das Hinzufügen von zwei vorzeichenlosen 8-Bit-Ganzzahlbildern wie oben zu einer Sättigung führen kann, wenn Pixel den Wert 255 überschreiten (der Maximalwert für eine 8-Bit-Ganzzahl ohne Vorzeichen). Das Ergebnis ist, dass Teile des Bildes hellweiß aussehen und Details verlieren (beachten Sie einige der Paprikaschoten, die das kleinere Bild oben überlappen). Sie können dies vermeiden, indem Sie die Werte in Ihren Bildern skalieren, bevor Sie sie hinzufügen, oder indem Sie Ihre Bilder in den Typ double
konvertieren, um die Operationen auszuführen und sie dann zu skalieren, bevor Sie das Bild erneut speichern.
kühlen. Es ist, weil ich 2 Matrixen habe, die tatsächlich Graustufenbilder sind, die ich hinzufügen möchte. So, jetzt möchte ich Ihre Lösung auf Matrixen verallgemeinern =) – Louise
-1: es macht in einigen Fällen mathematisch Sinn. –
Ja, zum Beispiel, wenn Signale als Vektoren behandelt werden (bedeutet die Z-Transformation) –