空间域图像增强

空间域图像增强

空间域图像增强

基本概念(引用):

参考:https://www.mathworks.com/help/images/ref/imguidedfilter.html

https://blog.csdn.net/wp1603710463/article/details/50408152

https://www.zhihu.com/question/27780598

我一直怀疑我参考的是我某位学长,这跟我们学校图像方面的本科教学意料之中的一致。

​ 图像增强可分成两大类:频率域法和空间域法。前者把图像看成一种二维信号,对其进行基于二维傅里叶变换的信号增强。采用低通滤波(即只让低频信号通过)法,可去掉图中的噪声;采用高通滤波法,则可增强边缘等高频信号,使模糊的图片变得清晰。后者空间域法中具有代表性的算法有局部求平均值法和中值滤波(取局部邻域中的中间像素值)法等,它们可用于去除或减弱噪声。

​ 图像增强的方法是通过一定手段对原图像附加一些信息或变换数据,有选择地突出图像中感兴趣的特征或者抑制(掩盖)图像中某些不需要的特征,使图像与视觉响应特性相匹配。在图像增强过程中,不分析图像降质的原因,处理后的图像不一定逼近原始图像。图像增强技术根据增强处理过程所在的空间不同,可分为基于空域的算法和基于频域的算法两大类。基于空域的算法处理时直接对图像灰度级做运算,基于频域的算法是在图像的某种变换域内对图像的变换系数值进行某种修正,是一种间接增强的算法。

​ 基于空域的算法分为点运算算法和邻域去噪算法。点运算算法即灰度级校正、灰度变换和直方图修正等,目的或使图像成像均匀,或扩大图像动态范围,扩展对比度。邻域增强算法分为图像平滑和锐化两种。平滑一般用于消除图像噪声,但是也容易引起边缘的模糊。常用算法有均值滤波、中值滤波。锐化的目的在于突出物体的边缘轮廓,便于目标识别。常用算法有梯度法、算子、高通滤波、掩模匹配法、统计差值法等。

概念理解:图像增强?怎么才算增强了呢?
从应用角度看,怎么处理以下情况:
(1)图像太暗;
(2)图像太亮;
(3)有噪声点;
(4)对比度不明显。

空间域图像增强的方法:
1)针对每一个个像素处理
① 简单变换(取反,线性变换,指数变换,对数变换,幂次变换);
② 使用滤波器(算子)。
2)针对一组像素处理(直方图)
① 直方图均衡;
② 直方图匹配。
2.常用函数:
⑴ 取反(底片效果):imcomplement()
⑵ 二值化:~im2bw
⑶ 线性变换
⑷ 指数变换: exp()
⑸ 对数变换: log()

⑹ 幂次变换: power()
⑺ 查看直方图: imhist()
⑻ 使用直方图均衡:Histeq()
⑼ 使用平滑滤波器:(imfilter实现函数滤波)
⑽ 使用锐化滤波器
⑾ 旋转、缩放、剪切等: imrotate imresize imcrop

⑿ 对比度增强:imadjust()

实验:

  1. 用Matlab写一段程序,针对提供的图片IMG_2546.JPG,实现:

① (1)查看直方图

② (2)取反,再查看直方图

③ (3)使用直方图均衡,再查看直方图

④ (4) 通过旋转、切割,仅保留“爱丁堡花园”部分

  1. 针对图像100_3228.JPG,使用图像增强的方法使图像的效果好一点,并对比增强前后的直方图变化。

    3.人脸1.jpg、2.jpg、3.jpg、4.jpg进行滤波等操作实现类似美图秀秀磨皮功能,并对比磨皮前后直方图变化。

1、图片IMG_2546.JPG

(1)查看直方图

Code:

1
2
3
4
5
6
7
8
9
10
11
12
clc
clear all
close all
subplot(3,2,1);
%查看直方图
init_Img=imread('E:\University\Digital image\IMG_2546.JPG');
%imshit()直方图的显示
%imhist需要输入一个二维的输入参数,如果输入的图像是一个彩色图像的话,
%不能直接用imhist命令,需要先将图像转成灰度图。
i=rgb2gray(init_Img);
imhist(i);
title('org hist');

