在影像處理中,常見需求是對彩色圖像的 RGB 三個通道分別進行灰度值統計與變換,再將處理後的通道合成回彩色圖像。許多初學者在 MATLAB 中提取通道、修改直方圖後,不知如何正確重組為彩色影像。
MATLAB 讀入的彩色圖像本身就是三維矩陣(行 × 列 × 3),第三維直接對應 R、G、B 三個通道。因此,無需手動統計灰度頻率再重建,直接對通道矩陣運算即可。
f = imread('fruit.jpg'); % 讀取彩色圖像
% 直接操作三個通道
f(:,:,1) = f(:,:,1) + 10; % 紅色通道整體亮度增加 10
f(:,:,2) = f(:,:,2) + 10; % 綠色通道
f(:,:,3) = f(:,:,3) + 10; % 藍色通道
% 顯示或保存結果
imshow(f);
imwrite(f, 'fruit_modified.jpg');
通道數值範圍為 0~255,加法運算可能導致溢位。建議使用 imadd 或手動限幅:
f(:,:,1) = min(f(:,:,1) + 20, 255);
% 或使用飽和運算
f = imadd(f, 20);
MATLAB 中彩色圖像處理的核心在於理解三維矩陣結構。直接對 f(:,:,1)、f(:,:,2)、f(:,:,3) 進行算術運算,即可實現通道級別的亮度、對比度調整,最後矩陣本身即為合成後的彩色圖像,無需額外合成步驟。