【Matlab 常用图像处理函数 汇总】
Matlab 常用图像处理函数 汇总
- 一、图像的读取
- 二、图像的写入
- 三、图像的显示
- 四、创建窗口
- 五、图像的格式转换
- 六、灰度直方图
- 七、伽马变换
- 八、图像二值化
- 九、阈值变换
- 十、直方图均衡化
- 十一、图像平移
- 十二、图像镜像
- 十三、图像转置
- 十四、图像中心旋转
- 十五、添加噪声
- 十六、图像滤波
- 十七、滤波器设计
- 十八、中值滤波
- 十九、图像锐化
- 1、Robert交叉梯度
- 2、高斯-拉普拉斯锐化
- 二十、傅里叶变换
- 二十一、图像腐蚀
- 二十二、图像膨胀
- 二十二、开闭运算
- 二十三、连通分量提取
- 二十四、形态学处理
- 二十五、图像分割
- 1、基于梯度算子的边缘检测
- 2、基于高斯-拉普拉斯算子的边缘检测
- 3、基于Canny算子的边缘检测
- 二十六、霍夫变换
- 1、霍夫变换(针对二值图像)
- 2、寻找峰值—houghpeaks
- 3、提取直线段—houghlines
一、图像的读取
A=imread(‘1.bmp’); %读入图像
二、图像的写入
imwrite(A,‘test.bmp’);
三、图像的显示
imshow(I,[low high]);
I为要显示的图像矩阵。[low high]为指定显示灰度图像的灰度范围。 高于high的像素被显示成白色;低于low的像素被显示成黑色;介于 High和low之间的像素被按比例拉伸后显示为各种等级的灰色。
四、创建窗口
figure;%创建一个新的窗口
subplot(m,n,p); 打开一个有m行n列图像位置的窗口,并将焦点位于第p个位置上。
五、图像的格式转换
A=im2bw(I,LEVEL); //阈值法从灰度图、RGB图创建二值图。LEVEL为指定的阈值(0,1)。
A=rgb2gray(I);从RGB图创建灰度图
A=im2uint8(I);将图像转换成uint8类型
A=im2double(I); 将图像转换成double类型
六、灰度直方图
imhist(I);
[M,N]=size(I); %计算图像大小
[counts,x]=imhist(I,32);%计算有32个小区间的灰度直方图
counts=counts/M/N;%计算归一化灰度直方图各区间的值
stem(x,counts);%绘制归一化直方图
七、伽马变换
J=imadjust(I,[low_in high_in],[low_out high_out],gamma)
I=imread('1.bmp');
I = rgb2gray(I);
I = imadjust(I,[],[],0.5);
figure;imshow(I); %gamma=0.5
title('Gamma 0.5');
八、图像二值化
BW=im2bw(I,level);%level为人工设定阈值范围为[0 ,1]
九、阈值变换
thresh=graythresh(I);%自动设定所需的最优化阈值
十、直方图均衡化
[J,T]=histeq(I); %J为输出图像,T为变换矩阵
十一、图像平移
strel(); //创建形态学结构元素
translate(SE,[y x])%原结构元素SE上y和x方向平移
imdilate%形态学膨胀
I=imread(1.bmp');
se=translate(strel(1),[180 190]);
B=imdilate(I,se);
figure;
subplot(1,2,1);
subimage(I);
title('原图像');
subplot(1,2,2);
subimage(B);
title('平移后图像');
十二、图像镜像
B=imtransform(A,tform,method);
tform=makeform(transformtype,matrix);%空间变换结构
Method合法值 | 含义 |
---|---|
‘bicubic’ | 双三次插值 |
‘bilinear’ | 双线性插值 |
‘nearest’ | 最近邻插值 |
参数transformtype指定了变换的类型,常见的’affine’为二维或 多维仿射变换,包括平移、旋转、比例、拉伸和错切等。 matrix为相应的仿射变换矩阵。
A=imread(1.bmp');
[height,width,dim]=size(A);
tform=maketform('affine',[-1 0 0;0 1 0;width 0 1]);
B=imtransform(A,tform,'nearest');
tform2=maketform('affine',[1 0 0;0 -1 0;0 height 1]);
C=imtransform(A,tform2,'nearest');
figure;imshow(B); //水平镜像
figure;imshow(C); //垂直镜像
十三、图像转置
A=imread(1.bmp');
tform=maketform('affine',[0 1 0;1 0 0;0 0 1]);
B=imtransform(A,tform,'nearest');
figure;imshow(B);
十四、图像中心旋转
B=imrotate(A,angle,method,’crop’);
angle为旋转角度,正值为逆时针旋转。可选参数method为imrotate函数指定 插值方法。‘crop’选项会裁减旋转后增大的图像,保持和原图像同样大小
A=imread('nir.bmp');
B=imrotate(A,30,'nearest','crop');
figure;imshow(B); //逆时针旋转30°
十五、添加噪声
h=imnoise(I,type,parameters);
type合法值 | 含义 |
---|---|
‘gaussian’ | 高斯白噪声 |
‘salt&pepper’ | 椒盐噪声 |
十六、图像滤波
B=imfilter(f,w,option1,option2,…);
f 为要进行滤波操作的图像。
w为滤波操作使用的模板,为一个二维数组,可自己定义。
option1……是可选项,包括:
1、边界选项(’symmetric’、’replicate’、’circular’)
2、尺寸选项(’same’、’full’)
3、模式选项(’corr’、’conv’)
十七、滤波器设计
h=fspecial(type,parameters)
parameters为可选项,是和所选定的滤波器类型type相关的 配置参数,如尺寸和标准差等。 type为滤波器的类型。其合法值如下:
type合法值 | 含义 |
---|---|
‘average’ | 平均模板 |
‘disk’ | 圆形领域的平均模板 |
‘gaussian’ | 高斯模板 |
‘laplacian’ | 拉普拉斯模板 |
‘log’ | 高斯-拉普拉斯模板 |
‘prewitt’ | Prewitt水平边缘检测算子 |
‘sobel’ | Sobel水平边缘检测算子 |
十八、中值滤波
I=medfilt2(I1,[m,n]);
m和n为中值滤波处理的模板大小,默认3*3
十九、图像锐化
1、Robert交叉梯度
I=imread(1.bmp');
I=double(I);%双精度化
w1=[-1 0;0 1];
w2=[0 -1;1 0];
G1=imfilter(I,w1,‘corr’,‘replicate’);%正45°梯度
G2=imfilter(I,w2,‘corr’,‘replicate’);%负45°梯度
G=abs(G1)+abs(G2);%计算Robert梯度
figure;imshow(G,[]);
figure;imshow(abs(G1),[]);
figure;imshow(abs(G2),[]);
2、高斯-拉普拉斯锐化
I=imread('1.bmp');
J=double(I);%双精度化
h1=fspecial('log',5,0.5);%大小为5,sigma=0.5的LOG算子
I1=imfilter(J,h1,'corr','replicate');
figure;imshow(uint8(abs(I1)),[]);
h2=fspecial('log',5,2);%大小为5,sigma=2的LOG算子
I2=imfilter(J,h2,'corr','replicate');
figure;imshow(uint8(abs(I2)),[]);
二十、傅里叶变换
I=fft2(x);%快速傅里叶变换
I=fft2(x,m,n); x为输入图像;
m和n分别用于将x的第一和第二维规整到指定的长度。
I1=abs(I);%计算I的幅度谱
I2=angle(I);%计算I的相位谱
Y=fftshift(I);%频谱平移
I=ifft2(x);%快速傅里叶逆变换
I=ifft2(x,m,n);
二十一、图像腐蚀
I2=imerode(I,SE);
SE=strel(shape,parameters);
I为原始图像,可以是二值或者灰度图像。
shape指定了结构元素的形状。
parameters是和输入shape有关的参数。
shape合法值 | 含义 |
---|---|
‘arbitrary’或为空 | 任意自定义结构元素 |
‘disk’ | 圆形结构元素 |
‘square’ | 正方形结构元素 |
‘rectangle’ | 矩形结构元素 |
‘line’ | 线性结构元素 |
‘pair’ | 包含2个点的结构元素 |
‘diamond’ | 菱形的结构元素 |
二十二、图像膨胀
J=imdilate(I,SE);
SE=strel(shape,parameters);
I为原始图像,可以是二值或者灰度图像。
shape指定了结构元素的形状。
parameters是和输入shape有关的参数
二十二、开闭运算
SE=strel(shape,parameters);
I2=imopen(I,SE);%开运算
I3=imclose(I,SE);%闭运算
二十三、连通分量提取
[L num]=bwlabel(Ibw,conn);
Ibw为一幅输入二值图像。
conn为可选参数,指明提取连通分量是4连通还是8连通。默认为8。
L为连通分量标注图像。
num为二值图像Ibw中连通分量个数。
二十四、形态学处理
I=bwmorph(I,operation,n)
operation合法值 | 含义 |
---|---|
‘bridge’ | 桥接有单个像素缝隙分割的前景像素 |
‘diag’ | 围绕对角线相连的前景像素进行填充 |
‘clean’ | 清楚孤立的前景像素 |
‘fill’ | 填充单个像素的孔洞 |
‘hbreak’ | 去掉前景中的H形连接 |
‘majority’ | 如果点P的8领域中一半以上像素为前景像素,则 P为前景像素,否则为背景。 |
二十五、图像分割
1、基于梯度算子的边缘检测
BW=edge(I,type,thresh,direction,’nothinning’) ;
type合法值 | 含义 |
---|---|
‘sobel’ | sobel算子 |
‘prewitt’ | prewitt算子 |
‘rebert’ | rebert算子 |
thresh是敏感度阈值参数,任何灰度值低于此阈值的边缘将不 会被检测到。默认值为空矩阵[],此时算法自动计算阈值。
direction指定了我们感兴趣的边缘方向,edge函数将只检测direction中指定方 向的边缘,其合法值如下:
direction合法值 | 边缘方向 |
---|---|
‘horizontal’ | 水平方向 |
‘vertical’ | 竖直 方向 |
‘both’ | 所有方向 |
可选参数’nothinning’,指定时可以通过跳过边缘细化算法来加快算法 运行的速度。默认是’thinning’,即进行边缘细化。
2、基于高斯-拉普拉斯算子的边缘检测
BW=edge(I,’log’,thresh,sigma) ;
sigma指定生成高斯滤波器所使用的标准差。默认时,标准差为2。
3、基于Canny算子的边缘检测
BW=edge(I,’canny’,thresh,sigma) ;
thresh是敏感度阈值参数,默认值为空矩阵[]。此处为一列向量,为算法指 定阈值的上下限。第一个元素为阈值下限,第二个元素为阈值上限。如果 只指定一个阈值元素,则默认此元素为阈值上限,其0.4倍的值作为阈值下 限。如阈值参数没有指定,则算法自行确定敏感度阈值上下限。
a=imread(1.bmp');
c=fspecial('gaussian',5,0.8);
b=imfilter(a,c);
bw1=edge(b,‘sobel’);%sobel算子
bw2=edge(b,‘prewitt’);%prewitt算子
bw3=edge(b,‘roberts’);%roberts算子
bw4=edge(b,‘log’); %log算子
bw5=edge(b,‘canny’);%canny算子
figure;imshow(bw1);imwrite(bw1,'bwsobel.bmp'); figure;imshow(bw2);imwrite(bw2,'bwprewitt.bmp'); figure;imshow(bw3);imwrite(bw3,'bwroberts.bmp'); figure;imshow(bw4);imwrite(bw4,'bwlog.bmp'); figure;imshow(bw5);imwrite(bw5,'bwcanny.bmp');
二十六、霍夫变换
1、霍夫变换(针对二值图像)
[H,theta,rho]=hough(BW,param1,val1,param2,val2);
2、寻找峰值—houghpeaks
peaks=houghpeaks(H,numpeaks,param1,val1,param2,val2);
3、提取直线段—houghlines
lines=houghlines(BW,theta,rho,peaks,param1,val1,param2,val2);
————————————————————————————————
【Matlab 常用图像处理函数 汇总】相关推荐
- 数字图像处理,Matlab常用图像处理函数汇总
原文地址:Matlab图像处理函数汇总 作者:mimi 图像的变换 ① fft2:fft2函数用于数字图像的二维傅立叶变换,如:i=imread('104_8.tif'); j=fft2(i); ② ...
- Opencv的使用小教程2——Opencv常用图像处理函数汇总
Opencv的使用小教程2--Opencv常用图像处理函数汇总 1.blur 2.GaussianBlur 3.medianBlur 4.bilateralFilter 5.腐蚀和膨胀 6.morph ...
- R语言常用sys函数汇总:sys.chmod、Sys.Date、Sys.time、Sys.getenv、Sys.getlocale、sys.getpid、sys.glob、sys.info等
R语言常用sys函数汇总:sys.chmod.Sys.Date.Sys.time.Sys.getenv.Sys.getlocale.sys.getpid.sys.glob.sys.info等 目录
- MATLAB常用数学函数
MATLAB常用数学函数 l 三角函数和双曲函数 名称 含义 名称 含义 名称 含义 sin 正弦 csc 余割 atanh 反双曲正切 cos 余弦 asec 反正割 acoth 反双 ...
- Mysql中常用的函数汇总
Mysql中常用的函数汇总: 一.数学函数 abs(x) 返回x的绝对值 bin(x) 返回x的二进制(oct返回八进制,hex返回十六进制) ceiling(x) 返回大于x的最小整数值 exp(x ...
- 让你瞬间提高工作效率的常用js函数汇总
让你瞬间提高工作效率的常用js函数汇总(持续更新) 前言 本文总结了项目开发过程中常用的js函数和正则,意在提高大家平时的开发效率,具体内容如下: 常用的正则校验 常用的设备检测方式 常用的日期时间函 ...
- matlab 常用数学函数
MATLAB常用的基本数学函数 abs(x):纯量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z): ...
- Matlab常用数学函数和数学运算符
Matlab的内部常数 eps 浮点相对精度 pi 圆周率 exp 自然对数的底数e i 或j 虚数单位 Inf或 inf 无穷大 Matlab概率密度函数 betapdf ...
- excel中最常用的30个函数_最常用日期函数汇总excel函数大全收藏篇
在我们的实际工作中,经常需要用到日期函数.日期函数那么多,你还只会用函数TODAY吗?那你就OUT了.今天一起来看下常用日期函数的用法! 1.DATE 函数DATE:返回在日期时间代码中代表日期的数字 ...
最新文章
- (C++)一行代码递归实现辗转相除法
- 生成随机数放入整型数组怎么判断有没有重复_图的应用(1)-连通图的最小生成树(Prim算法和Kruskal算法)...
- python 列表 头部 尾部 添加元素
- 变频器怎么设置_如何利用串口调试软件与变频器通信?
- kafka安装及Kafka-PHP扩展的使用
- C++ Boost 学习资源列表
- 13点建议顺利通过JAVA面试【转载】
- signature=486e34400687432217e65e837b8e6753,PXE常见错误代码表
- MySQL快速生成连续整数
- python多进程传递参数_急急急, Python 多进程,如何传递 epoll?
- Oracle备份如何到异机还原
- playSwift第五章(函数和闭包)
- python接口自动化测试(七)-unittest-批量用例管理
- 程序基本编写方法python_python程序设计基本编写方法
- 斯坦福大学公开课:量子力学
- 第六届”蓝帽杯“全国大学生网络安全技能大赛WriteUp
- Hadoop加速器GridGain
- 【踩坑记录】colmap中的相机位姿的坐标系定义及其可视化结果的隐含转换
- python自定义cmap_python自定义cmap_Python matplotlib的使用并自定义colormap的方法
- 关于微信公众平台迁移见证需要具备什么条件?
热门文章
- java 合并和拆分单元格_如何在Microsoft Word中合并和拆分表和单元格
- gb18030 mysql_mysql无法识别OS Characterset GB18030的处理
- 关于sqlmap的一些命令
- 论区块链技术的未来应用场景
- 流控制(RTS/CTS/DTR/DSR )
- 跨链协议LayerZero和Gh0stly Gh0sts幽灵NFT技术原理分析
- Unity 游戏场景
- linux中怎么运行chkdsk,是否有适用于Ubuntu的chkdsk等效文件?
- 嵌入式python智能实训总结_智能楼宇实训心得体会
- 现代雷达系统分析与设计---动目标显示(MTI)