学习了Sobel算子,总结一下

上图中的模板为Sobel算子,之所以其中的系数是这样的,是因为和求他们偏导邻域的近似形式有关,具体请看书。

自己编写的利用Sobel算子,求梯度图像的matlab程序

%%%%%%%%%%%%%%%自编Sobel算子,求梯度图像%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%by席小贱   2017.12.15%%%%%%%%%%%%%%%%%%
clear;
close all;
%% 生成灰度图像
rgb_image = imread('F:\matlab\pic.jpg'); %写入RGB原图
gray_image = rgb2gray(rgb_image);        %将RGB转灰度图像
[row,col] = size(gray_image);            %正x轴向下延伸,正y轴向右延伸.size函数所对应的(row,col)分别是x行,y列
%% 原灰度图像一圈扩展1个像素
double_image = double(gray_image);
big_image = zeros(row+2,col+2);
for i = 2:row+1for j = 2:col+1big_image(i,j) = double_image(i-1,j-1);end
end
%% 设置Sobel算子x方向模板
Hx = [-1,-2,-1;0,0,0;1,2,1];
%% 设置Sobel算子y方向模板
Hy = Hx';
%% 编程序实现x方向梯度计算
gradx_image = zeros(row+2,col+2);
grady_image = zeros(row+2,col+2);
W = zeros(3,3);%移动窗口
for i = 1:rowfor j = 1:col%模板移动窗口W = [big_image(i,j),big_image(i,j+1),big_image(i,j+2);big_image(i+1,j),big_image(i+1,j+1),big_image(i+1,j+2);big_image(i+2,j),big_image(i+2,j+1),big_image(i+2,j+2)];Sx = Hx .* W;Sy = Hy .* W;gradx_image(i+1,j+1) = sum(sum(Sx));grady_image(i+1,j+1) = sum(sum(Sy));end
end
gradx_image = abs(gradx_image);
grady_image = abs(grady_image);
%% 将一圈扩展1个像素的图像复原
gradx = zeros(row,col);
grady = zeros(row,col);
for i = 1:rowfor j = 1:colgradx(i,j) = gradx_image(i+1,j+1);grady(i,j) = grady_image(i+1,j+1);end
end
%sobel梯度
grad = gradx + grady;  %得到图像的sobel梯度
%% 显示图像
figure();
subplot(2,2,1);imshow(gray_image);title('原图');
subplot(2,2,2);imshow(uint8(gradx),[]);title('x方向梯度(Sobel算子)');
subplot(2,2,3);imshow(uint8(grady),[]);title('y方向梯度(Sobel算子)');
subplot(2,2,4);imshow(grad,[]);title('图像的sobel梯度');

源自http://blog.csdn.net/zhufanqie/article/details/8709910

别人的程序,利用filter2函数

%% 利用filter2函数的sobel算子梯度计算实现
clear;
close all;
rgb_image = imread('F:\matlab\pic.jpg');
gray_image = rgb2gray(rgb_image);
%% 构造sobel模板
hx = [-1 -2 -1;0 0 0 ;1 2 1];%生产sobel垂直梯度模板
hy = hx';                    %生产sobel水平梯度模板
%% 计算图像的sobel梯度
%垂直梯度
gradx = filter2(hx,gray_image,'same');
gradx = abs(gradx); %计算图像的sobel垂直梯度
%水平梯度
grady = filter2(hy,gray_image,'same');
grady = abs(grady); %计算图像的sobel水平梯度
%sobel梯度
grad = gradx + grady;  %得到图像的sobel梯度
%% 显示
subplot(2,2,1);imshow(gray_image);title('原图');
subplot(2,2,2);imshow(gradx,[]);title('图像的sobel垂直梯度');
subplot(2,2,3);imshow(grady,[]);title('图像的sobel水平梯度');
subplot(2,2,4);imshow(grad,[]);title('图像的sobel梯度');

