matlab图像处理(笔记)
目录
图像类型的转换
图像文件读写
视频文件读写
数字图像的运算
图像的几何变换
图像类型的转换
RGB图像转为灰度图像:X=rgb2gray(I) %I为RGB图像,X为转换后的图像
RGB图像转换为索引图像:
[X,map]=rgb2ind(I,tol) %toll的范围是0.0到1.0,map包含至少(floor(1/tool)+1)^3个颜色
[X,map]=rgb2ind(I,N)%map包含至少N个颜色
X=rgb2inb(I,map) %【x,map】对应的是索引图像,colorcube(M)返回包含colorcube的M × 3矩阵。M = 256, colorcube返回完全一样的颜色。当M < 8时,长度为M的灰色斜坡返回。
灰度图像转换为索引图像:
[X,map]=gray2ind(I,n)%该函数是将灰度图像转为索引图像,灰度级为n
[X,map]=gray2ind(BW,n)%该函数是将二值图像BW转换为索引图像
map中对于的颜色值为颜色图gray(n)中的颜色值,gray(M)返回一个包含灰度色图的M × 3矩阵
I=grayslice(G,n)%该函数是将灰度图像中的像素灰度均匀化为n个等级转换为索引色图像,然后imshow(I,jet(n)),jet()函数生成颜色映射表,给图像I对于像素点加上颜色
索引图像转换为灰度图像:
I=ind2gray(X,map)%该函数将具有颜色映射表map的索引图像转化为灰度图像,[X,map]=imread();
索引图像转为RGB图像:
RGB=ind2rgb(X,map)%索引图像中的map表直接赋给RGB中对应像素的颜色值,肉眼下两图一样
灰度图像,RGB转换为二值图像:
BW=im2bw(I,level)%level为设置的阈值参数,取值范围在[0,1],输出图像BW用白色替换输入图像中亮度大于level*255的所有像素,用黑色替换其他,像如果没有指定level, im2bw将使用值0.5。
数值矩阵转换为灰度图像:
I=mat2gray(X,[xmin,xmax])%1指白色,0指黑色,数据矩阵小于0取xmin,大于1取xmax。
图像文件读写
文件信息的读取:imfinfo('文件名件.类型')%可以查看图像的图像类型,大小等。
图像文件的读取:
I=imread('文件名件.类型')%灰度图像M*N二维,真彩色图像M*N*3的三维数组。
[X,map]=imread('文件名件.类型')%索引图像,map用于存储与索引图像相关的颜色映射表。
[X,map]=imread('文件名件.GIF',idx)%idx读取第几帧图像。
图像文件的保存:
imwrite(I,'文件名件','类型')将图像I保存。
imwrite(X,map,'文件名件','类型')用于保存索引图像。
图像显示函数:
imshow(I) imshow('文件') imshow(X,map)%图像视窗
imtool(I)%图像工具浏览器
image(I) image([1,2],[3,4],I)%X轴1到2,y轴4到3,个人理解类似于A([1 2],[2 3])这种。
image有坐标轴区别于前面两个函数
彩色条:
colorbar%在图像上形成一个彩色条,默认在右侧
imshow(I),colorbar;
colobar('off') 、colobar('hide')和colobar('delete')删除当前轴所有的相关彩色条。
视频文件读写
v = VideoReader(filename)%读取视频
v.NumberOfFrames%获取视频帧数(我用的是matlab2016a,V结构里面没有总帧数所以加上了)
read(v,[1 10])%读取视频中的1:10帧
read(v,[1 Inf])%从第 1 帧开始读取到视频结束。
VideoReader.getFileFormats()%查看在你的matlab上 VideoReader支持的文件格式列表
数字图像的运算
图像的加法:imadd(X,Y)%其中X,Y为大小相等的图像矩阵,Y如果是数字则表示在原图像X上每个像素值加30,这里不能用索引图像。
附加噪声:imnosie(I,type,parameters)%type为噪声类型:gaussian(高斯噪声),localvar(零均值的高斯噪声),poisson(泊松噪声),salt & pepper(椒盐噪声)
J = imnoise(I,'gaussian',M,V),M-均值,V-方差
J = imnoise(I,'localvar',V)
J = imnoise(I,'poisson')
J = imnoise(I,'salt & pepper',d),其中d为噪声密度。 这将影响大约d*numel(I)像素,d的默认值是0.05
图像的减法:imsubtract(X,Y),这里Y可以是常熟类似于上面的加法---获取两个图像之间的差异
图像的乘法:immulitply(X,Y)——实现图像局部显示
Y--常数,大于1起亮度增强的作用
图像的几何变换
impixel(I,C,R)%输出像素的颜色
图像的缩放[B,newmap]=imresize(A,map,m)%m为缩放比例
B=imresize(A,m) B=imresize(A,[行,列])%缩放后的行列
图像的旋转imrotate(A,angle)
图像的修剪imcrop(X,行,列),imcrop(I)--截选好图像,然后双击
图像的平移:
J(i+a,j+b,:)=I(i,j,:)
将图像的数据类型转换为双精度--目的是提高精度im2double(I)
图像的转置:
图像的空间变换:B=imtransform(A,TFORM);A是图像矩阵,TFORM通过maketform()返回
maketform('affine',D)%平移,缩放,旋转
返回二维的参数结构体,输入D应该是(2+1)*(2+1)或者(2+1)*2的矩阵
如果是3*3的矩阵,最后一列应该为(zeros(2,1);1)
|
|
|
|
|
|
|
平移 | 1 | 0 |
|
0 |
1 |
|
缩放 |
|
0 | 0 | 0 |
|
0 |
旋转(逆时针a) | cosa | sina | 0 | -sina | cosa | 0 |
eg:
灰度变换增强
灰度图像的直方图可以通过imhist()获取,或通过编程 k=I(i,j);N(k+1)=N(k+1)+1
imadjust(I,[0.2,0.5],[0,1])%小于255*0.2的灰度值设为0。
灰度图像的亮度改变brighten(n),通常放在imshow()的后面%n>0&&n<1,图像变亮,。
最佳输入区间:stretchlim(I)%获取最佳区间。
灰度反转:imcomplement()%0变为255,将灰度值为X的像素值转换为255-X。
RGB图像也可以求直方图(分解R,G,B) imhist(I(:,:,1))%计算R分量的直方图。
直方图均衡化:histeq()%直方图是近似均匀的。
图像的统计特性
图像的均值:mean2()计算矩阵的均值,对于RGB图像mean(I(:,:,1))先弄成2维矩阵。
图像的标准差std2()
图像的相关系数:两个大小相等的二维矩阵,可以计算相关系数,corr2(A,B)。
图像的等高线:imcontour(I,n)%n为设置等高线的条数,不指定函数会自动选取n,好玩。
空域滤波
空域滤波是对图像中每一个像素为中心的领域进行的一系列的运算
线性空域滤波:线性平均滤波是一种常用的线性空域滤波,它是一种低通滤波,信号低频部分通过,阻止高频部分通过。由于图像的边缘处于高频部分,因此线性平均滤波后,会造成图像边缘的模糊。
eg:常用的模版大小为3X3,如下所示:
对图像进行平滑: imfilter(I,T),
通过卷积进行滤波C = conv2(A,B,'___')---锐化滤波后得到的图像,图像的边缘部分得到了加强
same——返回与A大小相同的卷积的中心部分。B是模版
full——返回完整的二维卷积,默认的
conv2%把图像的轮廓描绘出来,K=原图-卷积后的图%边缘部分会加强。
非线性空域滤波:
中值滤波:是一种保护边缘的非线性图像平滑方法——medfilt2(I)进行图像的二维中值滤波,中指滤波非常适合去除椒盐噪声,取得非常好的滤波效果。
wiener2()根据图像的噪声进行自适应滤波,该函数根据图像的局部方差来调整滤波器的输出,当局部方差大时,滤波器的平滑效果较弱;当局部方差小时,滤波器的平滑效果较强。
J = wiener2(I,[m n])使用像素方向自适应Wiener滤波对图像I进行滤波,使用大小为m × n的邻域来估计局部图像的均值和标准差。
排序滤波:ordfilt()还不会,这就很难受,书上的代码看不懂
频域滤波:
通过傅里叶变换将图像从空间域转换为频率域,然后在频率域内对图像进行处理,最后通过傅里叶反变换转换到空间域。
低通滤波:作用是过滤掉包含在高频中的噪声,同时也抑制了图像边缘
对于大小为M*N的图像,频率点(u,v)与频率中心的距离为D(u,v)其表达式为:
1.理想低通滤波器:Do为理想低通滤波器的截止频率,在半径为Do的范围内,所有频率都可以没有衰减的通过滤波器,在半径之外的全部衰减为0。理想低滤波器具有平滑图像的作用,但是有很严重的振铃现象(振铃效应,是由于在图像复原中选取了不适当的图像模型造成的,振铃效应产生的直接原因是图像退化过程中信息量的丢失,尤其是高频信息的丢失,其严重降低了复原图像的质量,并且使得难于对复原图像进行后续处理)
matlab图像处理(笔记)相关推荐
- 【matlab图像处理笔记5】【图像变换】(四)图像的正交变换
文章目录 推荐阅读 前言 图像正交变换简介 离散傅里叶变换 对图像进行离散傅里叶变换的作用 二维离散傅里叶变换 频谱图 示例 离散余弦变换 简介 基本原理 示例 推荐阅读 本系列其他文章 [matla ...
- 【matlab图像处理笔记4】【图像变换】(三)图像的霍夫变换
文章目录 推荐阅读 前言 霍夫变换概述 霍夫变换直线检测原理 从笛卡尔坐标系到霍夫空间 两点一线的霍夫空间形式 寻找共线的点 直角坐标系存在的问题 极坐标参数空间下的霍夫变换 matlab霍夫变换直线 ...
- Matlab图像处理笔记--图像修复
大多数的修图软件都是通过借用相邻像素内容来对照片进行处理,这其中比较有代表性的就要数Adobe的修图软件了,但这这种方式也有一定的缺陷,就是当你的图像变成这个样子时,那么这张照片就彻底没救了,如下图所 ...
- B站台湾大学郭彦甫|MATLAB 学习笔记|08 图像处理I Image Processing
MATLAB学习笔记(08 图像处理I Image Processing) 如果想获得更好浏览体验的朋友可以转到下面链接 08 1. 基本操作 读取图像 imread() 展示图像 imshow() ...
- 数字图像处理MATLAB学习笔记(五)
数字图像处理MATLAB学习笔记(五) Color Image Processing 1 Color Image Representation in MATLAB 这里不多说了,彩色图片在计算机中以R ...
- matlab bwmorph spur,matlab图像处理学习笔记-数学形态与二值图像操作
matlab图像处理学习笔记-数学形态与二值图像操作 数学形态学主要处理的是二值图像,因为二值图像的处理操作比较简单. 9.1 数学形态学图像处理 基本思想:利用一个称作结构元素(structurin ...
- B站台湾大学郭彦甫|MATLAB 学习笔记|09 图像处理II Image Processing
MATLAB学习笔记(09 图像处理II Image Processing) 如果想获得更好浏览体验的朋友可以转到下面链接 09 1. 提出问题 题目:如何找出图片中的米粒,并且确定他们的大小? 老师 ...
- Matlab学习笔记(3)—GUI程序设计与图像处理基本操作
Matlab学习笔记(3)-GUI程序设计与图像处理基本操作 一.GUI程序设计 如果想要开始使用Matlab进行GUI编程,首先需要进入Matlab的GUI界面对GUI有一个基本的认识. 1.gui ...
- 数字图像处理MATLAB学习笔记(一)
数字图像处理MATLAB学习笔记(一) 灰度转换与空间滤波 本节主要使用Matlab语言进行灰度转换与空间滤波的使用 并对相关数学原理进行总结 1. Intensity Transformer Fun ...
- MATLAB学习笔记2:MATLAB基础知识(下)
阅读前请注意: 1. 该学习笔记是华中师范大学HelloWorld程序设计协会2021年寒假MATLAB培训的学习记录,是基于培训课堂内容的总结归纳.拓展阅读.博客内容由 @K2SO4钾 撰写.编辑, ...
最新文章
- 关于redis的几件小事(一)redis的使用目的与问题
- 安全访问服务边缘(SASE)是什么?
- LBP特征的理论介绍
- 转发:Datawhale第七期组队学习计划
- C++将类的构造函数、析构函数声明为private或者protected的用途
- Spring Boot集成Redis,这个坑把我害惨了!
- 丘处机《摄生消息论》(转)
- C++ Primer Plus 第一章 预备知识
- golang 切片追加问题
- 【敏捷开发每日一贴】代码走查
- Binder机制原理简述
- python机械臂写字_SCARA机器人 机械手臂 写字机 DIY 视觉识别
- 关于ARPG发展之操作和技能之泛泛而谈(转)
- 镜头焦距与拍摄距离以及拍摄范围的关系
- 网络计算机应急处理,国家计算机网络应急技术处理协调中心-计算机网络安全应急处理.ppt...
- python运行调出控制台_python控制台怎么打开
- Java程序员最全面的学习路线图
- CSS样式自动换行(强制换行)
- !=EOF的含义和原理
- ECG分析:基于深度学习的ECG心律失常分类入门(4)
热门文章
- Mac labelme安装及运行时崩溃bug解决
- 论坛文中前面加html,社区 论坛 美化帖子HTML基础代码 文字移动特效 及图片加字代码...
- PPT:一个PPT中怎么引入另一个PPT的源格式内容
- 激活函数的比较和优缺点,sigmoid,tanh,relu,softmax
- linux内核使用make编译出错,编译Linux内核出现错误:make vexpress_defconfig menuconfig...
- 美团优选前端面试经验分享
- 第2章(Java 的基本程序设计结构)
- dcloud IOS 网络不通问题
- 功率很高的硬盘坏道软修复方法
- web python 自动化是什么_Web自动化Selenium+Python系列之一自动化测试基础