课程内容来源于B站天津理工大学数字图像处理-Digital Image Processing (DIP),网址https://www.bilibili.com/video/BV1tx41147Tx?from=search&seid=3384643095046528784

一.数字图像的基本概念

1.图像

在这里插入图片描述
在这里插入图片描述

上图中:
输出图像和内部图像平面是接近的:
为什么说是接近的?两个因素制约了:
1,成像系统-空间分辨率
能够把物体给摄录下来,那么它的分辨率是多少?
照相机的像素数。
一幅图的像素数目少,就很粗糙,形成的空间分辨率就很低。成像系统呈现的点数越多阵列越大,越能真实的显现当时物体的形状颜色。
2,颜色表示-
每一点的像素的颜色值是红绿蓝三原色构成的,因此要用红绿蓝三种颜色的浓度数目。

2.图形和图像的区别

计算机屏幕上显示出来的画面通常有两种描述方法:1,图形,2,图像
图形和图像在存储结构和表示方法上有着根本的区别

图形:
指令集合组成:
指令就是命令,命令在计算机里面就是一个语句,语句有语句的名称,比如Move to,Line to,还有位置形状颜色来描述的。
记录的是坐标-显示的坐标Move to,从哪里画到哪里。
颜色是隐含的。
比如画一条直线,Move to是在什么位置,Line to是到什么位置。
所以画一条图形线,是由命令来构成Move to,Line to,

图像:
没有命令,是一个大矩阵。里面的数据就是每一点的颜色值,他的坐标是隐含的。
矩阵里面,每个数的位置是隐含的,按规律来排列的,它显现的是颜色值,不是一条指令。

在计算机课程中,《计算机图形学》和《计算机图像处理学》是完全不同的意思。他俩的数据格式不同。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.数字图像的表示和图像数字化的精度

表示

左边是肉眼看到的,右边是计算机里面对这幅图像的表达-是数据-二维矩阵。
这幅图由9个像素构成,每个像素位置排列是固定的,在矩阵里面这个数的排列顺序已经固定好了,显示的数值就是它的颜色值,黑的就是0,白的数值是250。
在计算机中,在图像中它是一个矩阵,下标是它的位置信息,每一个元素矩阵里的元素叫做像素,每个像素的数值就是它的颜色值,颜色值是一个颜色表的索引值。
大矩阵中,从左到右是图像的宽度,从上到下是图像的高度,宽和高相乘就是图像的分辨率-图像的大小。

每个像素的值对应一个图像中的一个点。以后要对这个矩阵不断进行操作。后续课程是将图像的处理,进一步细说,就是讲它的数据的处理。这个数据是二维数据-数学矩阵。
后面对这个矩阵有很多处理方法。
f:代表该像素彩色或灰度值。脚标/下标代表像素的坐标位置,位置是隐含的,位置是已知量。

拍摄一个图像,涉及到拍摄设备的分辨率的影响,分辨率越高,越能逼真还原这个物体的形状颜色,分辨率越低,变形就越多。所以空间分辨率是它精细化的一个程度。

在这里插入图片描述
在这里插入图片描述
图像数字化的精度

图像空间分辨率:
拍摄一个图像,涉及到拍摄设备的分辨率的影响,分辨率越高,越能逼真还原这个物体的形状颜色,分辨率越低,变形就越多。所以空间分辨率是它精细化的一个程度。
灰度级分辨率:
能够识别多少种颜色。一个像素有一位来表示,那只能有两种颜色-0/1.如果一个像素用2位表示,就能识别4种,3位就是8种,8位就是256色。24位就是224次方种颜色。
灰度级分辨率也叫颜色深度。
真彩色就是24位。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.数字图像处理系统

数字图像处理系统就是从图像的采集到进行计算机处理到最后的输出。

压缩--非常重要的研究
照相机中存的图片都是jpg压缩格式,如果图像不进行压缩,那就会占用相当多的数据空间。
网上的视频也是经过压缩后再解压缩播放的,他压缩率越大,传过来速度就越快,看得越流畅。如果不压缩就会传过来很慢,会卡住。

在这里插入图片描述
在这里插入图片描述

