1、图像即矩阵。

一幅图像在计算机中是以矩阵的形式存储。 如下图所示:矩阵中的值对应图像中对应像素的亮度,值越大越亮(最亮为白色),值越小越暗(最暗为黑色)。下图搞反了,当然此目的只是为了大家看的直观。

2、图像的分类:  彩色图、灰度图和二值图。体会如何在计算机中存储。

注意:不同类型的图像数据类型不同,占用的存储空间不同。以上图为例:原图为296X395 的图像,存储彩色图像需要3个296X395 的矩阵,存储灰度图和二值图只需要1个296X395 的矩阵。彩色图像和灰度图中每个像素的数据类型是整数,二值图像的数据类型是布尔值(因为二值图像只有黑白呀)。

clear,clc,close all;
I=imread('flower.jpg');  % 读入原图像  彩色图像
GrayI = rgb2gray(I);   %彩色图转灰度图
BwI = im2bw(GrayI);   %灰度图转二值图figure,imshow(I),title("彩色图像")              % 显示图像
figure,imshow(GrayI),title("灰度图像")
figure,imshow(BwI),title("二值图像")    

3、获取图像的基本信息。whos 、imfinfo

clear,clc,close all;I=imread('flower.jpg');  % 读入原图像
whos I

clear,clc,close all;fileinfo=imfinfo('flower.jpg');
W=fileinfo.Width
H=fileinfo.Height
F=fileinfo.Format %显示文件格式

注意:两个命令都可以查询图像的信息,imfinfo感觉可以查更多的信息,除了宽高之外,还有许多属性可以查。

4、图像的读取和显示

(1)图像读取。比较简单,只需要在imread(‘ ’),引号中输入路径即可,绝对路径和相对路径都可以,使用相对路径时要注意图片是放在当前工作目录下的。

(2)图像显示。imshow() 显示图像, 注意在括号里面放的是图像对应的矩阵名。显示时,分多窗口和单窗口。figure表示新建一个窗口的意思,若打开三个窗口,则需要使用三次figure。很多时候,我们需要在一个窗口上显示多幅图像,以方便比较不同操作处理后的效果差异,因此需要用到subplot()函数,这个函数用来控制窗口布局,以subplot(1,3,1)为例,三个参数的含义依次是,布局为1行3列,当前图片所处的位置是第1个。

可参考下面的代码理解上述内容。

clear,clc,close all;I=imread('flower.jpg');  % 读入原图像
GrayI = rgb2gray(I);
BwI = im2bw(GrayI);% 三幅图像显示在三个窗口
figure,imshow(I),title("彩色图像")              % 显示图像
figure,imshow(GrayI),title("灰度图像")
figure,imshow(BwI),title("二值图像")
% 三幅图像显示在一个窗口
figure;
subplot(1,3,1),imshow(I),title("彩色图像")              % 显示图像
subplot(1,3,2),imshow(GrayI),title("灰度图像")
subplot(1,3,3),imshow(BwI),title("二值图像")

5、永远放在代码开头的clear,clc,close all;

在上面的所有示例代码开头,都有上述命令,或者说必须有上述命令。

clear 清除工作空间中的变量,有时候,我们会在matlab中运行多个代码文件,如果两个代码文件中有同名变量,那么会造成干扰,但如果在运行时,清除掉之前运行的变量,就不会有这种干扰存在。

clc 清除命令行窗口的输入。

close all 关闭所有的窗口。

总之,上面的命令是为了给即将运行的代码一个干净的环境

6、图像的加减乘除。

图像即矩阵,所以将图像加减乘除是有数学解释的。

在这里常常会出现问题,原因在于参与运算的两图像可能大小不一致,比如:宽高不一致,或者是数据类型不一致(彩色图和灰度图)。大家想一下,不同大小的矩阵肯定是不能加减乘除的呀!所以在报错时,先自查一下是否参与运算的两幅图像是否选择的过于随意了。

(1)图像加法

图像加法常用于图像合成。比如将一个目标放到想要的背景上。如让小车行驶在沙漠上。

