形态学图像处理——图像膨胀&图像腐蚀

时间:2020-12-06 20:02:48


一、准备知识1——概念介绍

1.形态学是什么

形态学在数字图像处理中表示的是图像的数学形态里的内容,将数学形态学作为工具从图像中提取区域图像形状的有用的图像分量,如边缘、骨架,区域分割等。

如例:

形态学图像处理——图像膨胀&图像腐蚀

如例:

形态学图像处理——图像膨胀&图像腐蚀

形态学图像处理——图像膨胀&图像腐蚀

如例:

形态学图像处理——图像膨胀&图像腐蚀

形态学图像处理——图像膨胀&图像腐蚀

2、数学形态学的语言是集合论。这个集合表示的是图像中的对象。
3、有哪些对象呢?
在二值图像中,每一个像素点都是一个对象,像素点的值只有0,1之分,所以,所有值为1的像素的集合就是一个完整的形态学描述。在这个集合里,每个元素都是一个二维向量(像素值都是1,只有x,y坐标信息不一致)。在灰度图像中,一个图片包含了一个像素点的坐标值、像素的亮度值。所以可以将其看作是三位空间上的一个集合。还有些图像有更高维的信息,如RGB图像,有R、G、B三个图像通道,每个通道都有坐标和像素值,RGB-D传感器有四个通道。

二、关于图像知识

1、反射

形态学图像处理——图像膨胀&图像腐蚀

2、平移

形态学图像处理——图像膨胀&图像腐蚀

3、结构元(SE):

即:研究图像感兴趣部分时用的小集合或小图片
SE里包含了成员和原点(原点的设立依赖于问题)

形态学图像处理——图像膨胀&图像腐蚀

4.结构元的使用

形态学图像处理——图像膨胀&图像腐蚀

三、原理

1、腐蚀

形态学图像处理——图像膨胀&图像腐蚀

2、膨胀

形态学图像处理——图像膨胀&图像腐蚀
形态学图像处理——图像膨胀&图像腐蚀

四、代码

clear all;
clc;

%图像进行中值滤波,并显示图像
%读进图像
 [filename, pathname] = uigetfile({'*.jpg'; '*.bmp'; '*.gif'}, '选择原图片');

%没有图像
if filename == 0
    return;
end

picture = imread([pathname, filename]);
[m, n, z] = size(picture);

%彩色图片转化为二进制图片
if z>1
    graypicture = rgb2gray(picture);%转换为灰度图
    level = graythresh(graypicture);%使用最大类间方差法找到图片的一个合适的阈值
    imgbw = im2bw(graypicture,level);%将灰度图像 picture 转换为二进制图像 
end

%图像膨胀
b=[0 1 0;1 1 1;0 1 0];
c=imdilate(imgbw,b);

%图像腐蚀
d=imerode(imgbw,b);

figure(1)
 subplot(1,4,1);
    imshow(picture);
    title('原图片');
 subplot(1,4,2);
    imshow(imgbw);
    title('二值图片');
 subplot(1,4,3);
    imshow(c);
    title('膨胀图片');
 subplot(1,4,4);
    imshow(d);
    title('腐蚀图片');

五、实验结果

形态学图像处理——图像膨胀&图像腐蚀