5.数字图像处理的目的

1,提高图像的视感质量。
几何变换:
把图像放大,缩小,旋转,把图像镜像,
2, 提取图形中某些特征:
汽车牌照不是把整幅图去分析,是要分析车牌的号码,要识别这些号码,将不用的去掉以后,把一些我们需要的东西特征提取出来,作为识别的预处理。
这里面要学习平域的变换,把空间域变到平域里面去颜色变换,把区域找到,把物体的纹理,形状进行分析。
3,识别:
识别是在前面的基础上,提取了主要物体特征,看看跟我们计算机认可的这些库存特征是否一致。
具体的识别技术需要后续课程-模式识别课程来支持他,所以图像不单纯是一门独立的技术,他是一个混合的多方面多种技术的融合。



在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二.图像处理技术简介

1.简介

在这里插入图片描述

一般的图像处理过程:
预处理:
几何变换-放大缩小;增强-比如提高对比度,把感兴趣的进行加量突出显示或恢复一些我们原始的数据;

整个的学习过程,重点在预处理,分割上面,以及部分相关特征提取。

在这里插入图片描述

2.常用技术

在这里插入图片描述

  1. 图像获取,表示和表现
一般是专业公司来做,我们不作为主要研究课程。

在这里插入图片描述

  1. 图像复原
    在这里插入图片描述
什么模型:
就是什么原因造成它的一些缺陷,那么我们把这个原因找到,我弥补它,比如摄像机每次牌照曝光不好,我们在图像处理中根据曝光情况每次人为地加一些我们自己的算法来弥补它,消除退化原因。
比如运动造成的模糊图像也可以恢复为好的图像。
复原就是恢复原貌。

在这里插入图片描述

  1. 图像增强
图像增强的目的是增加质感,改善图像质量。
比如比较模糊的看不清的,用一些手段处理方法把它增强,比如增加对比度,增加亮度,所以说增强和恢复是两回事,恢复是恢复原貌,增强是我对感兴趣的部分提高它的画面质量,不一定非得要求恢复和原貌一样,不要求探究什么原因。
所以在增强过程中,由一幅图变成一幅满意的图,是反复试验的过程,然后选择合适的方法。所以图像增强和图像恢复是不同的,但是两者有重合部分。
  1. 图像分割
图像分割就是把我要的物体给提取出来,把不要的去掉,把感兴趣的留下来。

比如汽车牌照:
汽车车身不要,只要牌照号码,然后牌照号码空格这里去掉,只要号码,所以叫分割。
分割就是提取出来你想要的的物体,把这个区域提取出来。
比如底下邮政编码的识别:
邮政编码要去除掉背景,红色边框,然后把我要的这个物体给分割出来。
图像分割实际上是一个难题,因为人的视觉系统是非常优秀的,能一下就把你想要的目标捕获进来,提取出来。

在这里插入图片描述
在这里插入图片描述

  1. 图像分析
    在这里插入图片描述
  2. 图像重建
    在这里插入图片描述
ct是图像重建的一个非常好的例子,对人的扫描是扫描的数据,扫描数据最后成像。
  1. 图像压缩
    在这里插入图片描述
    在这里插入图片描述

3.数字图像处理的特点

在这里插入图片描述

4.数字图像处理阶段

在这里插入图片描述
在这里插入图片描述

  1. 图像处理阶段
在像素级或领域上操作

在这里插入图片描述

  1. 图像分析阶段
    在这里插入图片描述
检测有没有目标,分割然后测量,测量这个物体的面积,周长,纹理,一些测量特征的提取,
  1. 图像理解阶段
    在这里插入图片描述
  2. 图像处理中常用技术
    在这里插入图片描述

三.图像处理技术的应用

在这里插入图片描述

四.图像的存储格式

1.图像文件按照颜色深度分类

黑白图像:
黑白就是说只有两种颜色,所以没有层次感,没有立体感,又叫单色图像。
灰度图像:
灰度图像比二值的黑白图像表现的颜色数增多。颜色变化时从0到最亮值,0-255变化的,因为一个像素占8位,最亮的颜色分度就是255.
彩色图像:分为真彩色和伪彩色
真彩色图像,一个像素占24位,能表现的颜色是224次方。所以颜色非常丰富和细腻。
伪彩色,8位的伪彩色,可描述256色。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.单色图像、索引图像、真彩色图像

  1. 单色图像
