您的位置:首页 > 编程语言 > MATLAB

图像处理基本知识点整理(matlab函数)

2016-03-09 16:43 363 查看
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%图像处理的基本知识%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5

f=imread('W:/apple.jpg') %读取图像

imwrite(g, 'W:/apple.png') %保存图像

imshow(g) %显示图像

g=rgb2gray(f) %彩色图转换成灰度图

g=im2bw(f,parameter) %将图像转化为二值图像,参数用来区分分割线取值为0-1中的值

[rows , cols , colors] = size(f) %获取图像行数、列数和颜色级别

g1=imadjust(f, [0 1], [1 0]) %亮度变换,这里这个示例将图像颜色对调

F=fft2(f) %傅立叶变换

FC=fftshift(F) %将变换原点移到频率矩形的中心

imhist(g) %直方图(g为灰度图)

histeq(g, 256) %直方图均衡化,第二个参数为输出图像指定的灰度级数,返回的是均衡化之后的数据,若要显示继续使用imhist

g=histeq(f,hspec) %直方图匹配(规定化),第二个参数为参考的直方图

mapminmax(im,0,1) %归一化

subplot(r,c,number) %划分显示的位置

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%图像滤波%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

目的:消除图像中的噪点

要构造一种有效抑制噪声的滤波器必须考虑两个基本问题:

(1)能有效地去除目标和背景中的噪声;

(2)能很好地保护图像目标的形状、大小及特定的几何和拓扑结构特征。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%线性空间滤波%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

不好之处:会在一定程度上模糊图像的细节

w=ones(31); %单位矩阵掩模

gd=imfilter(f,w); %imfilter为滤波函数,第一个参数为输入图像,第二个参数为滤波器或掩模,第三个参数处理边界参数类型,一般为replicate;

%线性空间滤波器fspecial用于生成滤波器,第一个参数为滤波器类型

'average' averaging filter H = fspecial('average',HSIZE) [1/9 1/9 1/9;1/9 1/9 1/9;1/9 1/9 1/9]

'disk' circular averaging filter H = fspecial('disk',RADIUS)

'gaussian' Gaussian lowpass filter H = fspecial('gaussian',HSIZE,SIGMA)

'laplacian' filter approximating the 2-D Laplacian operator H = fspecial('laplacian',ALPHA)

'log' Laplacian of Gaussian filter H = fspecial('log',HSIZE,SIGMA)

'motion' motion filter H = fspecial('motion',LEN,THETA)

'prewitt' Prewitt horizontal edge-emphasizing filter H = fspecial('prewitt') 用于边缘增强,大小为[3 3],无参数 [1 1 1;0 0 0;-1 -1 -1].

'sobel' Sobel horizontal edge-emphasizing filter H = fspecial('sobel') 用于边缘提取,无参数 [1 2 1;0 0 0;-1 -2 -1].

%%生成的滤波算子

h=fspecial('average') 默认生成3*3的

0.1111 0.1111 0.1111

0.1111 0.1111 0.1111

0.1111 0.1111 0.1111

h=fspecial('disk',1) 半径为1

0.0251 0.1453 0.0251

0.1453 0.3183 0.1453

0.0251 0.1453 0.0251

h=fspecial('gaussian') 默认规模3*3,标准值为0.5 可以看出中间所占比例相对圆盘算子更大 高斯低通滤波

0.0113 0.0838 0.0113

0.0838 0.6193 0.0838

0.0113 0.0838 0.0113

h=fspecial('laplacian') 规模为3*3 ,中间值等于周围值之和,符号相反

0.1667 0.6667 0.1667

0.6667 -3.3333 0.6667

0.1667 0.6667 0.1667

fspecial('gaussian',[5,5],0.6) %高斯低通滤波算子

fspecial(‘laplacian’, 0) %拉普拉斯算子

fspecial('average',hsize); %均值算子,hsize表示生成的掩模的大小默认为[3 3]

w8=[1 1 1; 1 -8 1; 1 1 1];

w4=[0 1 0;1 0 1;0 1 0];

%imadd和imsubtract为加减函数

g4=imsubtract(f, imfilter(f, w4, ‘replicate’))%滤波后相减

g8=imadd( f, imfilter(f, w8, ‘replicate’)) %滤波后相加

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%非线性空间滤波器%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%领域值滤波

%使用邻域的一组排序元素中的第oder个元素来代替f中的每个元素,而该邻域则由domain中的非零元素指定。

g=ordfilt2(f, order, domain)

%中值滤波器。中值滤波对处理椒盐噪声(一些黑白亮点,盐表示白色,椒表示黑色)非常有效,或者称为脉冲噪声。

%padopt指定了三个可能的边界填充选项之一。‘zeros’(默认值)。‘symmetric’,镜像反射。‘indexed’,double类图像,以1填充,否则以0填充。

g=medfilt2(f, [m n],padopt)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%形态学基本知识膨胀腐蚀%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%生成结构元素

B=[0 1 0; 1 1 1; 0 1 0]

B=strel('disk',1) %与上式等效

Examples

se1 = strel('square',11) % 11-by-11 square

se2 = strel('line',10,45) % line, length 10, angle 45 degrees

se3 = strel('disk',15) % disk, radius 15

se4 = strel('ball',15,5) % ball, radius 15, height 5

g2=imdilate(g, B) %膨胀

g3=imerode(g,B) %腐蚀

%先腐蚀后膨胀的过程称为开运算。

%用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积

go=imopen(g,B) %开运算

%先膨胀后腐蚀的过程称为闭运算。

%用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积。

gc=imclose(g,B) %闭运算

%函数bwmorph用于处理膨胀,腐蚀,查找表的组合实现处理二值图

bwmorph(f,operation);

OPERATION is a string that can have one of these values:

'bothat' Subtract the input image from its closing

'branchpoints' Find branch points of skeleton

'bridge' Bridge previously unconnected pixels

'clean' Remove isolated pixels (1's surrounded by 0's)

'close' Perform binary closure (dilation followed by

erosion)

%%%%%%%%%%%%%灰度图像的形态学%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%膨胀

%腐蚀

%开运算 去除图中比结构元素亮的细节

%闭运算 去除图中比结构元素暗的细节

%顶帽变换:从原图中减去开运算后的结果 第二个参数表示结构元素

imtophat(f,se);

%底帽变换:从原图中减去执行闭运算后的结果

imbothat(f,se);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%边缘检测%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

[gsobel,t]=edge(f, ‘sobel’,T,dir) %边缘检测 其中第二参数表示所使用的方法,第三个参数为阈值,第四个参数表示边缘检测的首选方向

imshow(gsobel)

method方法的参数常见的有“sobel”,“prewitt”,“roberts”,"log","zerocross","canny" 最后一个效果最好

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%区域标记%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%可以结合膨胀腐蚀取得更好的效果

T=graythresh(g) %全局阈值处理,得到区域划分的阈值

gb=im2bw(g, T); %二值图像

%局部阈值处理,区域生长

%步骤

%1.选择种子

%2.选择合理阈值

%3.找出所有满足的点

%4.连接到每个种子的点
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: