Matlab数字图像处理 01 图像数据的表示与基本运算

第一章 图像数据的表示与基本运算

  • 1.1 读取和显示图像文件
  • 1.2 图像类型与图像数据
    • 1.2.1 RGB真彩色图像
    • 1.2.2 索引图像
    • 1.2.3 灰度图像
    • 1.2.4 二值图像
    • 1.2.5 视频图像
  • 1.3 图像的数字化
  • 1.4 图像的坐标系
  • 1.5 图像的基本运算
  • 1.6 像素之间的位置关系
  • 1.7 Matlab中图像处理常用工具箱

1.1 读取和显示图像文件

clear;
clc;
%读一张彩色图像存在 i 
i = imread('lena.jpg');
%将彩色图像转换为灰度图像
igray = rgb2gray(i);
%把灰度图像保存为.jpg文件
imwrite(igray,'lena_gray.jpg');
% 显示变量i中的彩色图像,并为窗口添加标题
figure;imshow(i);
title('原始彩色图像');
%在新窗口中显示变量igray中表示的灰度图像,并为窗口添加标题
figure;imshow(igray);
title('转化后的灰度图像');

1.2 图像类型与图像数据

Matlab数字图像处理 01 图像数据的表示与基本运算_第1张图片

1.2.1 RGB真彩色图像

Matlab中用 M×N×3 的三维数组保存RGB真彩色图像数据。
Matlab数字图像处理 01 图像数据的表示与基本运算_第2张图片

改写彩色图像像素的RGB值

% 1.2 改写像素的RGB值
clear;
clc;
%查看一张彩色RGB image的信息
fileinfo = imfinfo('lena.jpg'); % 在命令行窗口中运行
i = imread('lena.jpg'); 
%%
i1 = i; % 将Image 信息复制到变量i1中
% 对像素 R  G  B 三个分量重新赋值,改变其颜色 lena.jpg 474*474*3 随便找一个点
i(200,200,1)=255;i(200,200,2)=0;i(200,200,3)=0;
%将修改后前后的两张图并排显示
figure; montage({i1,i});title('左侧为原始image|右侧为更改像素RGB分量后');
%%
%以像素(3060)为起点画 宽6100的水平红线
i(30:35,60:159,1)=255;
i(30:35,60:159,2)=0;
i(30:35,60:159,3)=0;
%以像素(5060)为起点画 宽6100的水平绿线
i(50:55,60:159,1)=0;
i(50:55,60:159,2)=255;
i(50:55,60:159,3)=0;
%以像素(70,60)为起点画 宽6100的水平蓝线
i(70:75,60:159,1)=0;
i(70:75,60:159,2)=0;
i(70:75,60:159,3)=255;

i2 = i(200:220,300:350,:);
i(100:120,200:250,:)= i2;  % 复制一部分
i = insertShape(i,'circle',[130,150,50],'LineWidth',5,'Color','yellow');
figure;
imshow(i);

1.2.2 索引图像

索引图像是一种把像素值直接作为RGB调色板下标的图像。索引图像可把像素值“直接映射”为调色板数值。

  • 一个M×N二维数组,用于保存每个像素的颜色索引值
  • 一个P×3二维数组,用于保存颜色映射表colormap,即像素颜色索引值所对应的颜色RGB分量
clear;
clc;
% 将RGB图像转换为索引图像 [i1,map]=rgb2ind(i,8,'nodither');
i = imread('index.jpg');
[i1,map]=rgb2ind(i,8,'nodither');
%显示结果
figure;imshow(i);title('RGB彩色图像OriginalRGBimage');
%显示转换后的索引图像,仔细比较二值之间的差异
figure;imshow(i1,map);title('索引图像Indexdimage');

Matlab数字图像处理 01 图像数据的表示与基本运算_第3张图片
Matlab数字图像处理 01 图像数据的表示与基本运算_第4张图片

clear;
clc;
[X,map]=imread('trees.tif');%读入一幅彩色索引图像
%显示图像figure;
imshow(X,map);title('索引图像Indexdimage');
%把索引图像转换为RGB彩色图像
Irgb=ind2rgb(X,map);
%显示得到的彩色图像
figure,imshow(Irgb);title('ConvertsindexedimagetoRGBimage');

1.2.3 灰度图像

灰度图像描述像素的灰度值(强度值、亮度值),Matlab中用一个M×N二维数组保存灰度图像数据。
RGB图像转换为灰度图像

% 1.2.3 灰度图像
clear;
clc;
i = imread('lena.jpg');
%把彩色图像转换为灰度图像
i1=rgb2gray(i);
%采用MATLAB向量运算方法实现彩色灰度图像转换
%将数据类型由uint8转换为double
id=double(i);
i2=0.299*id(:,:,1)+0.587*id(:,:,2)+0.114* id(:,:,3);
%将数据类型由double转换为uint8
i2=uint8(i2);
figure; montage({i1,i2});title('左侧为rgb2gry转化   |  右侧为MATLAB向量运算方法得到');

Matlab 向量运算方法
在这里插入图片描述

Matlab数字图像处理 01 图像数据的表示与基本运算_第5张图片

1.2.4 二值图像

二值图像(binaryimage)的每个像素值只能取两个离散值之一,这两个离散值一个代表“黑”、另一个代表“白”,真正是“非黑即白”,也可将二值图像看作特殊的灰度图像。
灰度图像转换为二值图像

