Matlab图像边缘检测Roberts\Sobel\Prewitt\Canny算子 - 烟雨博客
04-18 8364
确定图像中的物体边界的一种方法是先检测每个像素和其直接淋雨的状态已决定该像素是否确实处于一个物体的边界上。具有这种特性的像素被标记为边缘点。当图像中各个像素的灰度级用来反映各像素要求的程度时,这种图像... 来自: 烟雨博客
-
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算子水平和垂直方向叠加的梯度图,水平和垂直细节都非常清晰。
04-18 8364
确定图像中的物体边界的一种方法是先检测每个像素和其直接淋雨的状态已决定该像素是否确实处于一个物体的边界上。具有这种特性的像素被标记为边缘点。当图像中各个像素的灰度级用来反映各像素要求的程度时,这种图像... 来自: 烟雨博客
f=rgb2gray(f);%转化成灰度图
f=im2double(f);%函数im2double 将其值归一化到0~1之间
%使用垂直Sobcl箅子.自动…
来自: 开心点点的专栏