直方图:

(2)取反,再查看直方图

Code:

1
2
3
4
5
%取反,查看
subplot(3,2,2);
contray_i = imcomplement(i);
imhist(contray_i);
title('contray hist');

结果:

(3)使用直方图均衡,再查看直方图

Code

1
2
3
4
5
%使用直方图均衡,再查看直方图
subplot(3,2,3);
banlance_i = histeq(i);
imhist(banlance_i);
title('均衡后');

结果:

(4)通过旋转,切割,仅保留“爱丁堡花园”部分

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
%通过旋转,切割,仅保留“爱丁堡花园”部分
figure(2);
subplot(1,1,1);
%axis( [xmin xmax ymin ymax] ) 设置当前坐标轴 x轴 和 y轴的限制范围
axis([50,250,50,200]);
imshow(init_Img);
grid on; %显示网格线
axis on; %显示坐标系
title('原图');
%旋转
figure(3);
subplot(1,1,1);
angle_i=imrotate(init_Img,-10,'bilinear','crop');
axis([50,200,50,200]);
imshow(angle_i);
grid on;
axis on;
title('旋转后');
%600 550 900 620 裁剪
figure(4);
subplot(1,1,1);
crop_i = imcrop(angle_i,[600,550,abs(600-900),abs(550-620)]);
imshow(crop_i);
title('裁剪后');

结果:

原图

旋转后:

裁剪后

2、图片100_3228.JPG,使用图像增强的方法使图像效果好一点,并对比增强前后的直方图变化

原图

1、使用中值滤波器 medfilt2

Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
clc
clear all
close all
figure(1);
subplot(1,1,1);
init_Img=imread('E:\University\Digital image\100_3228.JPG');
init1 = imread('E:\University\Digital image\1.jpg');
init2 = imread('E:\University\Digital image\2.jpg');
init3 = imread('E:\University\Digital image\3.jpg');
init4 = imread('E:\University\Digital image\4.jpg');

imshow(init_Img);

figure(2);
subplot(1,1,1);
init_rgb = rgb2gray(init_Img);
imhist(init_rgb);
title('init hist');

%用图像增强的方法使图像的效果好一点,并对比增强前后的直方图变化。

%直方图均衡化实现
figure(3);
subplot(1,1,1);
tmp1=init_Img;
R = tmp1(:,:,1);
G = tmp1(:,:,2);
B = tmp1(:,:,3);
%medfilt2 消除噪声, 中值滤波器, 椒盐噪声
r=medfilt2(R); %medfilt2()中值滤波
g=medfilt2(G);
b=medfilt2(B);
o=histeq(r); %直方图均衡
p=histeq(g);
q=histeq(b);
%cat:用来联结数组
Photo1 = cat(3,o,p,q);
imshow(Photo1,[]);
title('均衡化后的图像');

2、使用高斯滤波器

Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
%使用imfilter滤波
%https://blog.csdn.net/u010740725/article/details/51557202
figure(4);
subplot(1,1,1);
tmp2 = init_Img;
R1 = tmp2(:,:,1);
G1 = tmp2(:,:,2);
B1 = tmp2(:,:,3);
r1 = histeq(R1);
g1 = histeq(G1);
b1 = histeq(B1);
%fspecial() 生成滤波器(也叫算子)的函数
%fspecial(type,para)
%gaussian 高斯滤波器
gaussianFilter = fspecial('gaussian',[7,7],5); %滤波器size:7*7 标准差:5
%imfilter()
%函数语法:g=imfilter(f,w,filtering_mode,boundary_options,size_optinos)
%函数功能:对任意类型数组或多维图像进行滤波
%参数介绍:f是输入图像,w为滤波模板,g为滤波结果;表1-1总结了其他参数的含义。
o1 = imfilter(r1,gaussianFilter, 'symmetric','conv');
p1 = imfilter(g1,gaussianFilter, 'symmetric','conv');
q1 = imfilter(b1,gaussianFilter, 'symmetric','conv');
Photo2 = cat(3,o1,p1,q1);
imshow(Photo2,[]);
title('均衡化后的图像');

