Đối với trường hợp 1-D đối phó với một tập hợp các vectơ, các câu trả lời khác chỉ ra các giải pháp chính xác (liên quan đến việc đệm vectơ ngắn hơn với số không hoặc thực hiện phép cộng bằng cách sử dụng một con trỏ vào vector dài hơn). Tuy nhiên, vì bạn đã đề cập trong một nhận xét rằng cuối cùng bạn muốn thêm hai hình ảnh màu xám cùng nhau, tôi nghĩ tôi sẽ cho bạn thấy một giải pháp 2-D tổng quát hơn cho ma trận.
Trước tiên, tôi sẽ tải một số built-in hình ảnh mẫu MATLAB và nhận được kích thước của chúng:
image1 = rgb2gray(imread('peppers.png'));
image2 = imread('cameraman.tif');
[r1, c1] = size(image1);
[r2, c2] = size(image2);
Chú ý rằng tôi chuyển đổi hình ảnh RGB thành trắng đen đầu tiên sử dụng rgb2gray
. Tiếp theo, tôi sẽ làm một ma trận mới của zero có kích thước là tối đa kích thước của hai hình ảnh:
newImage = zeros(max(r1, r2), max(c1, c2), 'uint8');
Chú ý rằng tôi bao gồm 'uint8'
trong cuộc gọi đến zeros
, kể từ khi bạn muốn các ma trận của zero đến có cùng loại với hình ảnh của bạn để các hoạt động tiếp theo trên chúng hoạt động chính xác. Ma trận newImage
hiện đủ lớn để chứa một trong hai hình ảnh. Cuối cùng, những hình ảnh có thể được thêm vào hình ảnh mới như vậy:
newImage(1:r1, 1:c1) = image1; % Insert image 1
newImage(1:r2, 1:c2) = newImage(1:r2, 1:c2)+image2; % Add image 2
Và bạn có thể xem chúng như sau:
imagesc(newImage);
colormap(gray);
LƯU Ý: Một điều quan trọng cần xem xét là loại bạn sử dụng cho hình ảnh. Thông thường, dữ liệu hình ảnh được tải vào MATLAB là loại uint8
. Tuy nhiên, bạn có thể nhận thấy rằng việc thêm hai số nguyên không dấu 8-bit như tôi đã làm ở trên có thể dẫn đến độ bão hòa nơi các pixel vượt quá giá trị 255 (giá trị lớn nhất cho số nguyên không dấu 8 bit). Kết quả là các phần của hình ảnh trông có màu trắng sáng và mất chi tiết (chú ý một số hạt ớt chồng lên hình ảnh nhỏ hơn ở trên). Bạn có thể muốn tránh điều này bằng cách mở rộng các giá trị trong hình ảnh của bạn trước khi thêm chúng hoặc bằng cách chuyển đổi hình ảnh của bạn thành loại double
để thực hiện các thao tác và sau đó mở rộng chúng trước khi lưu lại hình ảnh.
mát. Đó là bởi vì tôi có 2 ma trận, mà thực sự là những hình ảnh tỷ lệ xám tôi muốn thêm vào. Vì vậy, bây giờ tôi muốn khái quát hóa giải pháp của bạn cho ma trận =) – Louise
-1: nó có ý nghĩa toán học trong một số trường hợp. –
vâng, ví dụ, khi xử lý tín hiệu dưới dạng vec-tơ (có nghĩa là z-biến đổi) –