【Matlab 常用图像处理函数 汇总】

您所在的位置:网站首页 图像处理用什么处理器比较好 【Matlab 常用图像处理函数 汇总】

【Matlab 常用图像处理函数 汇总】

2024-07-16 20:02| 来源: 网络整理| 查看: 265

Matlab 常用图像处理函数 汇总 一、图像的读取二、图像的写入三、图像的显示四、创建窗口五、图像的格式转换六、灰度直方图七、伽马变换八、图像二值化九、阈值变换十、直方图均衡化十一、图像平移十二、图像镜像十三、图像转置十四、图像中心旋转十五、添加噪声十六、图像滤波十七、滤波器设计十八、中值滤波十九、图像锐化1、Robert交叉梯度2、高斯-拉普拉斯锐化 二十、傅里叶变换二十一、图像腐蚀二十二、图像膨胀二十二、开闭运算二十三、连通分量提取二十四、形态学处理二十五、图像分割1、基于梯度算子的边缘检测2、基于高斯-拉普拉斯算子的边缘检测3、基于Canny算子的边缘检测 二十六、霍夫变换1、霍夫变换(针对二值图像)2、寻找峰值—houghpeaks3、提取直线段—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);

————————————————————————————————



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3