Chinaunix首页 | 论坛 | 博客
  • 博客访问: 13003
  • 博文数量: 6
  • 博客积分: 200
  • 博客等级: 二等列兵
  • 技术积分: 65
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-17 11:23
文章分类

全部博文(6)

文章存档

2011年(1)

2009年(5)

我的朋友
最近访客

分类:

2009-03-19 16:27:30

分水岭算法
  1. 获得sobel算子边缘滤波器:--函数fspecial,用于生成滤波器矩阵
  2. 采用sobel算子边缘检测:----函数imfilter,包括两个方向上的检测
  • 水平方向边沿检测
  • 垂直方向边沿检测

   Sobel算子另一种形式是各向同性Sobel(Isotropic Sobel)算子,也有两个,一个是检测水平边沿的 ,另一个是检测垂直平边沿的 。各向同性Sobel算子和普通Sobel算子相比,它的位置加权系数更为准确,在检测不同方向的边沿时梯度的幅度一致。由于建筑物图像的特殊性,我们可以发现,处理该类型图像轮廓时,并不需要对梯度方向进行运算,所以程序并没有给出各向同性Sobel算子的处理方法。

  由于Sobel算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数, 简单有效,因此应用广泛。美中不足的是,Sobel算子并没有将图像的主体与背景严格地区分开来,换言之就是Sobel算子没有基于图像灰度进行处理,由于Sobel算子没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。 在观测一幅图像的时候,我们往往首先注意的是图像与背景不同的部分,正是这个部分将主体突出显示,基于该理论,我们给出了下面阈值化轮廓提取算法,该算法已在数学上证明当像素点满足正态分布时所求解是最优的。

  .NET代码如下

  for(Times=0;Times<128&&iThreshold!=iNewThreshold;Times++)

  {

  iThreshold=iNewThreshold;

  lP1=0;

  lP2=0;

  lS1=0;

  lS2=0;

  for(i=iMinGray;i

  {

  lP1+=Histogram*i;

  lS1+=Histogram;

  }

  iMean1Gray=lP1/lS1;

  for(i=iThreshold;i

  {

  lP2+=Histogram*i;

  lS2+=Histogram;

  }

  iMean2Gray=lP2/lS2;

  iNewThreshold=(iMean1Gray+iMean2Gray)/2;

  }

  补充Sobel算子的矩阵表达式:

  Sobel1=[-1 -2 -1; %检测水平边沿的Sobel算子

   0 0 0;

   1 2 1];

  Sobel2=[-1 0 1; %检测垂直平边沿的Sobel算子

   -2 0 2;

   -1 0 1];

  3. watershed

   查找图像的分水岭区域。

 

阅读(908) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~