python图像二值化 腐蚀 膨胀_【数字图像处理】二值化图像腐蚀运算与膨胀运算...

形态学基本概念

基本思想:用一定形态的结构元素去度量和提取图像中的对应形状,达到分析知识的目的。可用于图像处理的各个方面,包括图像分割、边界检测、特征提取。

结构元素:形态学变换中的基本元素,使为了探测图像的某种结构信息而设计的特定形状和尺寸的图像,称为收集图像结构信息的探针。

结构元素有多种类型:如圆形、方形、线型等,可携带知识(形态、大小、灰度和色度信息)来探测、研究图像的结构特点。

形态学运算包括:二值化腐蚀和膨胀、二值化开闭运算、骨架抽取、击中击不中变换等。

形态学四个基本算子:膨胀,腐蚀、开启和闭合组成,这些基本运算还可以推导和组合成各种数学形态学实用算法。

腐蚀运算

腐蚀运算思路:定义结构元素(与模板类似),结构元素在整幅图像中移动,移动到每个像素点上,只有结构元素与图像上对应像素点的像素值全部相等时,保留这个像素点的值。

腐蚀运算作用:消除物体边界点,使边界点向内部收缩,可以把小于结构元素的物体去除。选取不同大小的结构元素,去除不同大小的物体。如两个物体间有细小的连通,通过腐蚀可以将两个物体分开。

腐蚀运算:

腐蚀运算示意图:

基本方法:

通常拖到结构元素在X域移动,在每一个位置上,当结构元素B在中心平移到X图像上的某优点(x,y)。

如果结构元素内的每一个像素都与以(x,y)为中心的相同邻域中对应像素完全相同,那么就保留(x,y)像素点。

对于不满足条件的像素点则全部删除,达到边界向内收缩效果。

腐蚀运算c语言实现

水平腐蚀:不处理左右两边

垂直腐蚀:不处理上下两行

全方位腐蚀:不处理四周

int Image[120][180];

memset(Image,0, sizeof(Image));//全方位腐蚀运算

for (int i = 1; i < Use_ROWS-1; i++)

{for (int j = 1; j < Use_Line - 1; j++)

{if (Image_Use[i][j] == 255 &&Image_Use[i][j+ 1] == 255 &&Image_Use[i][j - 1] == 255)

{

Image[i][j]= 255;

}

}

}

膨胀运算

膨胀运算思路:定义结构元素(与模板类似),结构元素在整幅图像中移动,移动到每个像素点上,如果结构元素与图像上对应像素点的像素值至少有一个像素相等时,保留这个像素点的值。

膨胀运算作用:与腐蚀相反,对二值化物体边界点扩充,将与物体接触的所以背景点合并到该物体中,使边界向外扩张。如果两个物体之间的距离比较近,会把两个物体连通到一起,对填补图像分割后物体的空洞有用。

膨胀与腐蚀比较:

膨胀:填充图像中的小孔(比结构元素小的孔洞)及图像边缘处的小凹陷部分。

腐蚀:消除图像边缘小的成分,并将图像缩小,从而使其补集扩大。

膨胀和腐蚀:并不互为逆运算,可以级联结合使用。

膨胀运算:

膨胀运算示意图:

膨胀运算c语言实现

水平膨胀:不处理左右两边

垂直膨胀:不处理上下两行

全方位膨胀:不处理四周

int Image[120][180];

memset(Image,0, sizeof(Image));//全方位膨胀运算

for (int i = 1; i < Use_ROWS-1; i++)

{for (int j = 1; j < Use_Line - 1; j++)

{if (Image_Use[i][j] == 255 ||Image_Use[i][j+ 1] == 255 ||Image_Use[i][j - 1] == 255)

{

Image[i][j]= 255;

}

}

}

你可能感兴趣的:(python图像二值化,腐蚀,膨胀)