matlab边缘检测

####概述:
边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。
图像属性中的显著变化通常反映了属性的重要事件和变化。 这些包括(i)深度上的不连续、
(ii)表面方向不连续、(iii)物质属性变化和(iv)场景照明变化。
边缘检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域。

  • 一阶: Roberts Cross算子,Prewitt算子,Sobel算子, Kirsch算子,罗盘算子;
  • 二阶: Marr-Hildreth,在梯度方向的二阶导数过零点,Canny算子,Laplacian算子。

使用Matlab内部函数edge实现边缘检测算法:

I=imread('lena.jpg');%提取图像

img=rgb2gray(I);

[m,n]=size(img);

BW1=edge(img,'sobel'); %用Sobel算子进行边缘检测

BW2=edge(img,'roberts');%用Roberts算子进行边缘检测

BW3=edge(img,'prewitt'); %用Prewitt算子进行边缘检测

BW4=edge(img,'log'); %用Log算子进行边缘检测

BW5=edge(img,'canny'); %用Canny算子进行边缘检测

h=fspecial('gaussian',5);%¸高斯滤波

BW6=edge(img,'canny');%高斯滤波后使用Canny算子进行边缘检测

subplot(2,3,1), imshow(BW1);

title('sobel edge check');

subplot(2,3,2), imshow(BW2);

title('roberts edge check');

subplot(2,3,3), imshow(BW3);

title('prewitt edge check');

subplot(2,3,4), imshow(BW4);

title('log edge check');

subplot(2,3,5), imshow(BW5);

title('canny edge check');

subplot(2,3,6), imshow(BW6);

title('gasussian&canny edge check');
1)Laplacian 算子的实现:

clear;

sourcePic=imread('lena.jpg');%图像读入

grayPic=mat2gray(sourcePic);%实现图像的矩阵归一化操作

[m,n]=size(grayPic);

newGrayPic=grayPic;

LaplacianNum=0;%经Laplacian操作得到的每个像素的值

LaplacianThreshold=0.2;%设定阈值

for j=2:m-1 %进行边界提取

    for k=2:n-1

        LaplacianNum=abs(4*grayPic(j,k)-grayPic(j-1,k)-grayPic(j+1,k)-grayPic(j,k+1)-grayPic(j,k-1));

        if(LaplacianNum > LaplacianThreshold)

            newGrayPic(j,k)=255;

        else

            newGrayPic(j,k)=0;

        end

    end

end

figure,imshow(newGrayPic);

title('Laplacian算子的处理结果')

图像增强算法的基本原则是“降低低频区域,突出高频区域”,以此强化边缘,达到增强的目的。
最简单的例子就是通过原始图像减去高斯模糊处理后的图像,就能够将边缘强化出来

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值