黑白图像,黑白就是说只有两种颜色,所以没有层次感,没有立体感,又叫单色图像。
  1. 索引图像
    8位索引图像-分为灰度图像和彩色图像
一个像素占8位,只有一个像素占8位的时候就有索引矩阵,有一个颜色的索引表,简称颜色表。
对于索引图像,它在存储文件格式数据时候,有两个矩阵,一个是颜色的索引表矩阵,一个是颜色的每个像素的数值矩阵--叫数据矩阵。
数据矩阵和索引表什么关系?
数据矩阵每个元素的值就是个索引号。我们说图像是有彩色的,RGB三原色构成的,但是矩阵里面并没有RGB三个分量的值,只有RGB颜色值的索引号,比如这个值是0,那么对应RGB为000,值是255,对应RGB为255,255,255.
8位索引图像在存储格式上有一个颜色表和一个像颜色表的序号的数据矩阵,每个数据下对应的颜色的数据号/索引号就找到这个像素的颜色。

灰白8位索引图像和彩色8位索引图像:两者都带有一个颜色的RGB索引表。
而真彩色图像不带颜色的索引表,真彩色每个像素直接就是RGB值,没有颜色索引表。
灰白8位索引图像和彩色8位索引图像的区别:在索引表的表数据内容上。

灰度图像:
颜色表三个分量相等,像素值是表的索引地址,由8位组成。
各像素信息由一个量化的灰度级来描述,没有彩色信息。图像对应像素的索引。颜色表里的表象是相等的,红red,绿green,蓝blue三个分量值相等。即一个颜色表的三个分量值相等,而且他的数据区里面每个像素占8位,8位指索引号。
8位灰度索引图像取出一小块:
里面的每个数据是对应的颜色表的索引号,他的索引号对应它的RGB颜色的分量,三个分量相等。
灰度图像索引号等于它颜色的浓度值。数据越大,亮度越大。图像的索引表的内容跟你的序号是相对应的。像素值低,颜色暗;像素值高,颜色亮。
后边课程要对像素值数据区进行统计,统计0像素有多少个,...然后画出直方图来分析像素值的分布情况。
对数据区域进行处理,数据区的浓度值是序号值,在使用上就是颜色值。

彩色图像:
彩色图像是RGB三分量来构成的,三个分量都取满值时候为白色,

8位伪彩色索引图像:三个分量值不全相等。
伪彩色只能表示出256中的一种颜色。所以颜色跨越非常高,不是很细腻。

真彩色图像:
每个分量占8位,红red,绿green,蓝blue分别占8位,所以每个像素是24位。例子中打括号的是一个像素。
在编程中就要注意:
相邻像素,red和red算,green和green的算,blue和blue的算。所以这个像素的位数改变之后,编程相应也要改变。
同样一个算法,对于灰度图像和真彩色图像是不同的。
灰度图像是一个矩阵,真彩色图像是3个矩阵,red,green,blue分别有一个矩阵。这是按位平面说的。是把之前的数据区提取出来放到另外一个矩阵里了。
原来的像素矩阵是一个大矩阵,是像素的宽度乘以3是一个大矩阵,而这个矩阵是每个分量的矩阵,每个分量依然是8位的矩阵。
对真彩色图像的表示与处理和8位的是有区别的。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.图像的显示流程图

在这里插入图片描述

有颜色表就意味着我要用我文件里面的颜色去显示这幅图。
有颜色表那就是8位的,如果没有那就是真彩色的。
有颜色表就把颜色表调进来,调到内存里面计算机内存里,创建调色板,然后把新创的调色板放到设备环境里面去。设备环境是专门管理显示的。是让计算机用这个调色板颜色的信息去显示我的图像。显示完后恢复计算机原来的调色板。
真彩色直接用RGB去显示像素。

4.图像文件的格式

