| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> Matlab系列记录之图像处理(结束篇) -> 正文阅读 |
|
[人工智能]Matlab系列记录之图像处理(结束篇) |
Matlab系列记录之图像处理(结束篇)前言对于图像处理,我现在也是一知半解的程度,毕业后基本就没接触这些东西了,如果有理解的不对的地方,欢迎指出~ 只介绍下一些基本原理和MATLAB上进行图像处理的一些基本操作了,复杂了,我也估计搞不来了,是DIP大佬就可以忽略本篇了…/手动滑稽 图像知识图像类型常用或者经常听到的一些图像类型:RGB图、灰度图还有二值化图像等等等。 1、RGB图顾名思义,由R、G、B三种分量组成的图像,这三种分量分别对应红、绿、蓝,在Matlab上以三维矩阵的形式进行存储,数值在0~255的区间,如果值全是0([0,0,0]),则表示黑色;反之全255([255,255,255]),就是代表白色了。 2、灰度图灰度图,也称亮度图,在Matlab中是以二维矩阵的形式进行存储,矩阵的每个元素都代表一个像素的灰度值,取值范围也是0~255。 3、二值化图二值化,就更好理解了,在Matlab中是以一个二维矩阵进行存储,其值只能是0或者1,即只有黑白两色。 读写图像文件Matlab支持多种图像文件类型的操作,有BMP、JPG、GIF、ICO、TIF等,通过imread和imwrite来实现读写的操作,imread可以将指定位置的图片以矩阵形式读入工作区内,语法如下:
file填入图像文件的路径和文件名,只写文件名的话,就代表在当前的工作路径或者系统目录查找对应图像文件;FMT是文件的类型,如:bmp;Image就是存储图像数据的矩阵了,彩图就是三维的,灰度图和二值化图像就是二维矩阵了。 写操作的语法与读的一致,语法如下:
显示图像使用imshow函数就可以显示工作区内图像数据对应的图像,也可以直接显示指定路径下的图像文件,使用语法为:
I是需要显示的图像数据矩阵,二维矩阵代表的是灰度图像,三维矩阵则为彩图;[low,high]是灰度图的灰度范围,灰度值比low的值小的会转成黑色显示,大于high的转成白色,在范围内的灰度值,按比例显示灰度级;file指定图像的路径和文件名,与读写的使用一致。 示例
结果从结果中的1、2、3,可以看到图像按矩阵形式导入到工作区,然后显示再窗口中,并以新的格式写入当前的运行路径~ 图像运算直方图图像灰度分布情况的信息对图像处理来说,而直方图就是直观的一个方法,使用 imhist 函数即可显示图片的直方图,直方图表述的是图片灰度级出现的频率,横坐标就是对应的灰度值,纵坐标就是其出现次数。
示例
结果可以明显看到,灰度级数目随着n从默认值256变为50而变少了。 直方图均衡直方图均衡又称灰度均衡,就是指将输入的图像转换成每一灰度级上都有近似相同的像素点的图像,从而使得输出的图像的直方图是均衡的,图像也因此增加了高对比度与大动态范围的效果。 用histeq就可以实现该方法
示例
结果使用了一组一维变换矩阵进行变换 图像进行灰度均衡处理后,对比度很明显进行了增强!灰度级的分布也均匀了许多~ 灰度线性变换灰度线性变换和灰度非线性变换,是灰度变换的方式,也是常用的图像处理操作,先介绍下灰度线性变换~ 简而言之就是通过指定的线性函数(拉伸或压缩)进行变换来调整图像的亮度,以实现图像增强的目的。 线性函数是一个直线方程,表达式如下:
所以要进行线性变换,则只需要线性改变图像的灰度值即可~ 示例
结果可以看到灰度值按线性进行了伸缩以及移动,也展现了不同的效果。 灰度非线性变换灰度非线性变换则是使用非线性函数进行变换来实现增强图像俩高度的目的,如:对数变换和伽马变换。 其中,对数变换可拉深深数值较小的灰度范围,压缩数值较大的灰度范围,比较符合人的视觉特性,其数学函数表达如下:
伽马变换又称指数变换,或幂变换,对应的函数表达式如下:
介绍一个函数:imadjust
示例
结果对数变换中,看到灰度值小的被拉伸,灰度值大的被压缩,因而导致图像亮度降低了一些,可以改变尺度比例常数来加亮;伽马变换,则是先取了原图中灰度值为51~204的数据,然后再做的变换,对比度也相对原图强了一些。 图像变换图像变换有种把原图像的在对应维度,一个起始坐标上的图像数据往维度中的其他坐标位置重新放置,类似在运动的感觉,这之中将用到插值的方法,对变换后的整个空间坐标中的新的图像数据值进行估计,Matlab中的函数大概就是这样实现的,接下来介绍缩放和旋转的内容。 图像缩放使用imresize函数即可实现图像缩放功能
示例
结果图像旋转图像旋转使用imrotate实现,语法如下:
示例
结果随着旋转,图像大小会有所改变,一般是比原图大(使用了同一个figure,会直接限定显示的尺寸,所以看着变小了,实际不然);然后多出的部分都会填0,即黑色。 结语从去年6月到今日,一年多,跌跌撞撞的写,关于Matlab系列的篇章终于可以说一声”结束了“,依然还有很多东西感觉未能很好的表述出来,不过对于大多数的学习和使用,已经足够了,再具体往下细化和专业化,就应该是一些具体领域的应用和实践。 敬请期待下一个系列文章的出现吧~ 更多经常,等你发现~ |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 10:35:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |