一阶偏导产生较宽边缘,二阶偏导产生较窄边缘??

UncleQiong 2009-01-21 08:31:43
RT
...全文
307 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
UncleQiong 2009-01-22
  • 打赏
  • 举报
回复
这是我个人理解:一阶微分会产生多个峰值(即最低或最高值),用一阶微分做边缘检测,是通过检测峰值来确定一个点是否为边缘点。
而二阶微分会把这些点变为0,只保留一两个点(如斜坡,只保留了坡顶和坡底这两个点),二阶微分是通过检测是否为0来判断是否为边缘点,所以会比较细。
不知道对不对。大家看看。
UncleQiong 2009-01-22
  • 打赏
  • 举报
回复
谢谢6楼的.
arong1234 2009-01-22
  • 打赏
  • 举报
回复
求偏微分有锐化的作用,因此一阶微分可以使得狠明显的边缘被发现,而二阶则可以让不怎么明显
的边缘被发现,不知道你是不是这个意思
chiwa737 2009-01-22
  • 打赏
  • 举报
回复
形象具体, 高手
[Quote=引用 6 楼 eblis88 的回复:]
2楼。。。错了吧

如果边缘是阶越型的
-----
|
---|

边缘的一阶导是

/\
---/  \---

二阶导是

/\
---/  \    ------
\  /
\/

这个和边界的宽,窄,有什么关系呢?
[/Quote]
eblis88 2009-01-22
  • 打赏
  • 举报
回复
对的,一阶微分是找峰值,比较好的是canny的方法,找沿着相角方向的梯度第一个极大值。这样出来的单像素的边缘,不存在宽窄的问题。
如果是判断梯度大于某个阈值,那找到的峰值就会有宽窄之分。就会出现不是单像素的边缘了。

二阶是峰值变0点,但有时候并不是0,因为离散的原因。
所以二阶找过0点很难。通常不会用到。

对有噪声的图,在求梯度前,都要平滑。
平滑会加宽一阶导的支撑域(宽度),画个图就知道了。

总结如下:

所以对平滑后的图像,如果还是用一阶导来找边缘,并且使用梯度阈值的方法找,会有宽边缘。
如果使用canny方法,相角方向梯度极大值找,不会有宽边缘。

对二阶导的图像,用过0点的方法很难找到合适的边缘。例如zerocross。matlab德edge函数提供这个方法,lz可以试一下。
即便是二阶导用zerocross,也要先平滑图像。好在二阶导平滑否不会产生0点的偏移。


你说的不全对,仔细看一下相关的边缘检测代码,就知道了。
最终原因还是代码实现时,是否采用阈值,是否平滑,影响了边缘的宽窄。
实达诚实 2009-01-21
  • 打赏
  • 举报
回复
mark
fjwyshan 2009-01-21
  • 打赏
  • 举报
回复
mark
noenoughmemory 2009-01-21
  • 打赏
  • 举报
回复
mark
Show_Mike 2009-01-21
  • 打赏
  • 举报
回复
理解这个概念,关键在于对偏导/微分的概念的认识.
偏导:多变量函数对某个因变量的导数,表示该函数对这个变量的变化率.
用在图像处理上,表示了象点沿水平或垂直方向上的变化率,即差分值.
一般地,假定边缘与内部区域的像素分布差异在于,内部是相对均匀的,边缘是存在突变的,即边缘函数可以表示为一个单位阶跃函数.
所以,只要这个差分值小于某个阈值就认为是边缘.由于噪声的影响,一阶导数容易受其影响,检测结果过于灵敏,所以产生相对比较宽的边缘(把假边缘也看成边缘);二阶导数,反映的是导数的导数,稳定性好些,所以往往产生比较窄的边缘.
UncleQiong 2009-01-21
  • 打赏
  • 举报
回复
错了.
是一阶微分产生较宽边缘,二阶微分产生较窄边缘??
eblis88 2009-01-21
  • 打赏
  • 举报
回复
上面两个图没画好,这里重新贴一下



/\
---/\/ \-----


/\
___/\ / \ _______
\/ \ /
\/

eblis88 2009-01-21
  • 打赏
  • 举报
回复
2楼的解释方法有些问题。


判断一阶导为边缘的方法,如我上图所示,是找一阶导的极大值。有噪声,那么会产生很多个极大值,所以就会出现伪边缘,所以会有宽窄不一的边缘。如下图


/\
---/\/ \-----

如果这个是一阶导后的结果,如果算法不强,可能把两个峰值都认为是边缘,所以边缘可能更宽。
一般来说不会出现这种情况的,应为大家在用导数找边缘前,会先平滑的,只要平滑了就不会这样。

根据2楼所说,二阶导通常找的是导数的导数。对于上面这种情况。二阶导就像下面这样

理论上2阶导过0点,就是一阶导极大值,就是边缘所在
/\
___/\ / \ _______
\/ \ /
\/

怎么解释找这种东西的过0点呢?找不到的。算法再强也找不到。
所以,在用导数前,都要先平滑,才能避免这种情况的发生。


平滑,才是让边缘变宽的真凶。
平滑,会让一阶导(脉冲型)的支撑域变宽,如果对应方法仍然是取一阶导的阈值(如2楼所说),那么支撑域变宽了,取相同的阈值的宽度也宽了,所以一阶导宽了

二阶导,是取过零点,支撑域变宽不影响过0点的位置。所以比较窄(和一阶导比起来比较窄)


这才是正解!
eblis88 2009-01-21
  • 打赏
  • 举报
回复
2楼。。。错了吧

如果边缘是阶越型的
-----
|
---|

边缘的一阶导是

/\
---/ \---

二阶导是

/\
---/ \ ------
\ /
\/

这个和边界的宽,窄,有什么关系呢?

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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