sobel算子,matlab实现

 A=imread('D:\image\Body.jpg');  
 I = rgb2gray(A);
 
 subplot(2,2,1); 
 imshow(I);  
 title('原图'); 


  hx=[-1 -2 -1;0 0 0 ;1 2 1];%生产sobel垂直梯度模板
  hy=hx';                             %生产sobel水平梯度模板
  
  gradx=filter2(hx,I,'same');
  gradx=abs(gradx); %计算图像的sobel垂直梯度
  subplot(2,2,2);
  imshow(gradx,[]);
  title('图像的sobel垂直梯度');
  
  
  grady=filter2(hy,I,'same');
  grady=abs(grady); %计算图像的sobel水平梯度
  subplot(2,2,3);
  imshow(grady,[]);
   title('图像的sobel水平梯度');
   
   grad=gradx+grady;  %得到图像的sobel梯度
   subplot(2,2,4);
   imshow(grad,[]);
   title('图像的sobel梯度');

  结果为:


可以看出:

Sobel算子中的垂直模板得到的梯度图,由于梯度方向与边缘走向垂直,所以该梯度图对水平边缘有较强的响应,从而水平细节信息非常清晰;

sobel算子中的水平模板得到的梯度图,它对垂直边缘有较强的响应,垂直细节非常清晰。

Sobel算子水平和垂直方向叠加的梯度图,水平和垂直细节都非常清晰。

  
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值