区域增长算法(C#实现)

来源:百度知道 编辑:UC知道 时间:2024/06/19 00:52:26
简单区域增长步骤如下:
(1)对格网数据点逐格网单元扫描,当找不到这样的地物点时结束操作;(2)把这个点同周围的8-邻域点比较,若小于阈值,则合并到同一区域,并对合并的地物点赋予该区域的标记;
(3)从新合并的地物点开始,反复进行(2)的操作;
(4)反复进行(2)、(3)的操作,直到不能合并为止;
(5)返回(1)操作,寻找新区域出发点。

上面为增长原理,搜索了很多资料都是利用栈实现,想知道如何用栈实现,原理如何。
有C#代码最好(非C++代码,自己下载了好一些,H呵呵),谢谢!
8-邻域点比较可以看做图像点,若灰度值差小于一定阈值,则合并的意思
2楼的,我总共才几百分,我给你500我以后怎么提问啊,,
我再增加50吧~~
谢谢jxh12345j的回答,我这样想的,只逐单元扫描一次,就相当于对于每一个没有标记的点当做种子点进行生长,若在邻域判断中合并为一个区域,有了标示这就不必再判断了,不会卡死的,区域填充算法我去看看,

这个不是跟区域填充差不多么?
如果每次都要逐个单元扫描 不是卡死?
你可以去参考下区域填充算发 虽然那个算法也不怎么样 不过至少每次寻找新点时候 不用逐个重新扫描;

你是想做识别么?

是逐个扫描一次..问题当标识好之后,,当你选择下一个种子点的时候,又要重新扫描.这样是很麻烦;
你可以采用区域填充..他首先确定一个种子点 然后他由这个种子点出发.当走到一路尽头的时候就会返回 延下一个方向走..这样就避免了逐点扫描
例如有这么一个方块
A B C D E F
G H I J K L
M O P Q R S
T U V W X Y
假如冲 Q开始先左走 PQ关系小 则 P跟Q一样 依次走到M 每一个都标记了 当然其中也有些不符合要求 然后M开始往上走....当走到一个点发现他四周所有的位置都被标记 而退回上一个点 继续下一个方向..依次走完 这就是一个递归的方法,,而递归本质也是栈的使用(跟4皇后求法 也有点类似)

说的模糊啊 把这个点同周围的8-邻域点比较,若小于阈值,则合并到同一区域, 怎么比较?

才给50啊,太少了.给500还差不多.