圖像的讀寫與基本操作
目錄
- 圖像的讀寫與基本操作
- 目標
- 知識點
- 1. 圖像的讀寫 :
- 2. 圖像的縮放 :
- 3. 圖像的翻轉 :
- 4. 圖像的裁剪 :
- 5. 顏色空間轉換 :
- 示例代碼
- 1. 圖像的讀寫 :
- 2. 圖像的縮放 :
- 3. 圖像的翻轉 :
- 4. 圖像的裁剪 :
- 5. 顏色空間轉換 :
- 練習 :
- 1. 讀取一張彩色圖像,將其旋轉90度并保存 :
- 2. 將圖像裁剪為原尺寸的一半,顯示并保存 :
- 3. 將彩色圖像轉換為HSV顏色空間并顯示 :
目標
掌握MATLAB中圖像的讀寫、縮放、裁剪、翻轉和顏色空間轉換等基本操作。
知識點
1. 圖像的讀寫 :
? 讀取圖像 :○ 使用 imread 函數讀取圖像文件。○ 支持多種格式,如 JPG、PNG、BMP 等。
? 保存圖像 :○ 使用 imwrite 函數保存圖像文件。○ 可以指定保存的格式和壓縮參數。
2. 圖像的縮放 :
? 使用 imresize 函數按比例縮放圖像。
? imresize(img, scale):按比例縮放。
? imresize(img, [height, width]):指定目標尺寸。
3. 圖像的翻轉 :
? 旋轉圖像 :○ 使用 imrotate 函數旋轉圖像。○ imrotate(img, angle):順時針旋轉指定角度。
? 翻轉圖像 :○ 使用 fliplr 函數左右翻轉。○ 使用 flipud 函數上下翻轉。
4. 圖像的裁剪 :
? 使用矩陣索引裁剪感興趣區域。
? croppedImg = img(y1:y2, x1:x2, :):裁剪彩色圖像的感興趣區域。
? croppedImg = grayImg(y1:y2, x1:x2):裁剪灰度圖像的感興趣區域。
5. 顏色空間轉換 :
? RGB轉灰度 :○ 使用 rgb2gray 函數將彩色圖像轉換為灰度圖像。
? RGB轉HSV :○ 使用 rgb2hsv 函數將彩色圖像轉換為HSV顏色空間。
? HSV轉RGB :○ 使用 hsv2rgb 函數將HSV圖像轉換為RGB圖像。
示例代碼
1. 圖像的讀寫 :
matlab
% 讀取圖像
img = imread('peppers.png'); % 讀取彩色圖像
grayImg = imread('cameraman.tif'); % 讀取灰度圖像
% 保存圖像
imwrite(img, 'output.png'); % 保存為PNG格式
imwrite(img, 'output.jpg', 'jpg'); % 保存為JPG格式
解釋 :
? imread 函數用于讀取圖像文件,返回一個矩陣表示圖像。
? imwrite 函數用于保存圖像,可以指定格式和壓縮參數。
運行結果:
2. 圖像的縮放 :
matlab
% 縮放到原尺寸的50%
scaledImg = imresize(img, 0.5);
figure; imshow(scaledImg); title('Scaled Image (50%)');
% 調整圖像大小為 400x600
resizedImg = imresize(img, [400, 600]);
figure; imshow(resizedImg); title('Resized Image (400x600)');
解釋 :
? imresize 函數可以按比例縮放圖像,也可以指定目標尺寸。
? 縮放因子小于1時,圖像會縮小;大于1時,圖像會放大。
運行結果:
3. 圖像的翻轉 :
matlab
% 旋轉圖像
rotatedImg = imrotate(img, 90); % 順時針旋轉90度
figure; imshow(rotatedImg); title('Rotated Image (90 degrees)');
% 左右翻轉
flippedImg = fliplr(img);
figure; imshow(flippedImg); title('Flipped Image (Left-Right)');
解釋 :
? imrotate 函數用于旋轉圖像,第二個參數是旋轉角度。
? fliplr 函數用于左右翻轉圖像,flipud 函數用于上下翻轉圖像。
運行結果:
4. 圖像的裁剪 :
matlab
% 裁剪感興趣區域
croppedImg = img(100:200, 150:250, :); % 裁剪彩色圖像
figure; imshow(croppedImg); title('Cropped Color Image');
% 裁剪灰度圖像
croppedGray = grayImg(50:150, 100:200);
figure; imshow(croppedGray); title('Cropped Grayscale Image');
解釋 :
? 使用矩陣索引,可以方便地裁剪出感興趣區域。
? 對于彩色圖像,需要指定三個通道;灰度圖像只需指定行和列。
運行結果:
5. 顏色空間轉換 :
matlab
% RGB轉灰度
grayImg = rgb2gray(img);
figure; imshow(grayImg); title('Grayscale Image');
% RGB轉HSV
hsvImg = rgb2hsv(img);
figure; imshow(hsvImg); title('HSV Image');
% HSV轉RGB
rgbImg = hsv2rgb(hsvImg);
figure; imshow(rgbImg); title('RGB Image');
解釋 :
? rgb2gray 函數將彩色圖像轉換為灰度圖像。
? rgb2hsv 和 hsv2rgb 函數用于在RGB和HSV顏色空間之間轉換。
運行結果:
練習 :
1. 讀取一張彩色圖像,將其旋轉90度并保存 :
matlab
% 讀取圖像
img = imread('peppers.png');
% 旋轉圖像
rotatedImg = imrotate(img, 90);
% 保存圖像
imwrite(rotatedImg, 'rotated_peppers.png');
運行結果:
2. 將圖像裁剪為原尺寸的一半,顯示并保存 :
matlab
% 讀取圖像
img = imread('peppers.png');
% 裁剪圖像
croppedImg = img(1:end/2, 1:end/2, :);
% 顯示圖像
figure; imshow(croppedImg); title('Cropped Image');
% 保存圖像
imwrite(croppedImg, 'cropped_peppers.png');
運行結果:
3. 將彩色圖像轉換為HSV顏色空間并顯示 :
matlab
% 讀取圖像
img = imread('peppers.png');
% 轉換為HSV
hsvImg = rgb2hsv(img);
% 顯示圖像
figure; imshow(hsvImg); title('HSV Image');
運行結果: