Roberts边缘检测算子是图像处理中最基本的边缘检测算子,其认为任意一对相互垂直方向上的差分可以看成是梯度的近似求解,采用对角线方向相邻两像素之差,
即某一像素点(i,j)的Roberts算子值为:f(x)=|f(i,j)-f(i+1,j+1)|+|f(i+1,j)-f(i,j+1)|
下面给出在matlab中使用Robert算子进行边缘检测的实现,文章末尾提供了相关资源的下载。
sourcePic=imread('D:\Lena.jpg'); %读取原图象
grayPic=rgb2gray(sourcePic); %转换成灰度图象
newGrayPic= grayPic;
[m,n]=size(grayPic);
robertsNum=0; %roberts算子的计算值
threshold=15; %阈值
for i=1:m-1 %进行边界提取
for j=1:n-1
robertsNum = abs(grayPic(i,j)-grayPic(i+1,j+1)) + abs(grayPic(i+1,j)-grayPic(i,j+1));
if(robertsNum > threshold)
newGrayPic(i,j)=255;
else
newGrayPic(i,j)=0;
end
end
end
figure,imshow(newGrayPic);
原始图像及提取边界后的图像如下:

Roberts算子提取的边缘较粗,对噪声很敏感,并且需要手动的指定一个阈值(threshold),对不同的图像使用不同的阈值后,边界提取效果差别很大。因此Roberts算子还有很多值得改进的地方,文章末尾提供了一篇关于自适应阈值的参考论文下载。使用自适应的阈值,并对提取的边缘进行细化处理,能有效地改善Roberts算子的边界提取效果。
还有很多其他的边界提取算子,如:Prewitt算子,Sobel算子,Canny算子,Log算子等,不同的算子有各自的优点,对这些算子的提取效果和执行效率的改进是图像处理方 面的热点问题。
Resources & Reference:
1、一种新的目标图像自适应阈值分割算法.pdf
2、数字图像处理与分析—用Roberts算子提取图象边界(含matlab代码).doc
3、演示处理图片:lena.bmp
4、ALL Files




真不错 能有更多资源吗?怎么只有Roberts算法,而没有其他几种呢
@飞仙飘雪:其他几种算法步骤都类似,只是算子不一样,就没有一一举例了。