Sobel算法实现(C语言)

24 篇文章 0 订阅
Sobel算法实现(C语言)  1 void MySobel(IplImage* gray, IplImage* gradient)
  2 {
  3 /* Sobel template
  4 a00 a01 a02
  5 a10 a11 a12
  6 a20 a21 a22
  7 */
  8
  9 unsigned char a00, a01, a02;
  10 unsigned char a10, a11, a12;
  11 unsigned char a20, a21, a22;
  12 CvScalar color ;
  13 for (int i=1; i<gray->height-1; ++i)
  14 {
  15 for (int j=1; j<gray->width-1; ++j)
  16 {
  17
  18 a00 = cvGet2D(gray, i-1, j-1).val[0];
  19 a01 = cvGet2D(gray, i-1, j).val[0];
  20 a02 = cvGet2D(gray, i-1, j+1).val[0];
  21
  22 a10 = cvGet2D(gray, i, j-1).val[0];
  23 a11 = cvGet2D(gray, i, j).val[0];
  24 a12 = cvGet2D(gray, i, j+1).val[0];
  25
  26 a20 = cvGet2D(gray, i+1, j-1).val[0];
  27 a21 = cvGet2D(gray, i+1, j).val[0];
  28 a22 = cvGet2D(gray, i+1, j+1).val[0];
  29
  30 // x方向上的近似导数
  31 double ux = a20 * (1) + a21 * (2) + a22 * (1)
  32 + (a00 * (-1) + a01 * (-2) + a02 * (-1));
  33
  34 // y方向上的近似导数
  35 double uy = a02 * (1) + a12 * (2) + a22 * (1)
  36 + a00 * (-1) + a10 * (-2) + a20 * (-1);
  37
  38 color.val[0] = sqrt(ux*ux + uy*uy);
  39
  40 cvSet2D(gradient, i, j, color);
  41 }
  42 }
  43 }
  //注释:该程序需要在安装Opencv软件下运行。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值