% 1.2.3 灰度图像
clear;
clc;
i = imread('lena.jpg');
%把彩色图像转换为灰度图像
i1=rgb2gray(i);
%采用MATLAB向量运算方法实现彩色灰度图像转换
%将数据类型由uint8转换为double
id=double(i);
i2=0.299*id(:,:,1)+0.587*id(:,:,2)+0.114* id(:,:,3);
%将数据类型由double转换为uint8
i2=uint8(i2);
%将灰度图像转换为二值图像
i3 =imbinarize(i1);
%将原始彩色图像i 、 灰度图像 i2 、 二值图像i3在同一窗口中显示
figure;
subplot(1,3,1);imshow(i);title('RGB彩色图像');
subplot(1,3,2);imshow(i1);title('灰度图像');
subplot(1,3,3);imshow(i3);title('二值图像');

Matlab数字图像处理 01 图像数据的表示与基本运算_第6张图片

1.2.5 视频图像

视频图像是一组内容连续渐变的图像序列,视频中每幅图像称为帧(frame),每秒显示的图像帧数称为帧率(framerate,fps-framespersecond)。
视频文件的读取与图像帧抽取

% 视频文件的读取与图像帧抽取
clear;
clc;
vedio = VideoReader("romantic.mp4");
fps = vedio.FrameRate; %获取视频帧率
fprintf('fps=%d',fps); %显示输出视频帧率 
%读取视频文件中的每一帧图像并显示
while(hasFrame(vedio))
    vidFrame=readFrame(vedio);%从视频文件中读取一帧图像
    imshow(vidFrame,'Border','tight');%显示该帧图像
    pause(1/fps);%暂停指定时间,按帧率播放
end

Summary
Matlab数字图像处理 01 图像数据的表示与基本运算_第7张图片

1.3 图像的数字化

来自场景的光线,经相机光学镜头会聚后形成光影像,投射到图像传感器的靶面上,这个光影像本质上是一种时间和空间连续的二维光能量分布。为了把这个光影像转换成计算机可以操作的数字图像,需经过 空间采样、时间采样、像素值量化 三个主要步骤。

图像是一种特殊的二维信号,可以用二元函数 f (x,y) 表示。其中,灰度图像灰度图像可定义为一个二维函数f(x,y),这里x和y是定义域为平面的空间坐标,而在任何一对空间坐标(x,y)上的函数值(幅值)称为该点图像的强度(intensity)或灰度(grayscale)。

模拟图像与数字图像

模拟图象: 如果图像f(x,y)定义域(x,y)和值域均为连续值时,称其为模拟图像。
数字图像: 如果图像f(x,y)的定义域(x,y)和值域均为有限的离散数值时,称其为数字图像。

  1. 空间采样
    要想不失真地重构图像,采样频率应该大于等于模拟信号频谱中最高频率的2倍,即必须香农满足采样定理。
    采样间隔的大小选取要依据原图像中包含的细微浓淡变化来决定。一般,图像中细节越多,采样间隔应越小。
  2. 时间采样
    时间采样,也就是通常所说的曝光。曝光时间是指从快门打开到关闭的时间间隔,在这段时间内,视场内物体可以在图像传感器靶面上留下光影像。
  3. 像素值量化
    图像传感器把每个光电转换单元在曝光时间内所累积的电荷量,变换为对应电压值,然后经模数转换器(A/D转换器)量化为有限范围的整数,例如,采用8位无符号整数,量化后的像素值大小范围在0~255之间,共有256个灰度级。

**空间分辨率:**是图像中可辨别的最小细节的度量,依赖于成像面阵传感器的有效像素数,像素数越多,对细节的分辨和捕捉能力就越强,图像就越清晰。当然分辨率只是影响图像清晰度的重要因素之一。
**灰度分辨率:**是灰度图像像素明暗程度可分辨的最小变化,或彩色图像像素彩色分量强弱可分辨的最小变化。
Matlab数字图像处理 01 图像数据的表示与基本运算_第8张图片

1.4 图像的坐标系

Matlab数字图像处理 01 图像数据的表示与基本运算_第9张图片
一张image 可以用一个M×N 的二维数组表示,为描述每个像素在图像平面上的位置,建立通用的笛卡尔坐标系。其中选取左上角为坐标原点,轴垂直向下、对应数组行序,y轴水平向右、对应数组列序。
但是MATLAB约定图像坐标系缘点为图像左上角,x轴水平向右、对应数组列序,y轴垂直向下、对应数组行序。

示例:图像几何变换-旋转变换

% 图像几何变换-旋转变换
clear;
clc;
i = imread('lena.jpg');
i1 = imrotate(i,40,'bilinear','crop');%绕图像中心逆时针旋转40
%在同一窗口中显示旋转前、后的图像
figure;imshowpair(i,i1,'montage');title('原图像(左)|逆时针旋转结果(右)');

Matlab数字图像处理 01 图像数据的表示与基本运算_第10张图片

1.5 图像的基本运算

Matlab数字图像处理 01 图像数据的表示与基本运算_第11张图片

1.6 像素之间的位置关系

为便于界定参与运算的像素集合,常用“邻域”(neighborhood)描述像素之间的位置关系。假定某一像素p的坐标为(x,y),其邻域是指以坐标(x,y)为中心的一组相邻像素构成的集合。如:4-邻域、4-对角邻域、8-邻域、m×n矩形邻域等。
Matlab数字图像处理 01 图像数据的表示与基本运算_第12张图片

1.7 Matlab中图像处理常用工具箱

Matlab官网
Matlab数字图像处理 01 图像数据的表示与基本运算_第13张图片

你可能感兴趣的:(Matlab数字图像处理,matlab,图像处理,计算机视觉)