精华内容
下载资源
问答
  • 基于matlab实现的图像边缘检测,将彩色图像转换为灰度图像进行计算,含代码,运算结果。
  • MATLAB图像边缘检测

    2019-05-07 14:15:33
    基于matlab的图像边缘提取,提取算子:中心像素与其八领域像素差平方和的算术平方根,根据阈值选择出合适的中心像素点即为边缘点。阈值:所有中心像素与其八领域像素差平方和的算术平方根的最大值的算术平方根。
  • matlab边缘检测函数

    2018-07-16 00:23:44
    利用梯度和差商编写的matlab函数,可以检测边界。是一个自定义的函数模块。
  • 使用模糊逻辑方法进行降噪和边缘检测 请访问模糊方法的描述以及与非模糊技术的比较。 使用模糊过滤的降噪 图像的模糊边缘检测 代码编写为 MATLAB 脚本,用于处理输入图像“image.jpg”并显示输出。 如何运行: ...
  • 数字图像处理的拉普拉斯边缘检测算法,先计算图像直方图,灰度值分割阈值,并计算各阈值下的前景和背景概率密度函数,再进行像素的累计熵
  • 边缘检测是图像处理和计算机视觉的基本问题,边缘检测的目的是标识数字图像亮度变化明显的点。图像属性的显著变化通常反映了属性的重要事件和变化。这些包括(i)深度上的不连续、(ii)表面方向不连续、(iii...
  • 这是华中科技大学数字图像处理课程的作业,涉及图像边缘检测、手动实现sobel算子和prewitt算子,梯度图像的生成,街区距离的计算
  • 简单的Canny边缘检测程序,另外包含霍夫变换检测道路直线。
  • Matlab多种图像边缘检测与分割处理-多种图像边缘检测与分割处理.rar 是一些边缘检测算子,用这些算子实现图像边缘检测的程序
  • matlab边缘检测代码

    2016-03-31 08:55:41
    matlab边缘检测代码 特征识别 m文件 随便换张图片都能用 不能用可以给我留言
  • 在本文,我们提出了一种利用细胞自动机(CA)和细胞学习自动机(CLA)的细胞边缘检测(CED)算法。 CED算法是一种自适应,智能且可学习的算法,用于对二进制和灰度图像进行边缘检测。 在这里,我们引入了一种新的...
  • matlab边缘检测实验,matlab边缘检测实例
  • Implement Canny Edge Detector for gray scale images. This would include a. Convolution with partial derivatives of gaussian in x and y. You can write separate functions to generate derivatives of ...
  • 1、用Prewitt算子检测图像的边缘I = imread('bacteria.BMP');BW1 = edge(I,'prewitt',0.04); % 0.04为梯度阈值figure(1);imshow(I);figure(2);imshow(BW1);2、用不同σ值的LoG算子检测图像的边缘I = imread('...

    1、用Prewitt算子检测图像的边缘

    I = imread('bacteria.BMP');

    BW1 = edge(I,'prewitt',0.04);             % 0.04为梯度阈值

    figure(1);

    imshow(I);

    figure(2);

    imshow(BW1);

    2、用不同σ值的LoG算子检测图像的边缘

    I = imread('bacteria.BMP');

    BW1 = edge(I,'log',0.003); % σ=2

    imshow(BW1);title('σ=2')

    BW1 = edge(I,'log',0.003,3); % σ=3

    figure, imshow(BW1);title('σ=3')

    3、用Canny算子检测图像的边缘

    I = imread('bacteria.BMP');

    imshow(I);

    BW1 = edge(I,'canny',0.2);

    figure,imshow(BW1);

    4、图像的阈值分割

    I=imread('blood1.tif');

    imhist(I);          % 观察灰度直方图, 灰度140处有谷,确定阈值T=140

    I1=im2bw(I,140/255); % im2bw函数需要将灰度值转换到[0,1]范围内

    figure,imshow(I1);

    5、用水线阈值法分割图像

    afm = imread('afmsurf.tif');figure, imshow(afm);

    se = strel('disk', 15);

    Itop = imtophat(afm, se); % 高帽变换

    Ibot = imbothat(afm, se); % 低帽变换

    figure, imshow(Itop, []);   % 高帽变换,体现原始图像的灰度峰值

    figure, imshow(Ibot, []);   % 低帽变换,体现原始图像的灰度谷值

    Ienhance = imsubtract(imadd(Itop, afm), Ibot);% 高帽图像与低帽图像相减,增强图像

    figure, imshow(Ienhance);

    Iec = imcomplement(Ienhance); % 进一步增强图像

    Iemin = imextendedmin(Iec, 20); figure,imshow(Iemin) % 搜索Iec中的谷值

    Iimpose = imimposemin(Iec, Iemin);

    wat = watershed(Iimpose); % 分水岭分割

    rgb = label2rgb(wat); figure, imshow(rgb); % 用不同的颜色表示分割出的不同区域

    6、对矩阵进行四叉树分解

    I = [ 1     1     1     1     2     3     6     6

    1     1     2     1     4     5     6     8

    1     1     1     1    10    15     7     7

    1     1     1     1    20    25     7     7

    20    22    20    22     1     2     3     4

    20    22    22    20     5     6     7     8

    20    22    20    20     9    10    11    12

    22    22    20    20    13    14    15    16];

    S = qtdecomp(I,5);

    full(S)

    7、将图像分为文字和非文字的两个类别

    I=imread('4-11.jpg');

    I1=I(:,:,1);

    I2=I(:,:,2);

    I3=I(:,:,3);

    [y,x,z]=size(I);

    d1=zeros(y,x);

    d2=d1;

    myI=double(I);

    I0=zeros(y,x);

    for i=1:x

    for j=1:y

    %欧式聚类

    d1(j,i)=sqrt((myI(j,i,1)-180)^2+(myI(j,i,2)-180)^2+(myI(j,i,3)-180)^2);

    d2(j,i)=sqrt((myI(j,i,1)-200)^2+(myI(j,i,2)-200)^2+(myI(j,i,3)-200)^2);

    if (d1(j,i)>=d2(j,i))

    I0(j,i)=1;

    end

    end

    end

    figure(1);

    imshow(I);

    % 显示RGB空间的灰度直方图,确定两个聚类中心(180,180,180)和(200,200,200)

    figure(2);

    subplot(1,3,1);

    imhist(I1);

    subplot(1,3,2);

    imhist(I2);

    subplot(1,3,3);

    imhist(I3);

    figure(4);

    imshow(I0);

    8、形态学梯度检测二值图像的边缘

    I=imread('wrod213.bmp');

    imshow(I);

    I=~I;        % 腐蚀运算对灰度值为1的进行

    figure, imshow(I);

    SE=strel('square',3); % 定义3×3腐蚀结构元素

    J=imerode(~I,SE);

    BW=(~I)-J;        % 检测边缘

    figure,imshow(BW);

    9、形态学实例——从PCB图像中删除所有电流线,仅保留芯片对象

    I=imread('circbw.tif');

    imshow(I);

    SE=strel('rectangle',[40 30]); % 结构定义

    J=imopen(I,SE);            % 开启运算

    figure,imshow(J);

    附图:

    展开全文
  • 利用八个方向的sobel边缘检测,其中为防止灰度值溢出对灰度值进行一个扩大和缩放的过程,可以检测出八个方向的灰度梯度值,检测出的边缘更加平缓连续,有兴趣的可以了解一下。
  • 基于MATLAB GUI的图像边缘检测界面
  • 基于蚁群聚类算法的图像边缘检测,好用!!!!
  • 数字图像的边缘检测的几种方法matlab程序代码。包括几种经典算法,还有水线阈值法水线阈值法,形态学梯度检测二值图像。
  • 基于MATLAB图像边缘检测方法的研究.pdf
  • Matlab彩色图像边缘检测-canny_edgecolor.m 彩色图像边缘检测程序color_edge.m:来源于:《数字图像处理及MATLAB实现》P197-198  canny_edgecolor.m:来源于网络资源 希望对彩色图像处理的同人有所帮助。
  • 使用微分Sobel算子进行边缘检测,得到目标的大致轮廓!
  • MATLAB实现图像去噪 滤波 锐化 边缘检测 源程序代码
  • matlab开发-边缘检测颜色。查找彩色图像的边缘。
  • 数字图像处理作业canny边缘检测坎尼边缘检测MATLAB源码及实验报告
  • 执行快速准确的亚像素边缘检测,基于改进的zernike矩方法,有需要的可以下载~~
  • matlab中sobel和kanny算子的算法有多种实现方法,用简单的可以看懂的方式去编写 希望可以帮到大家
  • matlab的prewitt边缘检测

    2019-03-18 10:26:13
    prewitt算子对噪声有抑制作用,抑制噪声的原理是通过像素平均,但是像素平均相当于对图像的低通滤波,低通滤波会造成高频的信息丢失,从而使图像模糊,无论这种程度或大或小,这种操作后的结果是存在的.
  • 采用阈值处理方法进行图像分割 实现直方图阈值法,具体方法为采用灰度直方图求双峰或多峰,选择两峰之间的谷底作为阈值,将图像转换为2值图像。
  • matlab边缘检测,一种改进型的边缘检测算法,效果比canny好。
  • matlab图像边缘检测分析

    万次阅读 2019-10-18 14:15:22
    更多MATLAB图像处理视频请点击 ...     所谓边缘是指其周围像素灰度有变化的那些像素的集合。边缘广泛存在于物体与背景之间、物体与物体之间、基元与基元之间。...基于边缘的分割代...

    更多MATLAB图像处理视频请点击  http://study.163.com/course/courseMain.htm?courseId=1003594013     

    所谓边缘是指其周围像素灰度有变化的那些像素的集合。边缘广泛存在于物体与背景之间、物体与物体之间、基元与基元之间。物体的边缘是由灰度不连续所反映的。基于边缘的分割代表了一大类基于图像边缘信息的方法,常用于图像分割。

    更多MATLAB图像处理视频请点击  http://study.163.com/course/courseMain.htm?courseId=1003594013


    1.边缘检测的基本原理及常用边缘检测算子

    边缘检测的实质是采用某种算法来提取出图像中对象与背景间的交界线。我们将边缘定义为图像中灰度发生急剧变化的区域边界。图像灰度的变化情况可以用图像灰度分布的梯度来反映,因此我们可以用局部图像微分技术来获得边缘检测算子。经典的边缘检测方法是对原始图像中像素的某小邻域来构造边缘检测算子。以下是对几种经典的边缘检测算子进行理论分析,并对各自的性能特点做出了比较和评价。


    人们以这些理论为依据,提出了许多算法,其中比较常用的边缘检测方法有差分边缘检测、Roberts 边缘检测算子、Sobel 边缘检测算子、Prewitt 边缘检测算子、Robinson 边缘检测算子、Laplace 边缘检测算子、Canny 算子和 LOG 算子等等。

    (1)差分边缘检测方法

             利用像素灰度的一阶导数算子在灰度迅速变化处得到高值来进行奇异点的检测。它在某一点的值就代表该点的“边缘强度”,可以通过对这些值设置阈值来进一步得到边缘图像。然而,用差分检测边缘必须使差分的方向与边缘方向垂直,这就需要对图像的不同方向都进行差分运算,增加了实际运算的繁琐性。

     一般为垂直边缘、水平边缘、对角线边缘检测,如下所示:

     


    差分边缘检测方法是最原始、最基本的方法。根据灰度迅速变化处一阶导数达到最大(阶跃边缘情况)原理,要求差分方向与边缘方向垂直,利用导数算子检测边缘。这种算子具有方向性,运算繁琐,目前很少采用。


    (2)Roberts 边缘检测算子

         Roberts 边缘检测算子根据任意一对互相垂直方向上的差分可用来计算梯度的原理,采用对角线方向相邻两像素之差,即:

       

            适当选取门限 TH,并作如下判断:如果 R(i, j)>TH,则(i, j)为阶跃状边缘点,{R(i, j)}为边缘图像。
           Roberts 算子采用对角线方向相邻两像素之差近似梯度幅值检测边缘。检测水平和垂直边缘的效果好于斜向边缘,定位精度高,但对噪声敏感。

    (3)Sobel 边缘检测算子

         数字图像{f (i, j)}的每个像素,考察它上下左右邻点灰度的加权差,与之接近的邻点的权大。据此,定义 Sobel 算子如下:

     

               适当选取门限 TH,并作如下判断:如果 R(i, j)>TH,则(i, j)为阶跃状边缘点,{R(i, j)}为边缘图像。
              Sobel 算子很容易在空间上实现,Sobel 边缘检测器不但产生较好的边缘检测效果,而且受噪声的影响也比较小。当使用大的邻域时,抗噪性能会更好,但这样会增加计算量,并且得出的边缘也会相应变粗。
               Sobel 算子利用像素点上下、左右邻点的灰度加权算法,根据在边缘点处达到极值这一现象进行边缘的检测。Sobel 算子对噪声具有平滑作用,提供较为精确的边缘方向信息,但它同时也会检测出许多伪边缘,边缘定位精度不够高。当对精度要求不是很高时,它是一种较为常用的边缘检测方法。


    (4)Prewitt 边缘检测算子

             Prewitt 边缘检测算子是一种边缘样板算子。这些算子样板由理想的边缘子图像构成。依次用边缘样板去检测图像,与被检测区域最为相似的样板给出最大值。用这个最大值作为算子的输出值 P(i, j),这样可将边缘像素检测出来。

         定义 Prewitt 边缘检测算子模板如下:

       

    8个算子样板所对应的边缘方向如图 所示。适当选取门限 TH,并作如下判断:如果 P(i,j)>TH,则(i,j)为阶跃状边缘点,{P(i,j)}为边缘图像。



    (5)Robinson 边缘检测算子

         Robinson 边缘检测算子也是一种边缘样板算子,其算法和 Prewitt 边缘检测算子相似,只是 8 个样板不同,如图所示。


    (6)Laplace 边缘检测算子

         Laplace 边缘检测算子是一种二阶微分算子,对于数字图像{ f (i,j)},它在图像中的位置(i,j)的 Laplace 定义如下:

                 Laplace 边缘检测算子是无方向性的算子,它比前面所述的多个方向导数算子的计算量要小,因为只用一个模板,且不必综合各模板的值。计算数字图像的 Laplace 值也是借助各种模板卷积实现的。实现 Laplace 运算的几种模板可见下图。在数字图像中,可用差分来近似微分运算,若选用图 7-4 中的第一个检测模板,则 f (i,j)的 Laplace 算子为:

    几种常用的实现 Laplace 运算的检测模板如图所示。


             由于 Laplace 算子是一种二阶导数算子,对图像中的噪声相当敏感。另外它常产生双像素宽的边缘,且也不能提供边缘方向的信息。由于以上原因,Laplace 算子很少直接用于检测边缘,而主要用于已知边缘像素后确定该像素是在图像的暗区或明区一边。



    2.各种边缘检测算子的 MATLAB 实现及效果比较

    在 MATLAB 中可以由 edge 函数实现各算子对边缘的检测,以 Roberts 算子为例,其语法格式如下:

         BW=edge(I,’roberts’)
         BW=edge(I,‘roberts’,thresh)
         [BW,thresh]=edge(I,‘roberts’,⋯)
         BW=edge(I,‘roberts’)自动选择阈值用 Robert 算子进行边缘检测。
         BW=edge(I,‘roberts’,thresh)根据所指定的敏感阈值 thresh 用 Robert 算子进行边缘检测,它忽略了所有小于阈值的边缘。当 thresh 为空时,自动选择阈值

         [BW,thresh]=edge(I,‘roberts’,⋯)返回阈值。

         edge 函数对灰度图像 I 进行边缘检测,返回与 I 同样大的二值图像 BW,其中 1 表示边缘,0 表示非边缘。I 是 unit8 型、unit16 型,或者是 double 型,BW 是 unit8 型。

         其余 Sobel 算子、Prewitt 算子、LOG 算子、Canny 算子的实现仅需将‘roberts’用‘sobel’、‘prewitt’、‘log’、‘canny’代替即可。

    例:具体实现这几个算子的一个例程

    I=imread('cameraman.tif');
    BW1 = edge(I,'sobel'); %应用 Sobel 算子进行滤波
    BW2 = edge(I,'roberts'); %应用 Roberts 算子进行滤波
    BW3 = edge(I,'prewitt'); %应用 Prewitt 算子进行滤波
    BW4 = edge(I,'log'); %应用 LOG 算子进行滤波
    BW5 = edge(I,'canny'); %应用 Canny 算子进行滤波
    subplot(2,3,1),imshow(I),title('原图');
    >> subplot(2,3,2),imshow(BW1),title('Sobel算子边缘检测');
    >> subplot(2,3,3),imshow(BW2),title('Roberts算子');
    >> subplot(2,3,4),imshow(BW3),title('Priwitt算子');
    >> subplot(2,3,5),imshow(BW4),title('LOG算子');
    >> subplot(2,3,6),imshow(BW5),title('Canny算子');


    更多MATLAB图像处理视频请点击  http://study.163.com/course/courseMain.htm?courseId=1003594013


    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,317
精华内容 4,126
关键字:

matlab中边缘检测的方法

matlab 订阅