比较结果:

1
2
3
4
5
6
7
8
9
%比较效果
figure(5);
subplot(1,3,1);
imshow(init_Img);
subplot(1,3,2);
imshow(Photo1);
subplot(1,3,3);
imshow(Photo2);
title('比较');

1
2
3
4
5
6
7
8
9
10
figure(5);
subplot(1,3,1);
imhist(init_rgb);
subplot(1,3,2);
rgb1 = rgb2gray(Photo1);
imhist(rgb1);
subplot(1,3,3);
rgb2 = rgb2gray(Photo2);
imhist(rgb2);
title('直方图比较');

3、实现类似美图秀秀磨皮功能,并对比磨皮前后直方图变化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
clc
clear all
close all
init_Img=imread('E:\University\Digital image\100_3228.JPG');
init1 = imread('E:\University\Digital image\1.jpg');
init2 = imread('E:\University\Digital image\2.jpg');
init3 = imread('E:\University\Digital image\3.jpg');
init4 = imread('E:\University\Digital image\4.jpg');
figure(16);
LL = double(init4);
HH= double(imguidedfilter(uint8(LL))) -LL +135;
%HH= double(imgaussfilt(uint8(LL),2)) -LL +135;
GG = imfilter(HH,fspecial('gaussian',[3,3],100));
opacity = 50;
Dest = (LL*(100-opacity) + (LL+2*GG-256)*opacity)/100;
imshow([uint8(LL) uint8(Dest)]);
title('数学公式');

最后一张直方图对比:

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
clc
clear all
close all
subplot(3,2,1);
%查看直方图
init_Img=imread('E:\University\Digital image\IMG_2546.JPG');
%imshit()直方图的显示
%imhist需要输入一个二维的输入参数,如果输入的图像是一个彩色图像的话,
%不能直接用imhist命令,需要先将图像转成灰度图。
i=rgb2gray(init_Img);
imhist(i);
title('org hist');
%取反,查看
subplot(3,2,2);
contray_i = imcomplement(i);
imhist(contray_i);
title('contray hist');

%使用直方图均衡,再查看直方图
subplot(3,2,3);
banlance_i = histeq(i);
imhist(banlance_i);
title('均衡后');

%通过旋转,切割,仅保留“爱丁堡花园”部分
figure(2);
subplot(1,1,1);
%axis( [xmin xmax ymin ymax] ) 设置当前坐标轴 x轴 和 y轴的限制范围
axis([50,250,50,200]);
imshow(init_Img);
grid on; %显示网格线
axis on; %显示坐标系
title('原图');
%旋转
figure(3);
subplot(1,1,1);
angle_i=imrotate(init_Img,-10,'bilinear','crop');
axis([50,200,50,200]);
imshow(angle_i);
grid on;
axis on;
title('旋转后');
%600 550 900 620 裁剪
figure(4);
subplot(1,1,1);
crop_i = imcrop(angle_i,[600,550,abs(600-900),abs(550-620)]);
imshow(crop_i);
title('裁剪后');
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
clc
clear all
close all
figure(1);
init_Img=imread('E:\University\Digital image\100_3228.JPG');
init1 = imread('E:\University\Digital image\1.jpg');
init2 = imread('E:\University\Digital image\2.jpg');
init3 = imread('E:\University\Digital image\3.jpg');
init4 = imread('E:\University\Digital image\4.jpg');
%人脸1.jpg、2.jpg、3.jpg、4.jpg进行滤波等操作实现类似美图秀秀磨皮功能,并对比磨皮前后直方图变化
%可使用平滑滤波器
%常数128,其实也不一定是个定值,如果把他调大,则处理后的图像整体偏亮,调小则图像偏暗。
% 第五步的图层的不透明度参数也是一个道理,如果不透明度值越大,则图片整体的斑点可能会偏多,
%偏小,那么图像又会过于模糊,也许取个50%是个不错的选择吧,
%或者自己根据处理的纹理图的某个指标做个算法更好吧。
imshow(init_Img);

