1.膨胀 根据膨胀模板B(或结构元素B),在区域A 周围添加像素使A膨胀。 用B膨胀A: C=A⊕B={pl[(B)p∩A]≠] B:B关于参考点的映射,p:平移到p点, ∩:与运算。 步骤:B的映射移动到A的(xy)处,与A相 与,结果不为空时,在Cx,y)处加像 素
1. 膨胀 根据膨胀模板B(或结构元素B), 在区域A 周围添加像素使A膨胀。 用 B膨胀 A : C = A B = {p|[(B’)p A] } B’:B关于参考点的映射,p:平移到p点, :与运算。 步骤:B的映射移动到A的(x,y)处,与A相 与,结果不为空时,在C(x,y)处加像 素
例如: B' B A
例如: B B’ A C
技巧:模板下只要有一个目标点, 则在参考点下添如一个目标点。 可见,只需处理背景点。 形状:膨胀模板多为正方形或圆 形。 效果:膨胀区域,填补小的或窄的 孔,口子,湾等平滑边界线),连 接两个或多个区域(粘连)等等
技巧:模板下只要有一个目标点, 则在参考点下添加一个目标点。 可见,只需处理背景点。 形状:膨胀模板多为正方形或圆 形。 效果:膨胀区域,填补小的或窄的 孔,口子,湾等(平滑边界线), 连 接两个或多个区域(粘连)等等
用3x3模板膨胀的例子:红色:膨胀的像素
用3x3模板膨胀的例子:红色:膨胀的像素
C/C++程序: CImage:dilate(BYTE **tmpl,int r,int c,BYTE **out) int i,j,m,n,u,v; u=r/2;V=c/2; for (i=u;i<row-u;i++) for (j=v;j<col-v;j++) if (data[i]])!=0) out[)=1; else
C/C++程序: CImage::dilate(BYTE **tmpl, int r, int c, BYTE **out) { int i,j,m,n,u,v; u=r/2;v=c/2; for (i=u;i<row-u;i++) for (j=v;j<col-v;j++) { if (data[i][j]) !=0) out[i][j] = 1; else