1,BMP(BitMaP)格式:可以直接进行绘画操作
2,GIF(Graphics Interchange Format)格式
3,TIFF(Tagged Image Format File)
4,JPRG(Joint Photographic Expert Group):一种压缩格式

GIF图像文件格式
在这里插入图片描述

在网页里面,制作网页里面插入的很小的一幅图。
用来传,速度快,所以很小容量小,颜色数有限。

TIFF文件
在这里插入图片描述

TIF文件是一个非常复杂的文件,因为他涉及了很多扩展的口,方便修改,是最复杂的一种,不常见,所以导致他的速度慢代码长,所以很少用到。

我们常用的就是BMP位图。

图像处理,文件格式不同,处理起来在显示上是有区别的。

五.BMP位图文件存储格式

BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持,这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱生来的缺点--占用磁盘空间过大。

BMP文件组成:4部分组成BMP位图文件
1,BMP文件头
BMP文件头结构:BITMAPFILEHEADER
2,位图信息头
位图信息头结构:BITMAPINFOHEADER
3,颜色表
颜色表位图RGBQUAD,,数据的值就是颜色表的索引号
4,位图数据区/信息
位图像素数据-BITMAPINFO

这4个变量定义的目的是在软件开发上用这几个变量来存储位图的数据

在这里插入图片描述
在这里插入图片描述

1.BITMAPFILEHEADER-BMP文件头

在这里插入图片描述

BITMAPFILEHEADER里面存的什么内容:
1,第一个是2个字节:bm文件标识符-BM
读出来前2个字节是bm的话,那么后面就可以进行bm位图的处理,如果这2个字节不是bm那么就不是bm位图,可能是其他某一个文件,那就不能进行后续处理。体现了文件有一定的格式和要求
2,后面4个字节是存放的整个文件的大小bfSize-这幅图共有多少个字节
3,后面2个字节是0
4,再后面2个字节还是0
5,再后面4个字节是数据区的起始位置,数据区距离开始有多远就有多少个字节
整个有多少字节:2+4+2+2+4=14个字节
所以fileheader就是一个标识符和总文件大小和数据区的起始位置

2.BITMAPINFOHEADER-BMP位图信息头

是关于这个图的一些内容:
1,biSize:本结构的大小,这个BITMAPINFOHEADER结构共占有多少字节。从上往下加起来是40个字节。
2,biWidth:位图的宽度,以像素为单位,
3,biHeight:位图的高度
4,biPlanes:位平面数,是标准的,一般为1
5,biBitCount:每个像素所需的位数
单色位图只需要一位,索引图像需要8位:8位灰度图像。8位伪彩色图像。真彩色图像需要24位。
6,biCompression:位图压缩类型
bmp位图一般不压缩,这个地方就取0
7,biSizeImage:位图的大小。以字节为单位,整个位图的大小。
89都是标准值,都是0
10,biClrUsed:颜色数。
如果颜色是标准颜色,比如8-256种颜色,这个地方为0.如果不是标准颜色,比如我自己定义这个位图只有17种颜色,就要把自己定义的颜色的数写上去。一般不这样做。
11,biClrImportant:重要的颜色数。
默认为0

在这个结构里有5个量是0,其他量是有数据的。

在这里插入图片描述

3.RGBQUAD-BMP颜色表

在这里插入图片描述

一个表上分4个字节
颜色表有3种颜色:红绿蓝+还有一个保留字节。
把这个表的结构数组化,就是256个变量,即256个颜色值。

4.BITMAPINFO-位图信息/位图像素数据

在这里插入图片描述

这个结构是显示语句。
显示语句有个函数,函数有个参数,这个函数的参数就叫做bitmapinfo,这里面要赋值:
第一个值bitmapinfoheader信息头,第二个值颜色表上第一项RGBQUAD bmiColors[1].

5.举例说明

画一个白颜色的,255.颜色属性改为只有一个像素,宽和高只有一个像素。
为什么只用一个像素?
一个像素只看见文件头部分了,数据区的数值很小。数值小就能看见文件头。
将该图另存为24位位图。一个像素取24位。
保存下之后用utrapdit打开,这个软件可以看到任何数据的ASCII值,把任何2进制数的位数制成ASCII值。
打开如下图:

