数字图像处理之matlab实验(一):基本操作
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实验(一):基本操作相关推荐
- 数字图像处理之matlab实验(六):图像分割
在图像处理领域,我们更关注的是一些关于目标的分析或者描述信息,比如图片里面是否有猫,以及是什么品种的猫?在在做这一步之前,我们需要先把图像中的猫分割出来.可以说图像分割是最基础也是最重要的一步操作,会 ...
- 数字图像处理之matlab实验(三):空间滤波器
1.空间滤波原理 空间滤波,就是在原图像上,用一个固定尺寸的模板去做卷积运算,得到的新图像就是滤波结果.滤波,就是过滤某种信号的意思.过滤哪种信号取决于模板设计,如果是锐化模板,处理后就保留高频信号, ...
- 数字图像处理之matlab实验(五):形态学图像处理
常见的形态学处理包括腐蚀.膨胀.开运算.闭运算.不同的操作有不同的作用,同样的操作在不同类型的图片上也有不同效果,具体效果如下表格所示.要求熟练掌握对二值图像的形态学处理. 不同操作对不同类型图像处理 ...
- 数字图像处理之matlab大作业:自制图像处理小工具
学习的过程向来不是容易的,创造一个作品的过程更是不容易的.因此,在文章的最后,提供了两个现成的示例代码,大家直接可以拿来运行.在完成大作业的时候,大家可以在已有作品的基础上,按照自己的需求进行修改,添 ...
- matlab数字图像处理课程设计报告,数字图像处理课程设计实验报告.doc
数字图像处理课程设计实验报告 数字图像处理课程设计 题 目:数字图像处理及Huufman(或小波变换)编码仿真实现 学生姓名: 学 院:信息工程学院 系 别:电子信息工程系 专 业:电子信息工程 班 ...
- 数字图像处理---低高通滤波实验(MATLAB实现)
数字图像处理-低高通滤波实验(MATLAB实现) [实验目的] 1. 了解图像傅里叶变换的意义和手段: 2. 熟悉理想低通滤波器.巴特沃斯低通滤波器.高斯低通滤波器的基本原理和性质: 3. 熟悉理想高 ...
- 数字图像处理(MATLAB)(第二版) 冈萨雷斯 学习笔记
数字图像处理(MATLAB)(第二版) 冈萨雷斯 主要用来记录自己的学习过程,相关实验内容,便于日后查找相关知识点及复习所用 第二章 灰度变换和空间滤波 本章重点讨论两类空间域处理方法:亮度(或灰度) ...
- 数字图像几何变化matlab,【新书推荐】数字图像处理——使用MATLAB分析与实现
原标题:[新书推荐]数字图像处理--使用MATLAB分析与实现 数字图像处理是现代信息处理的研究热点.教材基于大学教学特点.目的编写,介绍数字图像处理的基本原理.算法分析和实现.章节内容由浅入深,层次 ...
- 基于小波变换的数字图像处理(MATLAB源代码)
基于小波变换的数字图像处理(MATLAB源代码) clear all; close all; clc; M=256;%原图像长度 N=64; %水印长度 [filename1,pathname]=ui ...
最新文章
- SQL语言包含4个部分
- CTFshow 信息收集 web9
- php+mysql+into_PHP+Mysql 如何实现数据库增删改查
- docker运行随机分配端口
- linux ulimit
- OBJECT_MODE
- STL 容器迭代器失效总结(超级详细)
- python preference界面设置_Android设置界面5分钟搞定--Preferences的使用
- .net 4.5 新特性 async await 一般处理程序实例
- excel删除行闪退_Excel出现闪退如何处理?
- 计算机视觉-OpenCV入门讲解
- idea2018破解码
- iOS - iOS6 越狱及必装源、软件
- ffmpeg 裁剪视频
- Thread多线程-(最容易被问到的面试题)
- 整理最全规范之Git仓库管理规范,Java开发规范,最全Java命名规范,数据库开发设计规范,接口设计规范
- 启发式测试策略模型(Heuristic Test Strategy Model,简称HTSM)
- 笔记本电脑的电池越来越不耐用?那是你不会这样保养!
- 限时订单实现方案(DelayQueue、ActiveMq)
- 贵溪市网络营销信息源类别
热门文章
- 牛顿下山法求解非线性方程(组)(C实现)
- 哈尔滨理工计算机考研真题,哈尔滨理工大学考研真题各专业汇总
- dmidecode服务器型号,linux dmidecode查看服务器硬件信息
- 安卓rom包解包linux,Android rom解包打包工具
- 【20180615】【射频通信】RF、IF、Baseband的区别,PLL和VCO的定义,I/Q信号的定义
- openswan协商流程之(四):main_inI2_outR2()
- 第一部android手机,安卓手机诞生十年,第一部Android 一.零手机长这样
- Linux(日志管理)
- 电涡流传感器线性灵敏度
- python 实现maltab中离散正弦变换dst及其反变换idst