您的位置:首页 > 博客中心 > 互联网 >

边缘分割技术

时间:2022-05-10 05:16

常见检测模板

检测间断点

\[检测间断点= \left[ \begin{matrix} -1 & -1 & -1 \ -1 & 8 & -1 \ -1 & -1 & -1 \ \end{matrix} \right] \]

检测线段

\[水平检测= \left[ \begin{matrix} -1 & -1 & -1 \ 2 & 2 & 2 \ -1 & -1 & -1 \ \end{matrix} \right] \]

\[垂直检测= \left[ \begin{matrix} -1 & 2 & -1 \ -1 & 2 & -1 \ -1 & 2 & -1 \ \end{matrix} \right] \]

\[+45°检测= \left[ \begin{matrix} -1 & -1 & 2 \ -1 & 2 & -1 \ 2 & -1 & -1 \ \end{matrix} \right] \]

\[-45°检测= \left[ \begin{matrix} 2 & -1 & -1 \ -1 & 2 & -1 \ -1 & -1 & 2 \ \end{matrix} \right] \]

如何使用这些检测模板?

h1=模板;
h2=模板;
h3=模板;
h4=模板;
imgOut1=imfilter(imgIn,h1);
imgOut2=imfilter(imgIn,h2);
imgOut3=imfilter(imgIn,h3);
imgOut4=imfilter(imgIn,h4);

J=imgOut1+imgOut2+imgOut3+imgOut4;
imshow(J);

微分算子

roberts算子

  • roberts算子由下面两个组成
    \[ \left[ \begin{matrix} 1 & 0 \ 0 & -1 \\end{matrix} \right] \]
    \[ \left[ \begin{matrix} 0 & 1 \ -1 & 0 \\end{matrix} \right] \]
  • 使用edge()进行图像边缘检测,该函数返回二值图像,大小与输入相同,数据类型为逻辑型
    BW=edge(I,‘roberts‘); %采用系统自动计算的阈值分割图像,返回BW二值图像
    BW=edge(I,‘roberts‘,thresh); %自己设定分割阈值,忽略小于阈值的像素
    [BW,thresh]=edge(I,‘roberts‘...) %返回采用的分割阈值

prewitt算子

  • 可定义方向
  • prewitt算子由下面两个组成
    \[水平梯度= \left[ \begin{matrix} -1 & -1 & -1 \ 0 & 0 & 0 \ 1 & 1 & 1 \\end{matrix} \right] \]
    \[垂直梯度= \left[ \begin{matrix} -1 & 0 & -1 \ -1 & 0 & -1 \ -1 & 0 & -1 \\end{matrix} \right] \]
  • 使用edge()进行图像边缘检测,该函数返回二值图像,大小与输入相同,数据类型为逻辑型
    BW=edge(I,‘prewitt‘); %采用系统自动计算的阈值分割图像,返回BW二值图像
    BW=edge(I,‘prewitt‘,thresh); %thresh不设或为[],则系统自己计算
    BW=edge(I,‘prewitt‘,thresh,direction); %direction方向,可取horizontal、vertical和both(默认)
    [BW,thresh]=edge(I,‘prewitt‘...) %返回采用的分割阈值

sobel算子

  • 可定义方向
  • sobel算子由下面两个组成
    \[水平梯度= \left[ \begin{matrix} -1 & 0 & 1 \ -2 & 0 & 2 \ -1 & 0 & 1 \\end{matrix} \right] \]
    \[垂直梯度= \left[ \begin{matrix} -1 & -2 & -1 \ 0 & 0 & 0 \ 1 & 2 & 1 \\end{matrix} \right] \]
  • 使用edge()进行图像边缘检测,该函数返回二值图像,大小与输入相同,数据类型为逻辑型
    BW=edge(I,‘sobel‘); %采用系统自动计算的阈值分割图像,返回BW二值图像
    BW=edge(I,‘sobel‘,thresh); %归一化阈值
    BW=edge(I,‘sobel‘,thresh,direction); %direction方向,可取horizontal、vertical和both(默认)
    [BW,thresh]=edge(I,‘sobel‘...) %返回采用的分割阈值

canny算子

  • canny算子具有低误码率、高定位精度和抑制虚假边缘等优点
  • 使用edge()进行图像边缘检测,该函数返回二值图像,大小与输入相同,数据类型为逻辑型
    BW=edge(I,‘canny‘); %采用系统自动计算的阈值分割图像,返回BW二值图像
    BW=edge(I,‘canny‘,thresh); %阈值是一个含2个元素的向量(最低和最高阈值),当单指定时默认是最高阈值,最低阈值为0.4*thresh
    BW=edge(I,‘canny‘,thresh,direction); %direction方向,可取horizontal、vertical和both(默认)
    [BW,thresh]=edge(I,‘canny‘...) %返回采用的分割阈值

LOG算子

  • 二阶微分的拉普拉斯算子对噪声非常敏感,LOG算子是在经典算子基础发展起来的边缘检测算子,根据信噪比求得检测边缘的最有滤波器。先采用Gaussian对图像进行平滑,在采用拉普拉斯算子检测图像边缘。
  • 边界定位精度高,抗干扰能力强,连续性好
  • 使用edge()进行图像边缘检测,该函数返回二值图像,大小与输入相同,数据类型为逻辑型
    BW=edge(I,‘log‘); %采用系统自动计算的阈值分割图像,返回BW二值图像
    BW=edge(I,‘log‘,thresh); %阈值是一个含2个元素的向量(最低和最高阈值),当单指定时默认是最高阈值,最低阈值为0.4*thresh
    BW=edge(I,‘log‘,thresh,sigma); %高斯平滑的sigma参数
    [BW,thresh]=edge(I,‘log‘...) %返回采用的分割阈值

利用fspecial()产生域定义模板

h=fspecial(method,patter)
-method:算子
    -'sobel'
    -'prewitt'
    -'laplacian'
    -'log',带参数:高斯sigma
-patter:参数,根据算子方法不同拥有不同参数
imgOut=imfilter(I,h...)

本类排行

今日推荐

热门手游