figure(2);
subplot(1,1,1);
init_rgb = rgb2gray(init_Img);
imhist(init_rgb);
title('init hist');

%用图像增强的方法使图像的效果好一点,并对比增强前后的直方图变化。

%直方图均衡化实现
figure(3);
subplot(1,1,1);
tmp1=init_Img;
R = tmp1(:,:,1);
G = tmp1(:,:,2);
B = tmp1(:,:,3);
%https://blog.csdn.net/cy_543/article/details/41548399
%http://www.ilovematlab.cn/forum.php?mod=viewthread&tid=537123
%medfilt2 消除噪声, 中值滤波器, 椒盐噪声
r=medfilt2(R); %medfilt2()中值滤波
g=medfilt2(G);
b=medfilt2(B);
o=histeq(r); %直方图均衡
p=histeq(g);
q=histeq(b);
%cat:用来联结数组
Photo1 = cat(3,o,p,q);
imshow(Photo1,[]);
title('均衡化后的图像');


%使用imfilter滤波
%https://blog.csdn.net/u010740725/article/details/51557202
figure(4);
subplot(1,1,1);
tmp2 = init_Img;
R1 = tmp2(:,:,1);
G1 = tmp2(:,:,2);
B1 = tmp2(:,:,3);
r1 = histeq(R1);
g1 = histeq(G1);
b1 = histeq(B1);
%fspecial() 生成滤波器(也叫算子)的函数
%fspecial(type,para)
%gaussian 高斯滤波器
%https://blog.csdn.net/chaolei3/article/details/79400658
gaussianFilter = fspecial('gaussian',[7,7],5); %滤波器size:7*7 标准差:5
%imfilter()
%函数语法:g=imfilter(f,w,filtering_mode,boundary_options,size_optinos)
%函数功能:对任意类型数组或多维图像进行滤波
%参数介绍:f是输入图像,w为滤波模板,g为滤波结果;表1-1总结了其他参数的含义。
o1 = imfilter(r1,gaussianFilter, 'symmetric','conv');
p1 = imfilter(g1,gaussianFilter, 'symmetric','conv');
q1 = imfilter(b1,gaussianFilter, 'symmetric','conv');
Photo2 = cat(3,o1,p1,q1);
imshow(Photo2,[]);
title('均衡化后的图像');

%比较效果
figure(5);
subplot(1,3,1);
imshow(init_Img);
subplot(1,3,2);
imshow(Photo1);
subplot(1,3,3);
imshow(Photo2);
title('比较');

figure(5);
subplot(1,3,1);
imhist(init_rgb);
subplot(1,3,2);
rgb1 = rgb2gray(Photo1);
imhist(rgb1);
subplot(1,3,3);
rgb2 = rgb2gray(Photo2);
imhist(rgb2);
title('直方图比较');




figure(16);
LL = double(init4);
HH= double(imguidedfilter(uint8(LL))) -LL +135;
%HH= double(imgaussfilt(uint8(LL),2)) -LL +135;
GG = imfilter(HH,fspecial('gaussian',[3,3],100));
opacity = 50;
Dest = (LL*(100-opacity) + (LL+2*GG-256)*opacity)/100;
imshow([uint8(LL) uint8(Dest)]);
title('数学公式');

figure(17);
subplot(1,2,1);
initrgb = rgb2gray(uint8(LL));
imhist(initrgb);
title('原图');
subplot(1,2,2);
tranrgb = rgb2gray(uint8(Dest));
imhist(tranrgb);
title('处理后');

%利用均值滤波对图像进行平滑处理
%M = rgb2gray(init2);
M = init4;
MR = M(:,:,1);
MG = M(:,:,2);
MB = M(:,:,3);
%添加高斯噪声 均值为0 方差w为0.02
mr = imnoise(MR,'gaussian',0,0.01);
mg = imnoise(MG,'gaussian',0,0.01);
mb = imnoise(MB,'gaussian',0,0.01);
%mr = histeq(mr);
%mg = histeq(mg);
%mb = histeq(mb);
re_Img1 = cat(3,mr,mg,mb);
% ctrl R T 注释操作

