晶界修复 中关于图像技术的难题!

Freshyy 2003-08-30 10:34:44
我做的是定量金相分析,提取晶界(就象蜂窝一样的网络结构,只是形状不固定罢了),
由于噪声,提取的边界有很多都断了,现在要把断的修补(连接)上,不知道如何做?
请高手赐教!不胜感激!
...全文
88 92 打赏 收藏 转发到动态 举报
写回复
用AI写文章
92 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzwu 2003-11-23
  • 打赏
  • 举报
回复
Freshyy(云淡风清) :
要百分之百的解决问题是不可能的,我想。
不知道你的图像和wrcluomo(落木)提供的图像好在何处?可以拿一个样例图出来吗?
Freshyy 2003-11-07
  • 打赏
  • 举报
回复
to lijinghu555(虎虎虎) :

你的思路是对的!事实上我现在对一些图像完全可以提取出很好的晶界,
是经过了一系列的步骤的!和你所说的差不多!
但是这种方法总的来说存在一个缺点就是并不是对所有的图像都适用,
所以我想找到修复的算法,也就是说我并不是仅仅针对这幅图而言,而是想找到
解决这类问题的本质性解决办法!
lijinghu555 2003-11-07
  • 打赏
  • 举报
回复
才看到这个贴子,对几位高手的深入研究深感钦佩,本人也从事过类似的工作,一点愚见,欢迎指正。
落木上传的图我看了,图中的干扰小点比较多,我想从另外的角度来谈谈,目前最强力的边界搜索算法应该是Canny算法,我看到楼主在别的贴子中已经支援别人Canny算法了,看来也是采用的这一算法。从我的感觉来看Canny算法对较大尺度范围内灰度的渐变边界也有很强的检测能力,利用这一点,可以试试在Canny搜索边界之前对原始图象进行1次或几次低通滤波,再适当降低Canny阀值,尤其是弱信号阀值,这样处理可以大大减少杂点干扰。
另外在Canny算法搜索边界结果细化之前,做种子填充统计单连通区块面积,滤除小面积的区块,再试试膨胀、腐蚀(开操作、闭操作)、扩展连接等等工作,之后再细化。
我猜楼主好象直接使用完全的Canny算法,直接得到了细化成单线的边界,这样处理起来就不太好办了。我的MAIL是ljh@tangzhi.com欢迎交流。
wrcluomo 2003-11-02
  • 打赏
  • 举报
回复
你是研究生,当然可以研究了,我是打工着,首先想到的是怎样为老板多捞些钱,看来在职学生和离职学生的思想的确不同了。个人认为这个算法有研究的余地,因为我看到的软件有些连的比较好,
但也和图像有关,如果晶界断的较长,他连起来也是乱七八糟。我看你想得到你满意的答案得靠自己了。






Freshyy 2003-11-01
  • 打赏
  • 举报
回复
To wrcluomo(落木) :
谢谢你帮我回答了这个问题!
但是有一点要首先声明的是,我想解决这个问题与商业利益毫无关系!我给你说过的,
这是我的课题中涉及到一个问题,我一直想寻找一个比较合适的算法!人机交互,我已经
解决了,如果单从商业软件的角度来说,完全可以满足了!但是,如果从算法研究上,人机
交互的确没有什么意思了!
wrcluomo 2003-10-31
  • 打赏
  • 举报
回复
这个金相图是做晶粒度的,根据标准测量出晶粒等级,一般材料是晶粒小些材料性能好一些。
不是那个图片的质量差,细化后就是那样的。当然也有好一些的,也就是图像中的脏点及麻坑少一些。从源头做就要进行阴影校正,使图像灰度均匀一些,以利灰度提取。然后进行边界增强。
不过边界增强效果不太好。
现在最常用的就是人机交互,对个别边界不清的地方用手工画上。
膨胀细化后晶粒是有位移的,但计算出来结果后和对比标准图谱评出来的级别基本符合。我做过对比实验。楼主不要做这个了。这个市场已经烂了。没有多少油水了。













zzwu 2003-10-30
  • 打赏
  • 举报
回复
liuliiu(默默无闻) :
不懂金相图的实际用途,很想听听内行的意见,金相图究竟有何用处?

wrcluomo(落木):
我的count是一个演示程序,大量的代码和跟踪毫无关系,即使是跟踪部分,也不是对真正的pixel进行填充;area则是最普通的种子填充,连速度也没有考虑。其实2个程序目的是用来证明我的结论而已,并没有任何实用价值的。
liuliiu 2003-10-30
  • 打赏
  • 举报
回复
我看了上面的大部分帖子
觉得自己确实不知道的东西太多了
但是我看来那幅金相图片后我觉得还是从源头来处理可能会有更好的结果
因为那幅图片的质量也实在太差了
即使能处理出楼主所要求的结果来
我实在不知道那个结果有什么实际的意义

(我本科是学习金属材料的,可能是我学校不努力,了解的不多,说话多有得罪,请原谅)
wrcluomo 2003-10-24
  • 打赏
  • 举报
回复
回来了,
未名把你的源码发我看一下。
上次信箱怎么没有了。(power5318@sina.com)
我要count和area的源码,主要看你的链码跟踪和我的有什么不同。
Freshyy 2003-10-22
  • 打赏
  • 举报