注意:彩色图像或灰度图每一个像素点的取值范围是0-255,两幅图相加,可能会超过255,因此,需要减去一个标量,让小车相加后,仍然是绿色。 

Back=imread('desert.jpg');
Foreground=imread('car.jpg');
result1=imadd(Foreground,-100);
result2=imadd(Back,Foreground);
result3=imadd(Back,result1);
imwrite(result1,'jiabiaoliang.jpg');
imwrite(result2,'jiabeijing.jpg');
imwrite(result3,'jiabiaoliangjiabeijing.jpg');
subplot(221),imshow(Foreground),title('原目标图');
subplot(222),imshow(result1),title('原目标图加标量');
subplot(223),imshow(result2),title('原目标图加背景');
subplot(224),imshow(result3),title('加标量图叠加背景');

(2)图像减法

图像相减主要用于目标检测。比如:监控图像中,视频中的相邻两帧相减,可以得到两幅图像的差异,即运动目标。

Back=imread('hallback.bmp');
Foreground=imread('hallforeground.bmp');
result=imabsdiff(Foreground,Back);
imwrite(result,'xiangjian.jpg');
subplot(131),imshow(Back),title('背景');
subplot(132),imshow(Foreground),title('前景图');
subplot(133),imshow(result),title('图像相减');

(3)图像乘法

图像乘法主要用于从原始图像中提取目标图像。比如:在一副图像上,我们将图像中的鸟分割出来了,分割结果是一个二值图像,那如何利用二值图像提取鸟呢,将原始图像和二值图像相乘就可以达到这个目标。

Back=im2double(imread('bird.jpg'));
Templet=im2double(imread('birdtemplet.bmp'));
result=immultiply(Templet,Back);
imwrite(result,'xiangcheng.jpg');
% imwrite(result2,'jianbeijing.jpg');
% imwrite(result3,'jianbiaoliangjiabeijing.jpg');
subplot(131),imshow(Back),title('背景');
subplot(132),imshow(Templet),title('模板(分割结果)');
subplot(133),imshow(result),title('图像相乘');

(4)图像除法

除法运算可用于校正成像设备的非线性影响,这在特殊形态的图像(如断层扫描等医学图像)处理中常常用到。图像除法也可以用来检测两幅图像间的区别,但是除法操作给出的是相应像素值的变化比率,而不是每个像素的绝对差异,因而图像除法也称为比率变换。

注意:imdivide 的参数必须是double类型,如果是整数,那么相除的结果就为0,全黑。

clear,clc,close all;I=imread('flower.jpg');  % 读入原图像
J= I * 0.43 + 90
Ip = imdivide(double(I), double(J))
subplot(131),imshow(I),title("原图像")
subplot(132),imshow(J),title("变换后图像")
subplot(133),imshow(Ip),title("图像相除")