在这里插入图片描述
在这里插入图片描述

再将一个像素的图存为8位位图,256色。存起来,再用utrapdit打开。
打开后发现:1个像素的8位位图现在有许多东西。
原因是:有调色板。调色板的一个单元占4个字节,有256种颜色,占4*256=1024个字节。
数据区的数据量占

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6.文件打开和显示流程

打开位图,先读取bitmapfileheader,14个字节先读到bitmapfileheader里面去,读完后先判断前两个字节是否为bm,如果是接着做处理,如果不是就退出来。是的话就得到位图,分配一个内存空间,然后把bitmapinfoheader,16进制是28.10进制是40个字节读到infoheader变量结构里面。
bitmapfileheader,infoheader是微软定义的,所以在vc变成中对这两个结构不需要重新定义,这个是世界统一的,这个结构的名称已经定义好了,直接定义一个变量就行。
读infoheader,获得图像的宽度,高度,颜色表,数据区。
如果文件中有颜色表,在显示的流程上带了颜色表了,那么显示时要用我文件里的颜色去显示。那么我要把颜色表放到windows管理显示的调色板里。在文件里叫颜色表,在windows对颜色的管理里叫调色板。调色板就是专门显示调的这种颜色
然后把这40个字节读到结构里面,读进去之后经过计算得到数据区的起始位置。

在这里插入图片描述
在这里插入图片描述

六.基于MATLAB的图像处理基础

例1

% 将一幅真彩色图像转化为灰度图像,
close all; % 关闭当前所有图形窗口
clear all; % 清空工作空间变量
clc;       % 清屏
% imread(),打开一幅图像,就是把图像从硬盘中装到内存中,读出来
X=imread('12.jpg'); % 读取文件格式为.jpg,文件名为12的RGB图像的信息
I=rgb2gray(X);      % 将RGB图像转换为灰度图像
% set(),defaultFigurePosition设置窗口的大小,defaultFigureColor背景颜色
set(0,'defaultFigurePosition',[500,300,1000,500]); % 修改图形图像位位置的默认设置。
% 参数12是相对于屏幕左上角的起始位置,figure的左上角。参数34是figure的宽和高。
set(0,'defaultFigureColor',[1,1,1]); % 修改图形背景颜色的设置。三个参数对应RGB,参照颜色表 
subplot(121),imshow(X); % 显示原RGB图像
subplot(122),imshow(I); % 显示转换后的灰度图像
% subplot()安排屏幕的显示方式。参数1-行,参数2-列,参数3-第几幅图

例2

% 输入颜色映射表,利用函数rgb2gray()生成灰度图像,
close all;
clear all;
clc;
[X,map]=imread('121.bmp'); % 读取原图像信息。map是颜色表,这是索引图像。X是矩阵。
newmap=rgb2gray(map); % 将彩色颜色映射表转换为灰度颜色映射表,将彩色map转换为灰度map
set(0,'defaultFigurePosition',[100,100,1000,500]); % 修改图形图像位置的默认设置
set(0,'defaultFigureColor',[1,1,1]); % 修改图形背景颜色的设置
figure,imshow(X,map); % figure,开图像窗口,这里开了两个图像窗口
figure,imshow(X,newmap); 

例3

% 将读出来的二值图像或灰度图像转换为索引图像,即添加索引
close all;
clear all;
clc;
I = imread('33.jpg');
[X,map]=gray2ind(I,8); % gray2ind(),convert grayscale or binary image to indexed image.
% 这里将读出来的二值图像转换为索引图像,索引图像为8阶灰度索引图像。原来二值图没有索引表
set(0,'defaultFigurePosition',[100,100,1000,500]);
set(0,'defaultFigureColor',[1,1,1]);
figure,imshow(I);
figure,imshow(X,map);

例4

