sobel算子实现边缘检测及其c++实现及与matlab效果对比

本文介绍了Sobel算子在边缘检测中的应用,强调了其抗噪性但存在自动阈值问题。通过比较,发现MATLAB在处理效果上优于OpenCV,甚至更胜一筹。作者计划深入研究MATLAB底层,以C++实现MATLAB的Sobel算子。
摘要由CSDN通过智能技术生成

这里增加了对边缘像素的补齐。sobel梯度分割抗噪性好,但是无法做到自动阈值,是其一大遗憾,matlab却解决的很好。


//默认对8位位图进行处理
void Sobel(unsigned char *pIn, int width, int height, unsigned char *pOut)
{

	//每行像素所占字节数,输出图像与输入图像相同
	int lineByte=(width+3)/4*4;
	//申请输出图像缓冲区
	pOut=new unsigned char[lineByte*height];
	//循环变量,图像的坐标
	int i,j;
	//中间变量
	int x, y, t;
	//Sobel算子
	for(i=1;i<height-1;i++)
	{
		for(j=1;j<width-1;j++)
		{
				//x方向梯度
				x= *(pIn+(i-1)*lineByte+j+1)
				 + 2 * *(pIn+i*lineByte+j+1)
				 + *(pIn+(i+1)*lineByte+j+1)
				 - *(pIn+(i-1)*lineByte+j-1)
				 - 2 * *(pIn+i*lineByte+j-1)
				 - *(pIn+(i+1)*lineByte+j-1);

				//y方向梯度
				y= *(pIn+(i-1)*lineByte+j-1)
					+ 2 * *(pIn+(i-1)*lineByte+j)
					+ *(pIn+(i
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值