数字图像处理实验记录九(数字形态学实验)

一、基础知识

1.形态学,用于从图像中提取对表达和描绘区域形状有意义的图像分量,使后续的识别工作能够抓住目标对象最为有本质的形状特征,如边界连通区域等。
2.膨胀运算:膨胀会使目标区域范围“变大”,将于目标区域接触的背景点合并到该目标物中,使目标边界向外部扩张。作用就是可以用来填补目标区域中某些空洞以及消除包含在目标区域中的小颗粒噪声。
数字图像处理实验记录九(数字形态学实验)_第1张图片

3.腐蚀运算:腐蚀可以使目标区域范围“变小”,其实质造成图像的边界收缩,可以用来消除小且无意义的目标物。
数字图像处理实验记录九(数字形态学实验)_第2张图片

4.开运算就是先腐蚀再膨胀,闭运算就是先膨胀再腐蚀。

二、实验要求

数字图像处理实验记录九(数字形态学实验)_第3张图片
数字图像处理实验记录九(数字形态学实验)_第4张图片
1.读入图像1和2,并进行二值化处理(im2bw)。
2.分别选择方形、圆形和菱形结构对图1和图2进行腐蚀(imerode)处理、膨胀(imdilate)处理、开运算(bwmorph)和闭运算(bwmorph)。显示观察处理结果。
体会形态学各个处理操作的作用。
3.针对指纹图像3,设计基于形态学的处理程序,得到你所能达到的最佳处理效果的指纹图像。

三、实验记录

任务1:

读入图像1和2,并进行二值化处理(im2bw)。

p1 = imread('p1.png');
p2 = imread('p2.png');
hand = imread('hand.png');

p1 = rgb2gray(p1);
p2 = rgb2gray(p2);
hand = rgb2gray(hand);

figure('NumberTitle','off','Name','原图展示');
subplot(1,3,1);imshow(p1);title('图片1');
subplot(1,3,2);imshow(p2);title('图片2');
subplot(1,3,3);imshow(hand);title('指纹图片');

figure('NumberTitle','off','Name','任务一');
I1 = im2bw(p1);
I2 = im2bw(p2);
subplot(1,2,1);imshow(I1);title('二值化后图片1');
subplot(1,2,2);imshow(I2);title('二值化后图片2');
% 生成方形,圆形,菱形结构:
rectangle = strel('rectangle',[5 10]);   % 生成5x10大小的矩形
circle = strel('disk',5);           % 生成半径为5的圆形
square = strel('square',5);         % 生成5x5大小的正方形(也就是菱形)

任务2:

分别选择方形、圆形和菱形结构对图1和图2进行腐蚀(imerode)处理、膨胀(imdilate)处理、开运算(bwmorph)和闭运算(bwmorph)。显示观察处理结果。
体会形态学各个处理操作的作用。

figure('NumberTitle','off','Name','任务2.1.1 图片1腐蚀');
I1_imerode_retangle = imerode(I1,rectangle);
I1_imerode_circle = imerode(I1,circle);
I1_imerode_square = imerode(I1,square);
subplot(1,3,1);imshow(I1_imerode_retangle);title('图片1方形腐蚀');
subplot(1,3,2);imshow(I1_imerode_circle);title('图片1圆形腐蚀');
subplot(1,3,3);imshow(I1_imerode_square);title('图片1菱形腐蚀');

figure('NumberTitle','off','Name','任务2.1.2 图片1膨胀');
I1_imdilate_retangle = imdilate(I1,rectangle);
I1_imdilate_circle = imdilate(I1,circle);
I1_imdilate_square = imdilate(I1,square);
subplot(1,3,1);imshow(I1_imdilate_retangle);title('图片1方形膨胀');
subplot(1,3,2);imshow(I1_imdilate_circle);title('图片1圆形膨胀');
subplot(1,3,3);imshow(I1_imdilate_square);title('图片1菱形膨胀');

figure('NumberTitle','off','Name','任务2.1.3 图片1开运算');
I1_open_retangle = imopen(I1,rectangle);
I1_open_circle = imopen(I1,circle);
I1_open_square = imopen(I1,square);
subplot(1,3,1);imshow(I1_open_retangle);title('图片1方形开运算');
subplot(1,3,2);imshow(I1_open_circle);title('图片1圆形开运算');
subplot(1,3,3);imshow(I1_open_square);title('图片1菱形开运算');

figure('NumberTitle','off','Name','任务2.1.4 图片1闭运算');
I1_close_retangle = imclose(I1,rectangle);
I1_close_circle = imclose(I1,circle);
I1_close_square = imclose(I1,square);
subplot(1,3,1);imshow(I1_close_retangle);title('图片1方形闭运算');
subplot(1,3,2);imshow(I1_close_circle);title('图片1圆形闭运算');
subplot(1,3,3);imshow(I1_close_square);title('图片1菱形闭运算');