% 将索引图像 X 和对应的颜色图 map 转换为真彩色图像 RGB
close all;
clear all;
clc;
[X,map]=imread('112.bmp');
RGB=ind2rgb(X,map);
% 索引图像 X 是一个 m×n 整数数组。颜色图 map 是一个由范围[0,1] 中的值构成的三列数组。
% map 的每行都是一个三元素 RGB,指定颜色图的单种颜色的红、绿和蓝分量。 
% 如果将 X 指定为 uint8 或 uint16类的数组,则值 0 对应于颜色图中的第一种颜色。 
% 如果将 X 指定为 single 或 double 类的数组,则值 1对应于颜色图中的第一种颜色。
% 真彩色图像输出 RGB 是一个 m×n×3 数组。
set(0,'defaultFigurePosition',[100,100,1000,500]);
set(0,'defaultFigureColor',[1,1,1]);
figure,imshow(RGB);
figure,imshow(X,map);

例5

% 将灰度图像转化为二值图像
close all;
clear all;
clc;
I=imread('12.bmp');
% converts the grayscale image I to binary image BW,by replacing 
% all pixels in the input image with luminance greater than level with
% the value 1 (white) and replacing all other pixels with the value 0 (black)
% BW = im2bw(I,level),level是阈值
BW1=im2bw(I,0.4); 
BW2=im2bw(I,0.6);
set(0,'defaultFigurePosition',[200,200,1000,500]);
set(0,'defaultFigureColor',[1,1,1]);
subplot(131),imshow(I);
subplot(132),imshow(BW1);
subplot(133),imshow(BW2);

例6

% 将灰度图像/索引图像转化为二值图像
close all;
clear all;
clc;
I=imread('121.bmp');
% converts the grayscale image I to binary image BW,by replacing 
% all pixels in the input image with luminance greater than level with
% the value 1 (white) and replacing all other pixels with the value 0 (black)
% BW = im2bw(I,level),level是阈值。将灰度图像转化为二值图像
% BW = im2bw(X,cmap,level),将索引图像转化为二值图像
BW1=im2bw(I,map,0.4); 
BW2=im2bw(I,map,0.6);
set(0,'defaultFigurePosition',[200,200,1000,500]);
set(0,'defaultFigureColor',[1,1,1]);
subplot(131),imshow(I,map);
subplot(132),imshow(BW1);
subplot(133),imshow(BW2);

例7

% 将灰度图像/索引图像/RGBA图像转化为二值图像
close all;
clear all;
clc;
I=imread('12.jpg');
% converts the grayscale image I to binary image BW,by replacing 
% all pixels in the input image with luminance greater than level with
% the value 1 (white) and replacing all other pixels with the value 0 (black)
% BW = im2bw(I,level),level是阈值。将灰度图像转化为二值图像
% BW = im2bw(X,cmap,level),将索引图像转化为二值图像
% BW = im2bw(RGB,level),将RGB图像转化为二值图像
BW1=im2bw(I,0.4); 
BW2=im2bw(I,0.6);
set(0,'defaultFigurePosition',[200,200,1000,500]);
set(0,'defaultFigureColor',[1,1,1]);
subplot(131),imshow(I);
subplot(132),imshow(BW1);
subplot(133),imshow(BW2);

例8

% 用imread()读取灰度图或RGB图像
close all;
clear all;
clc;
I1=imread('lena.bmp');
I2=imread('12.jpg');
set(0,'defaultFigurePosition',[200,200,1000,500]);
set(0,'defaultFigureColor',[1,1,1]);
figure;
subplot(221),imshow(I1);
subplot(222),imshow(I2);
subplot(223),imshow(I1,[80,100]);%设置灰度的阈值范围[80,100],小于80置黑,大于100置白
subplot(224),imshow(I2,[80,100]) % 在RGB图像中无效
% imshow(I,[low high]),显示灰度图像 I,以二元素向量[low high]形式指定显示范围.
% imshow()是在现实中做的处理,数据区没有改变

例9

