欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MATLAB图像处理 (一)

程序员文章站 2022-07-11 11:39:57
...

最近在做关于计算机视觉图像处理的相关东西。总结一下知识点。

首先关于图像的知识,图像可以分为黑白照片或者彩色照片。每幅照片都是由一个个像素点构成。如果是彩色图像,则每幅图片可以分为RGB三通道分别表示。由于现在我们处理的几乎全是彩色图像,所以我们主要考虑彩色图像,暂不讨论黑白图像。我们拿下面这幅图像为例。顺便看看这个图像的属性。

MATLAB图像处理 (一)

MATLAB图像处理 (一)

一、读取文件提取RGB三通道

MATLAB读取文件可以分为读取图片和视频。我们这里是读取图片,等到读取视频的时候再总结视频。

读取图片文件使用imread(),里面填的是图片的名称或者是图片的地址。

 1 %读取图片
 2 image = imread('1.jpg');
 3 figure;
 4 subplot(2,2,1)
 5 imshow(image);
 6 title('原始图像');
 7  %提取图片的RGB三通道
 8 image_double = double(image);
 9 R = image_double(:,:,1);
10 G = image_double(:,:,2);
11 B = image_double(:,:,3);
12 %分别显示RGB三通道的图片信息
13 subplot(2,2,2);
14 imshow(uint8(R));
15 title('红色通道');
16 subplot(2,2,3);
17 imshow(uint8(G));
18 title('绿色通道');
19 subplot(2,2,4);
20 imshow(uint8(B));
21 title('蓝色通道');
View Code

这里直接使用一行代码就可以读取图片信息了。

MATLAB图像处理 (一)

MATLAB图像处理 (一)

可以在工作区看到原始图像image的信息。427*640*3,分别表示像素为高*宽为427*640,与图像信息相符合。3表示图片为RGB彩色图片。红绿蓝。原始图片的类型是uint8,所以将三个通道信息提取出来后为double类型,然后生成图像时在使用uint8格式转换。

二、RGB三通道合成原始图像

现在我们获得了RGB三个成分分量,现在我们将三个分量在合成为原始图像。

1 %RGb合成原始图像
2 mix(:,:,1) = R;
3 mix(:,:,2) = G;
4 mix(:,:,3) = B;
5 figure ;
6 imshow(uint8(mix));
7 title('合成图像');
View Code

MATLAB图像处理 (一)

全部代码如下:

代码一(直接提取RGB):

%读取图片
image = imread('1.jpg');
figure;
subplot(2,2,1)
imshow(image);
title('原始图像');
R1 = image(:,:,1);
G1 = image(:,:,2);
B1 = image(:,:,2);
%提取图片的RGB三通道
% image_double = double(image);
% R = image_double(:,:,1);
% G = image_double(:,:,2);
% B = image_double(:,:,3);
%分别显示RGB三通道的图片信息
subplot(2,2,2);
imshow(uint8(R1));
title('红色通道');
subplot(2,2,3);
imshow(uint8(G1));
title('绿色通道');
subplot(2,2,4);
imshow(uint8(B1));
title('蓝色通道');

%RGb合成原始图像
mix(:,:,1) = R1;
mix(:,:,2) = G1;
mix(:,:,3) = B1;
figure ;
imshow(uint8(mix));
title('合成图像');
View Code

代码二:

 1 %读取图片
 2 image = imread('1.jpg');
 3 figure;
 4 subplot(2,2,1)
 5 imshow(image);
 6 title('原始图像');
 7  %提取图片的RGB三通道
 8 image_double = double(image);
 9 R = image_double(:,:,1);
10 G = image_double(:,:,2);
11 B = image_double(:,:,3);
12 %分别显示RGB三通道的图片信息
13 subplot(2,2,2);
14 imshow(uint8(R));
15 title('红色通道');
16 subplot(2,2,3);
17 imshow(uint8(G));
18 title('绿色通道');
19 subplot(2,2,4);
20 imshow(uint8(B));
21 title('蓝色通道');
22 
23 %RGb合成原始图像
24 mix(:,:,1) = R;
25 mix(:,:,2) = G;
26 mix(:,:,3) = B;
27 figure ;
28 imshow(uint8(mix));
29 title('合成图像');
View Code