M= rgb2gray(init4);
J=imnoise(M,'gaussian',0,0.02);
J = double(J);
H1 = ones(3)/9;
H2 = ones(7)/49;
G1 = conv2(J,H1,'same');
G2 = conv2(J,H2,'same');

%J= rgb2gray(init4);
%均值滤波
%C=conv2(A,B,shape); %卷积滤波
%:输入图像,B:卷积核
%https://blog.csdn.net/jinv5/article/details/52874880
%只能处理灰度图像

% MR = double(MR);
% MG = double(MG);
% MB = double(MB);
% H1 = ones(3)/9;
% H2 = ones(7)/49;
% G1r = conv2(MR,H1,'same');
% G1g = conv2(MG,H1,'same');
% G1b = conv2(MB,H1,'same');
% G1 = cat(3,G1r,G1g,G1b);

% G2r = conv2(MR,H1,'same');
% G2g = conv2(MG,H1,'same');
% G2b = conv2(MB,H1,'same');
% G2 = cat(3,G2r,G2g,G2b);
figure(6);
subplot(2,2,1);
imshow(M);
title('原图像');

subplot(2,2,2);
imshow(re_Img1,[]);
title('高斯噪声');

subplot(2,2,3);
imshow(G1,[]);
title('3*3均值滤波图像');

subplot(2,2,4);
imshow(G2,[]);
title('7*7均值滤波图像');

% figure(7);
% imshow(re_Img1,[]);
%
% figure(8);
% imshow(G1,[]);
%
% figure(9);
% imshow(G2,[]);


%直方图均衡化实现
tmpn=init4;
Rn = tmpn(:,:,1);
Gn = tmpn(:,:,2);
Bn = tmpn(:,:,3);
%https://blog.csdn.net/cy_543/article/details/41548399
%http://www.ilovematlab.cn/forum.php?mod=viewthread&tid=537123
rn=medfilt2(Rn); %medfilt2()中值滤波
gn=medfilt2(Gn);
bn=medfilt2(Bn);
%on=histeq(rn); %直方图均衡
%pn=histeq(gn);
%qn=histeq(bn);
%cat:用来联结数组
Photon = cat(3,rn,gn,bn);
%Photon = cat(3,on,pn,qn);

tmp22 = init4;
R12 = tmp22(:,:,1);
G12 = tmp22(:,:,2);
B12 = tmp22(:,:,3);
r12 = R12;
g12 = G12;
b12 = B12;
%r12 = histeq(R12);
%g12 = histeq(G12);
%b12 = histeq(B12);
%fspecial() 生成滤波器(也叫算子)的函数
%fspecial(type,para)
%gaussian 高斯滤波器
%https://blog.csdn.net/chaolei3/article/details/79400658
gaussianFilter = fspecial('gaussian',[30,30],7); %滤波器size:7*7 标准差:5
%imfilter()
%函数语法:g=imfilter(f,w,filtering_mode,boundary_options,size_optinos)
%函数功能:对任意类型数组或多维图像进行滤波
%参数介绍:f是输入图像,w为滤波模板,g为滤波结果;表1-1总结了其他参数的含义。
o12 = imfilter(r12,gaussianFilter, 'symmetric','conv');
p12 = imfilter(g12,gaussianFilter, 'symmetric','conv');
q12 = imfilter(b12,gaussianFilter, 'symmetric','conv');
Photon2 = cat(3,o12,p12,q12);

figure(10);
subplot(2,2,1);
imshow(init4);
title('原图');

subplot(2,2,2);
imshow(re_Img1);
title('高斯去噪');

subplot(2,2,3);
imshow(Photon,[]);
title('中值滤波');

subplot(2,2,4);
imshow(Photon2,[]);
title('高斯滤波');