figure('NumberTitle','off','Name','任务2.2.1 图片2腐蚀');
I2_imerode_retangle = imerode(I2,rectangle);
I2_imerode_circle = imerode(I2,circle);
I2_imerode_square = imerode(I2,square);
subplot(1,3,1);imshow(I2_imerode_retangle);title('图片2方形腐蚀');
subplot(1,3,2);imshow(I2_imerode_circle);title('图片2圆形腐蚀');
subplot(1,3,3);imshow(I2_imerode_square);title('图片2菱形腐蚀');

figure('NumberTitle','off','Name','任务2.2.2 图片2膨胀');
I2_imdilate_retangle = imdilate(I2,rectangle);
I2_imdilate_circle = imdilate(I2,circle);
I2_imdilate_square = imdilate(I2,square);
subplot(1,3,1);imshow(I2_imdilate_retangle);title('图片2方形膨胀');
subplot(1,3,2);imshow(I2_imdilate_circle);title('图片2圆形膨胀');
subplot(1,3,3);imshow(I2_imdilate_square);title('图片2菱形膨胀');

figure('NumberTitle','off','Name','任务2.2.3 图片2开运算');
I2_open_retangle = imopen(I2,rectangle);
I2_open_circle = imopen(I2,circle);
I2_open_square = imopen(I2,square);
subplot(1,3,1);imshow(I2_open_retangle);title('图片2方形开运算');
subplot(1,3,2);imshow(I2_open_circle);title('图片2圆形开运算');
subplot(1,3,3);imshow(I2_open_square);title('图片2菱形开运算');

figure('NumberTitle','off','Name','任务2.2.4 图片2闭运算');
I2_close_retangle = imclose(I2,rectangle);
I2_close_circle = imclose(I2,circle);
I2_close_square = imclose(I2,square);
subplot(1,3,1);imshow(I2_close_retangle);title('图片2方形闭运算');
subplot(1,3,2);imshow(I2_close_circle);title('图片2圆形闭运算');
subplot(1,3,3);imshow(I2_close_square);title('图片2菱形闭运算');

任务3:

针对指纹图像3,设计基于形态学的处理程序,得到你所能达到的最佳处理效果的指纹图像。

% 还没找到合适的结果
figure('NumberTitle','off','Name','任务3.1 原图');
hand1 = hand;
imshow(hand1);
figure('NumberTitle','off','Name','任务3.2 处理后');
square = strel('square',9);
circle = strel('disk',2); 

hand = imerode(hand,circle);
hand = imerode(hand,circle);

circle1 = strel('disk',1); 
hand = imerode(hand,circle1);
circle3 = strel('disk',3); 
circle2 = strel('disk',2);
square1 = strel('square',1);
square2 = strel('square',2);
square4 = strel('square',4);
rectangle1_5 = strel('rectangle',[1 5]);
rectangle2_5 = strel('rectangle',[2 5]);
rectangle5_1 = strel('rectangle',[5 1]);
rectangle1_10 = strel('rectangle',[1 12]);
rectangle2_10 = strel('rectangle',[2 15]);
rectangle2_3 = strel('rectangle',[2 1]);
% hand = imdilate(hand,circle3);
hand = imdilate(hand,rectangle1_10);
hand = imdilate(hand,rectangle2_3);
hand = imdilate(hand,circle1);
% hand = imdilate(hand,square2);
% hand = imdilate(hand,circle2);
% rectangle3_1 = strel('rectangle',[3 1]);
% hand = imdilate(hand,rectangle3_1);
% hand = imdilate(hand,square1);
% hand = imdilate(hand,square1);
% hand = bwmorph(hand,'open');
% hand2 = imopen(hand,circle);
% hand3 = bwmorph(hand,'open');
% hand2 = imopen(hand,circle);
% circle = strel('disk',2); 
% hand3 = imclose(hand2,circle);
% hand2 = bwmorph(hand2,'remove');

imshow(hand)

四、实验结果

任务1:

读入图像1和2,并进行二值化处理(im2bw)。
数字图像处理实验记录九(数字形态学实验)_第5张图片
数字图像处理实验记录九(数字形态学实验)_第6张图片

任务2:

分别选择方形、圆形和菱形结构对图1和图2进行腐蚀(imerode)处理、膨胀(imdilate)处理、开运算(bwmorph)和闭运算(bwmorph)。显示观察处理结果。
体会形态学各个处理操作的作用。
数字图像处理实验记录九(数字形态学实验)_第7张图片
数字图像处理实验记录九(数字形态学实验)_第8张图片
数字图像处理实验记录九(数字形态学实验)_第9张图片
数字图像处理实验记录九(数字形态学实验)_第10张图片

数字图像处理实验记录九(数字形态学实验)_第11张图片
数字图像处理实验记录九(数字形态学实验)_第12张图片
数字图像处理实验记录九(数字形态学实验)_第13张图片
数字图像处理实验记录九(数字形态学实验)_第14张图片

任务3:

针对指纹图像3,设计基于形态学的处理程序,得到你所能达到的最佳处理效果的指纹图像。
数字图像处理实验记录九(数字形态学实验)_第15张图片
数字图像处理实验记录九(数字形态学实验)_第16张图片

你可能感兴趣的:(数字图像处理实验记录,计算机视觉,图像处理,matlab)