【图像处理】彩色图像边缘检测

彩色图像边缘检测

回顾灰度图像边缘检测,我们一般求出图像的梯度:

fx(x,y)=f(x+1,y)f(x,y)fy(x,y)=f(x,y+1)f(x,y)
或者求出图像的二阶差分:
Δfx(x,y)=f(x+1,y)+f(x1,y)2f(x,y)Δfy(x,y)=f(x,y+1)+f(x,y1)2f(x,y)
然后根据梯度和二阶差分的大小,以及最大变化率方向来寻找可能存在的图像边缘。

彩色图像的每个像素包含红绿蓝三个分量,这样每个像素可以由一个三维向量来表示。但是在进行图像边缘检测的时候,我们遇到一个问题,那就是向量并不存在梯度概念。单独对每个颜色分量进行边缘检测,其梯度不能反映图像整体彩色的差异变化。

一个广为使用的彩色图像梯度方法来自Zenzo[1986]的论文

u⃗ =Rxr⃗ +Gxg⃗ +Bxb⃗ 
v⃗ =Ryr⃗ +Gyg⃗ +Byb⃗ 

其中R,G,B是图像分量, r⃗ ,g⃗ ,b⃗  等是单位向量,表征颜色分量坐标。然后继续计算有:
gxx=u⃗ Tu⃗ =Rx2+Gx2+Bx2
gyy=v⃗ Tv⃗ =Ry2+Gy2+By2
gxy=u⃗ Tv⃗ =RxRy+GxGy+BxBy

注意这里执行的是向量乘法,而不是进一步求导。梯度方向为:
θ=12arctan[2gxy(gxxgyy)]
由梯度方向才能计算梯度:
F(θ)={12[(gxx+gyy)+(gxxgyy)cos2θ+2gxysin2θ]}12

matlab上自带的edge函数目前没发现可以对彩色图像直接进行边缘检测的方法,C++的openCV库也没有发现。上述工具一般会对彩色图像进行灰度化再执行边缘检测,效果也不算差。

Zenzo, A Note on the Gradient of a Multi-Image,º Computer[C]// Vision Graphics Image Processing. 1986.

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值