边缘方向直方图

该段代码展示了如何使用OpenCV库计算图像的边缘方向直方图。通过Canny边缘检测获取边缘图像,然后应用Sobel算子计算梯度和方向,最后构建并计算直方图,将边缘方向分布量化为特征值。
摘要由CSDN通过智能技术生成
//
//输入:
//	image: 灰度图像
//	dst:边缘图像
//	edge_hist_feature:边缘直方图特征
// 	#define EDGE_HIST_SIZE 16
//	double edge_feature[EDGE_HIST_SIZE];
int calEdgeHistogram(IplImage *image,IplImage * dst,double * edge_hist_feature)
{
	if(NULL ==  image || NULL == edge_hist_feature)
		return 1;

	CvHistogram *hist = 0; // 直方图
	IplImage* canny;//边缘图像
	IplImage* gradient_im;
	IplImage* dx; // x方向的sobel差分
	IplImage* dy; // y方向的sobel差分 

	CvMat* canny_m;
	CvMat* gradient; // 梯度值
	CvMat* gradient_dir; //梯度的方向
	CvMat* dx_m; // 
	CvMat* dy_m;
	CvMat* mask;
	CvSize  size;

	int i,j;
	float theta;
	float max_val;

	int hdims = EDGE_HIST_SIZE;     // 划分HIST的个数,越高越精确
	float hranges_arr[] = {-PI/2,PI/2}; // 直方图的上界和下界
	float* hranges = hranges_arr;

	size = cvGetSize(image);
	canny = cvCreateImage(cvGetSize(image),8,1);//边缘图像
	dx = cvCreateImage(cvGetSize(image),32,1);//x方向上的差分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值