figure(15);
%imguide
imguide = init4;
imguided = imguidedfilter(imguide);
imshow(imguided);
title('imguidedfilter');
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
Matlab图像处理函数汇总:
1、图像的变换
① fft2:fft2函数用于数字图像的二维傅立叶变换,如:i=imread('104_8.tif');
j=fft2(i);
②ifft2::ifft2函数用于数字图像的二维傅立叶反变换,如:
i=imread('104_8.tif');
j=fft2(i);
k=ifft2(j);
2、模拟噪声生成函数和预定义滤波器
① imnoise:用于对图像生成模拟噪声,如:
i=imread('104_8.tif');
j=imnoise(i,'gaussian',0,0.02);%模拟高斯噪声
② fspecial:用于产生预定义滤波器,如:
h=fspecial('sobel');%sobel水平边缘增强滤波器
h=fspecial('gaussian');%高斯低通滤波器
h=fspecial('laplacian');%拉普拉斯滤波器
h=fspecial('log');%高斯拉普拉斯(LoG)滤波器
h=fspecial('average');%均值滤波器
2、图像的增强
①直方图:imhist函数用于数字图像的直方图显示,如:
i=imread('104_8.tif');
imhist(i);
②直方图均化:histeq函数用于数字图像的直方图均化,如:
i=imread('104_8.tif');
j=histeq(i);
③对比度调整:imadjust函数用于数字图像的对比度调整,如:i=imread('104_8.tif');
j=imadjust(i,[0.3,0.7],[]);
④对数变换:log函数用于数字图像的对数变换,如:
i=imread('104_8.tif');
j=double(i);
k=log(j);
⑤基于卷积的图像滤波函数:filter2函数用于图像滤波,如:i=imread('104_8.tif');
h=[1,2,1;0,0,0;-1,-2,-1];
j=filter2(h,i);
⑥线性滤波:利用二维卷积conv2滤波, 如:
i=imread('104_8.tif');
h=[1,1,1;1,1,1;1,1,1];
h=h/9;
j=conv2(i,h);
⑦中值滤波:medfilt2函数用于图像的中值滤波,如:
i=imread('104_8.tif');
j=medfilt2(i);
⑧锐化
1)利用Sobel算子锐化图像, 如:
i=imread('104_8.tif');
h=[1,2,1;0,0,0;-1,-2,-1];%Sobel算子
j=filter2(h,i);
2)利用拉氏算子锐化图像, 如:
i=imread('104_8.tif');
j=double(i);
h=[0,1,0;1,-4,1;0,1,0];%拉氏算子
k=conv2(j,h,'same');
m=j-k;
3、图像边缘检测
①sobel算子 如:
i=imread('104_8.tif');
j = edge(i,'sobel',thresh)

②prewitt算子 如:
i=imread('104_8.tif');
j = edge(i,'prewitt',thresh)
③roberts算子 如:
i=imread('104_8.tif');
j = edge(i,'roberts',thresh)
log算子 如:
i=imread('104_8.tif');
j = edge(i,'log',thresh)
⑤canny算子 如:
i=imread('104_8.tif');
j = edge(i,'canny',thresh)
⑥Zero-Cross算子 如:
i=imread('104_8.tif');
j = edge(i,'zerocross',thresh)
4、形态学图像处理
①膨胀:是在二值化图像中“加长”或“变粗”的操作,函数imdilate执行膨胀运算,如:
a=imread('104_7.tif'); %输入二值图像
b=[0 1 0;1 1 1;0 1 0];
c=imdilate(a,b);
②腐蚀:函数imerode执行腐蚀,如:
a=imread('104_7.tif'); %输入二值图像
b=strel('disk',1);
c=imerode(a,b);
③开运算:先腐蚀后膨胀称为开运算,用imopen来实现,如:
a=imread('104_8.tif');
b=strel('square',2);
c=imopen(a,b);
④闭运算:先膨胀后腐蚀称为闭运算,用imclose来实现,如:
a=imread('104_8.tif');
b=strel('square',2);
c=imclose(a,b);

4.12