回复
希望我们能够转回本贴的主题!
看看关于晶界修复方面有什么好的思想!
Freshyy 2003-10-22
  • 打赏
  • 举报
回复
是的,争论的问题已经清楚了!不容易啊!呵呵....

看来种子填充算法我理解的还是比较“狭义”!

学习ing........

谢谢未名老兄了!!!
zzwu 2003-10-21
  • 打赏
  • 举报
回复
再补充3点:
1.不需要看更多论文,只要复习一下种子填充的原理就可知道:以0作边界,还是以1作边界,都是可以实现的。实际上,很多软件提供的种子填充法就是可让你选择边界颜色的,不是吗?
2.即使没有你所讲的*型内点,而只有1型点,种子填充也可以进行的,如果种子填充一定要以*型作为种子点,那不是我的4个1的图就不能填充了?这样的算法还行吗?
3.再退一步,有了链码,如果其中有*点,要找出其中的*点也是很方便的:沿着链码逆时针逗一圈,看它左边有没有*就可以了。
zzwu 2003-10-21
  • 打赏
  • 举报
回复
情况终于清楚了!
问题就在于:你所谓的边界点,也就是上图中标‘1’的点,是同样可以用作“种子”进行填充的,种子填充完全可以用0作为边界,而不以1作为边界,这是非常容易办到的事情!
zzwu 2003-10-21
  • 打赏
  • 举报
回复
我们之间争论的问题看来已经彻底解决了!
Freshyy 2003-10-20
  • 打赏
  • 举报
回复
“我们的讨论看来是对“种子”的理解不同了”!
没错,你现在终于明白了!我一再给你强调,强调,再强调!!!
我把区域看作两部分:边界点和区域内部的点(当然,这种说法也许不合理,但并不影响分析问题),边界点的集合构成了区域的边界,区域内部点是在整个区域集中,边界的补集。

0 0 0 0 0 0 0
0 1 1 1 0 0 0
0 1 * * 1 0 0
0 1 1 * * 1 0
0 0 0 1 1 0 0

如图所示,1和*构成了区域,我现在边界追踪得到的都是1,过程并不涉及到*,
现在就是如何根据1找到* ?
我现在是认为1不能做种子点,而*是可以做种子点的。

也许这种想法比较落后了,因为按你说法,你可以根据边界点来进行填充,显然是可以实现的。
我虽然有这种想法,其实在一些论文也看到这种提法,但我一直没有去编程实现它。因为
我觉得扫描填充法的效率很高,最大递归深度不会超过2。

所以呢,我就一直在考虑如何根据已有的边界信息来得到种子点,有一种算法就是
图形学中的扫描线法,但是我觉得效率太低,所以想采用别的方法。

这就是我和你探讨这个问题的初衷了,事实上并不是谁对谁错的问题,我早都说过了,
我们在关于种子、边界方面存在误会,但你始终认为是我的想法有问题!希望你这次
能明白我的意思!

zzwu 2003-10-20
  • 打赏
  • 举报
回复

我们的讨论看来是对“种子”的理解不同了:我先问,在以下图中,

0 0 0 0
0 1 1 0
0 1 1 0
0 0 0 0

1. 边界跟踪过程中,会遇到上图中任意一个元素“1”吗?
2. 此“1”可不可以作为种子填充用的种子?

再重复提一下前面我已经提到的一个回复:

3.利用种子算法时,只要是属于区域的点,不管在内部,还是正好在边界上,都可用来作为种子的.

也就是说,在我看来,上面图中的4个1每一个都可以作为种子的。



zzwu 2003-10-20
  • 打赏
  • 举报
回复
我们讨论看来是对“种子”的理解不同了:我先问,在以下图中,

0 0 0 0
0 1 1 0
0 1 1 0
0 0 0 0

1. 边界跟踪是,会遇到元素“1”吗?
2. 此“1”不可以作为种子填充用的种子吗?

再补充前面我已经提到的一个回复:

3.利用种子算法时,只要是属于区域的点,不管在内部,还是正好在边界上,都可用来作为种子的.

也就是说,在我看来,上面图中的4个1每一个都可以作为种子的。
zzwu 2003-10-20
  • 打赏
  • 举报
回复
Freshyy(云淡风清):
- 不懂你的意思,一方面说可以完成计数,面积,周长,等的计算工作,一方面恰说边界追踪不涉及可以作为种子填充用的区域内点?
zzwu 2003-10-19
  • 打赏
  • 举报
回复
你的程序我没有仔细看,但粗看了一下就知道不行:为了在整个矩形图像中搜索目标区域并统计目标的个数以及它们的面积,不是单个跟踪程序能解决问题的,而需要利用“扫描,跟踪,填充,计数,入队列,出队列,入栈,出栈“等一系列的操作才行。
zzwu 2003-10-19
  • 打赏
  • 举报
回复
我原来的程序是DOS下,自己编的GUI,要windows的需要改一改。不过,我的程序只是一个演示程序,目的是要证明我的结论,不在乎DOS和windows,DOS下能实现,windows下当更没有问题。
加载更多回复(72)

4,445

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