dla przypadku 1-D do czynienia ze zbiorem wektorów, z inne odpowiedzi wskazują poprawne rozwiązania (polegające na wypełnianiu krótszego wektora zerami lub dodawaniu za pomocą subindeksu do dłuższego wektora). Ponieważ jednak wspomniałeś w komentarzu, że ostatecznie chcesz dodać dwa obrazy w skali szarości, pomyślałem, że pokażę ci bardziej ogólne rozwiązanie 2D dla macierzy.
Najpierw załadować kilka wbudowanych w obrazach przykładowych MATLAB i uzyskać ich rozmiary:
image1 = rgb2gray(imread('peppers.png'));
image2 = imread('cameraman.tif');
[r1, c1] = size(image1);
[r2, c2] = size(image2);
Zauważ, że przekształcony obraz RGB na skalę szarości pierwszym użyciem rgb2gray
. Następnie zrobię nową macierz zer, których rozmiar jest maksymalna od wielkości dwóch obrazów:
newImage = zeros(max(r1, r2), max(c1, c2), 'uint8');
Zauważ, że zawarte 'uint8'
w wywołaniu zeros
, ponieważ chcesz macierz zer do być tego samego typu co obrazy, aby kolejne operacje na nich działały poprawnie. Macierz jest teraz wystarczająco duża, aby pomieścić jedno z dwóch obrazów. Wreszcie, obrazy mogą być dodawane do nowego obrazu tak:
newImage(1:r1, 1:c1) = image1; % Insert image 1
newImage(1:r2, 1:c2) = newImage(1:r2, 1:c2)+image2; % Add image 2
I można zobaczyć je z następujących czynności:
imagesc(newImage);
colormap(gray);
UWAGA: Jedna ważna rzecz rozważ to typ, jakiego używasz do obrazów. Zwykle dane obrazu ładowane do MATLAB mają typ uint8
. Jednak możesz zauważyć, że dodanie dwóch 8-bitowych bez znaku liczby całkowitej, tak jak to zrobiłem powyżej, może spowodować nasycenie, w którym piksele przekraczają wartość 255 (maksymalna wartość dla 8-bitowej liczby całkowitej bez znaku). Powoduje to, że części obrazu wyglądają na jaskrawe białe i tracą szczegóły (zauważ, że niektóre z papryczek pokrywają mniejszy obrazek powyżej). Można tego uniknąć, skalując wartości na obrazach przed ich dodaniem lub konwertując obrazy na typ double
, aby wykonać operacje, a następnie skalując je przed ponownym zapisaniem obrazu.
cool. To dlatego, że mam 2 matryce, które w rzeczywistości są obrazami w skali szarości, które chciałbym dodać. Więc teraz chciałbym uogólnić twoje rozwiązanie na macierze =) – Louise
-1: w niektórych przypadkach ma to sens matematyczny. –
tak, na przykład, traktuje sygnały jako wektory (czyli z-transform) –