1. Sobel算法
Sobel是一个离散的一阶差分算子,用来计算图像亮度函数的一阶梯度之近似值。在图像的任何一点使用此算子,将会产生该点对应的梯度矢量或是其法矢量
该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。如果以A代表原始图像,Gx及Gy分别代表经横向及纵向边缘检测的图像,其公式如下:
图像的每一个像素的横向及纵向梯度近似值可用以下的公式结合,来计算梯度的大小:
可用以下公式计算梯度方向:
2.cuda编程实现:
1.sobel.hpp文件
#include<opencv2/opencv.hpp>
void sobel_func(uchar *img,uchar *sobel);
2.sobel.cu文件
#include <cuda_runtime.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h><