常见检测模板
检测间断点
\[检测间断点=
\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...)
原文地址:https://www.cnblogs.com/thgpddl/p/12520464.html
时间: 2024-10-28 11:51:59