数字图像处理之matlab实验(一):基本操作相关推荐

  1. 数字图像处理之matlab实验(六):图像分割

    在图像处理领域,我们更关注的是一些关于目标的分析或者描述信息,比如图片里面是否有猫,以及是什么品种的猫?在在做这一步之前,我们需要先把图像中的猫分割出来.可以说图像分割是最基础也是最重要的一步操作,会 ...

  2. 数字图像处理之matlab实验(三):空间滤波器

    1.空间滤波原理 空间滤波,就是在原图像上,用一个固定尺寸的模板去做卷积运算,得到的新图像就是滤波结果.滤波,就是过滤某种信号的意思.过滤哪种信号取决于模板设计,如果是锐化模板,处理后就保留高频信号, ...

  3. 数字图像处理之matlab实验(五):形态学图像处理

    常见的形态学处理包括腐蚀.膨胀.开运算.闭运算.不同的操作有不同的作用,同样的操作在不同类型的图片上也有不同效果,具体效果如下表格所示.要求熟练掌握对二值图像的形态学处理. 不同操作对不同类型图像处理 ...

  4. 数字图像处理之matlab大作业:自制图像处理小工具

    学习的过程向来不是容易的,创造一个作品的过程更是不容易的.因此,在文章的最后,提供了两个现成的示例代码,大家直接可以拿来运行.在完成大作业的时候,大家可以在已有作品的基础上,按照自己的需求进行修改,添 ...

  5. matlab数字图像处理课程设计报告,数字图像处理课程设计实验报告.doc

    数字图像处理课程设计实验报告 数字图像处理课程设计 题 目:数字图像处理及Huufman(或小波变换)编码仿真实现 学生姓名: 学 院:信息工程学院 系 别:电子信息工程系 专 业:电子信息工程 班 ...

  6. 数字图像处理---低高通滤波实验(MATLAB实现)

    数字图像处理-低高通滤波实验(MATLAB实现) [实验目的] 1. 了解图像傅里叶变换的意义和手段: 2. 熟悉理想低通滤波器.巴特沃斯低通滤波器.高斯低通滤波器的基本原理和性质: 3. 熟悉理想高 ...

  7. 数字图像处理(MATLAB)(第二版) 冈萨雷斯 学习笔记

    数字图像处理(MATLAB)(第二版) 冈萨雷斯 主要用来记录自己的学习过程,相关实验内容,便于日后查找相关知识点及复习所用 第二章 灰度变换和空间滤波 本章重点讨论两类空间域处理方法:亮度(或灰度) ...

  8. 数字图像几何变化matlab,【新书推荐】数字图像处理——使用MATLAB分析与实现

    原标题:[新书推荐]数字图像处理--使用MATLAB分析与实现 数字图像处理是现代信息处理的研究热点.教材基于大学教学特点.目的编写,介绍数字图像处理的基本原理.算法分析和实现.章节内容由浅入深,层次 ...

  9. 基于小波变换的数字图像处理(MATLAB源代码)

    基于小波变换的数字图像处理(MATLAB源代码) clear all; close all; clc; M=256;%原图像长度 N=64; %水印长度 [filename1,pathname]=ui ...

最新文章

  1. SQL语言包含4个部分
  2. CTFshow 信息收集 web9
  3. php+mysql+into_PHP+Mysql 如何实现数据库增删改查
  4. docker运行随机分配端口
  5. linux ulimit
  6. OBJECT_MODE
  7. STL 容器迭代器失效总结(超级详细)
  8. python preference界面设置_Android设置界面5分钟搞定--Preferences的使用
  9. .net 4.5 新特性 async await 一般处理程序实例
  10. excel删除行闪退_Excel出现闪退如何处理?
  11. 计算机视觉-OpenCV入门讲解
  12. idea2018破解码
  13. iOS - iOS6 越狱及必装源、软件
  14. ffmpeg 裁剪视频
  15. Thread多线程-(最容易被问到的面试题)
  16. 整理最全规范之Git仓库管理规范,Java开发规范,最全Java命名规范,数据库开发设计规范,接口设计规范
  17. 启发式测试策略模型(Heuristic Test Strategy Model,简称HTSM)
  18. 笔记本电脑的电池越来越不耐用?那是你不会这样保养!
  19. 限时订单实现方案(DelayQueue、ActiveMq)
  20. 贵溪市网络营销信息源类别

热门文章

  1. 牛顿下山法求解非线性方程(组)(C实现)
  2. 哈尔滨理工计算机考研真题,哈尔滨理工大学考研真题各专业汇总
  3. dmidecode服务器型号,linux dmidecode查看服务器硬件信息
  4. 安卓rom包解包linux,Android rom解包打包工具
  5. 【20180615】【射频通信】RF、IF、Baseband的区别,PLL和VCO的定义,I/Q信号的定义
  6. openswan协商流程之(四):main_inI2_outR2()
  7. 第一部android手机,安卓手机诞生十年,第一部Android 一.零手机长这样
  8. Linux(日志管理)
  9. 电涡流传感器线性灵敏度
  10. python 实现maltab中离散正弦变换dst及其反变换idst