利用Sobel算子,求梯度图像相关推荐

  1. python sobel算子_利用sobel算子计算图像的梯度(python+opencv)

    sobel算子计算的梯度图是带有方向的 代码实现如下: #coding=utf-8 import cv2 import numpy as np #利用sobel算子计算图像的梯度 img=cv2.im ...

  2. 应用sobel算子算法c语言,Canny算子与Sobel算子求图像边缘的C代码实现

    *Canny算子与Sobel算子求图像边缘笔记* 1.Canny求边缘算法原理简述 Canny检测边缘主要分为以下 四个算法步骤: A:噪声去除 canny算子是通过对每个像素点求一阶导数来找到梯度明 ...

  3. 利用sobel算子提取图像的水平特征和竖直特征

    一. sobel滤波器介绍 sobel滤波器常用来提取灰度图像的水平边缘(水平特征)和竖直边缘(竖直特征) 二. sobel算子    纵向算子,提取图像水平边缘 ↑ 横向算子,提取图像竖直边缘 ↑ ...

  4. 11-图像梯度-Sobel算子

    图像梯度是指图像某像素在x和y两个方向上的变化率(与相邻像素比较),是一个二维向量,由2个分量组成,X轴的变化.Y轴的变化 . 其中X轴的变化是指当前像素右侧(X加1)的像素值减去当前像素左侧(X减1 ...

  5. 差分近似图像导数算子之Sobel算子

    背景引言 图像处理中,一个最基本并且最重要的卷积就是导数的计算,一般用来表达微分最常用的操作是Sobel算子,可以包含任意阶的微分以及融合偏导.主要用作为边缘检测.在技术上,它是一离散性差分算子,用来 ...

  6. sobel算子检测图像清晰度

    文章目录 前言 概念 图像处理.视觉等基础概念 清晰度判断概念 sobel算子是什么? Sobel原理 Sobel实现 Sobel应用 改进的八方向sobel算子基于的理论 视觉系统 sobel算子实 ...

  7. sobel算子 拉普拉斯算子以及散度与梯度的概念

    在ECBSR论文的代码研究中,我发现关于ECBSR提出的多分支重参数化模型中,代码用到了sobel算子与laplace算子,很难判断这两个算子是为了论文的创新点还是真的有用,这块只能等待后续的对比实验 ...

  8. 计算机视觉开源库OpenCV梯度之Sobel算子

    Sobel算子是像素图像边缘检测中最重要的算子之一,在机器学习.数字媒体.计算机视觉等信息科技领域起着举足轻重的作用.在技术上,它是一个离散的一阶差分算子,用来计算图像亮度函数的一阶梯度之近似值.在图 ...

  9. 【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/25560901 作者:毛星云(浅墨) ...

最新文章

  1. 快速滚动_方老师教滚动快速作文
  2. android开发中用到的px、dp、sp
  3. Redhat change hostname
  4. Java - Get a list of all Classes loaded in the JVM[转]
  5. GROUP与HAVING的使用
  6. netscreen 25配置外网到内网的Webserver实践
  7. 荣耀 Magicbook Pro 锐龙版搭载深度操作系统桌面版
  8. 开发一款高端大气上档次的android应用需要必备的知识——记于2013年末
  9. Android中UI线程与后台线程交互设计的5种方法
  10. ios keychain 不被清理_限免 | 可爱天气 清理君等等
  11. c语言编程软件我的世界,我的世界(Minecraft)
  12. 根据ip地址定位城市信息
  13. 大数据和云计算技术的就业前景
  14. 微信小程序添加删除线和下划线
  15. bandzip屏蔽广告
  16. 温度对免疫代谢调节和癌症进展的影响
  17. 计算机速算训练,世界上最快的速算法,背熟就是速算神童,大脑堪比计算机!仅发一次...
  18. Snapper 快照管理工具
  19. php guzzle并发,使用Guzzle并发请求接口
  20. 什么是AQS?AQS有什么作用?常见的基于AQS的组件有哪些?

热门文章

  1. 羊毛党千亿产业链,信息安全何去何从?
  2. Axon 4.4 中文版文档(一)
  3. 语义分割yolov5 v4.0 baseline快速复现 快速跑通 图像分割 图像分类 重新训练,训练结果,测试结果,实验图片-20210227
  4. 鸿蒙系统怎样去掉下拉音乐播放器,windows10系统下怎样取消音乐播放器默认播放器...
  5. ARM Cortex-A系列编程指南之ARMv8 A -- 第二章 ARMv8 A架构和处理器
  6. 整理!这10款PC端软件,设计师必备!
  7. 机械过滤器(石英砂过滤器)和多介质过滤器的区别
  8. python 基于pygame实现俄罗斯方块
  9. 电商系统中的商品模型的分析与设计
  10. 如何判断一个点在矩形或多边形内