matlab边缘检测 Sobel、Roberts、Prewitt
一、Sobel边缘检测算法
1、算法简介
Sobel 算子算子包含两组 3x3 的矩阵,如图所示:
对于图像而言,取 3 行 3 列的图像数据,将图像数据与对应位置的算子的值相乘再相加,得到 x 方向的 Gx ,和 y 方向的 Gy ,将得到的 Gx 和 Gy ,平方后相加,再取算术平方根,得到 Gxy ,近似值为 Gx 和 Gy 绝对值之和,将计算得到的 Gxy 与我们设定的阈值相比较,Gxy 如果大于阈值,表示该点为边界点,此点显示黑点,否则显示白点。如图所示:
2、matlab实现
clear;
sob=imread('bianyuan1.jpg'); %读取原图像
grayPic=mat2gray(sob); %矩阵归一化
[m,n]=size(grayPic); %获取图片大小
newGrayPic=grayPic; %保留图像边缘一个像素
sobelNum=0;
sobelThreshold=0.5; %设定阈值
for j=2:m-1 %进行边界提取
for k=2:n-1
sobelNum=abs(grayPic(j-1,k+1)+2*grayPic(j,k+1)+grayPic(j+1,k+1)-grayPic(j-1,k-1)-2*grayPic(j,k-1)-grayPic(j+1,k-