% imshow(),image()和imagesc()显示图像进行比较
% image,从数组显示图像。将数组 C 中的数据显示为图像。C 的每个元素指定图像的 
% 1个像素的颜色。生成的图像是一个m×n像素网格,其中m和n分别是C中的行数和列数。
% 这些元素的行索引和列索引确定了对应像素的中心。
close all;
clear all;
clc;
I=imread('33.jpg');
set(0,'defaultFigurePosition',[200,200,1000,500]);
set(0,'defaultFigureColor',[1,1,1]);
subplot(221),imshow(I);%不带标尺
subplot(222),image(I);%利用image显示带标尺(默认参数)
subplot(223),image([50,100],[20,120],I);
%用image()显示调整坐标后的图像进行拉伸,前面为横标尺,后面是纵标尺
subplot(224),imagesc(I,[100,200]);
%imagesc,显示经过标度映射的颜色的图像。将数组C中的数据显示为一个图像,
%该图像使用颜色图中的全部颜色。C的每个元素指定图像的1个像素的颜色。
%生成的图像是一个 m×n像素网格,其中 m 和 n 分别是 C 中的行数和列数。
%这些元素的行索引和列索引确定了对应像素的中心。
%imagesc()显示经过灰度拉伸后的图像。显示图像,小于100置黑,大于200置白

例10

%用imshow()显示图像并添加颜色条
close all;
clear all;
clc;
I=imread('33.jpg');
H=[1 2 1;0 0 0;-1 -2 -1];%设置zobel算子
X=filter2(H,I);%对灰度图像进行2次滤波,实现边缘检测(水平检测)和H进行卷积计算
%filter2,二维数字滤波器.根据矩阵H中的系数,对数据矩阵X应用有限脉冲响应滤波器.
%进行了边缘检测-灰度化,zobel边缘算子,线性滤波,每个像素做卷积运算。
set(0,'defaultFigurePosition',[200,200,1000,500]);
set(0,'defaultFigureColor',[1,1,1]);
subplot(131),imshow(I);
subplot(132),imshow(X,[]),colorbar();%显示图像并添加颜色条,默认添加在图像外右侧
subplot(133),imshow(X,[]),colorbar('east');%在图像内部右侧加上颜色条

例11

%load mri加载MATLAB自带的magnetic resonance imaging多帧图像
load mri
%montage(D,map)是显示多帧图像的所有帧
montage(D,map)

%函数subimage(),Display multiple images in single figure.displays the RGB(truecolor),grayscale,or binary image I in the current axes.

完整代码如下:
%用函数subimage()在一个窗口同时显示两幅图
%subplot(),在平铺位置创建坐标区.将当前图窗划分为 m×n 网格,并在 p 指定的位置
%创建坐标区。MATLAB按行号对子图位置进行编号。第一个子图是第一行的第一列,第二
%个子图是第一行的第二列,依此类推。如果指定的位置已存在坐标区,则此命令会将该
%坐标区设为当前坐标区。
close all;
clear all;
clc;
load trees;
%load(filename)从filename加载数据,为mat文件或ASCII文件
[X1,map1]=imread(''):
set(0,'defaultFigurePosition',[100,100,1000,500]);
set(0,'defaultFigureColor',[1,1,1]);
figure;
subplot(1,2,1),subimage(X,map);%将图像窗口分成1*2个子窗口,在左边窗口中显示图像X
subplot(1,2,2),subimage(X1,map1);

例12

%用函数impixel()显示图像指定像素信息.
%多平面图像的输入项必须是大小为MxNx3的RGB图像。
%lets you select pixels interactively from the image in the current axes.
close all;
clear all;
clc;
RGB=imread('12.tif');
c=[12 146 410];%新建向量c,存放像素纵坐标
r=[104 156 129];%新建向量r,存放像素横坐标
set(0,'defaultFigurePosition',[100,100,1000,500]);
set(0,'defaultFigureColor',[1,1,1]);
pixels1=impixel(RGB);%交互式用鼠标选择像素
pixels2=impixel(RGB,c,r);%将像素坐标作为输入参数,显示特定参数的颜色值

例13

%用函数impixelinfo()创建图像信息显示工具
%impixelinfo,Pixel Information tool,
close all;
clear all;
clc;
set(0,'defaultFigurePosition',[100,100,1000,500]);
set(0,'defaultFigureColor',[1,1,1]);
h=imshow('12.bmp');
hp=impixelinfo;
set(hp,'Position',[150,200,200,20]);%在图像里设定信息工具的显示位置
figure,imshow('12.bmp');
impixelinfo     %默认在图像底部
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