利用Sobel算子,求梯度图像
来源:互联网 发布:淘宝短网址生成 编辑:程序博客网 时间:2024/05/22 15:48
学习了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+1 for j = 2:col+1 big_image(i,j) = double_image(i-1,j-1); endend%% 设置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:row for 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)); endendgradx_image = abs(gradx_image);grady_image = abs(grady_image);%% 将一圈扩展1个像素的图像复原gradx = zeros(row,col);grady = zeros(row,col);for i = 1:row for j = 1:col gradx(i,j) = gradx_image(i+1,j+1); grady(i,j) = grady_image(i+1,j+1); endend%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梯度');
阅读全文
1 0
- 利用Sobel算子,求梯度图像
- 图像处理中的梯度、导数如何求?(Robert算子,Sobel算子,Prewitt算子,Laplace算子)
- 图像处理中的梯度、导数如何求?(Robert算子,Sobel算子,Prewitt算子,Laplace算子)
- 图像处理中的梯度、导数如何求?(Robert算子,Sobel算子,Prewitt算子,Laplace算子)
- 利用OpenCV的Sobel算子求得图像的梯度信息
- Sobel梯度算子
- 图像梯度特征的常用算子:Sobel、Prewitt、Roberts
- 【OpenCV】图像变换(二)边缘检测:梯度算子、Sobel算子和Laplace算子
- 图像梯度特征的常用边缘检测算子:Sobel、Prewitt、Roberts
- 图像变换 - sobel算子(cvSobel)
- 【图像处理】sobel算子简述
- 图像边缘检测-Sobel算子
- 梯度与Roberts、Prewitt、Sobel、Lapacian算子
- 图像梯度算子总结
- [转]图像梯度:算子
- 灰度图像--图像分割 Sobel算子
- 图像学习 -- Sobel算子检测图像边缘
- 灰度图像--图像增强 Robert算子、Sobel算子
- pkg-config用法详解
- mysql启动
- C#获取系统文件、文件夹和磁盘驱动器图标
- Android界面编程之实现改变图片透明度并提供细节查看
- cocos2dx DrawNode和ClippingRectangleNode 使用详解
- 利用Sobel算子,求梯度图像
- Codewars解题Playing with digits
- GitHub Branch / SSH clone URL / Clone in Desktop / Download ZIP
- jzoj P2249 蒸发学水
- 访问wamp的localhost出现“没有权限访问”解决方法
- ubuntu14.04小技巧
- 直方图均衡化(Histogram equalization)与直方图规定化
- 小程序app.json文件浅析
- 【AndroidStudio】分析性能工具(AndroidDeviceMonitor)