Sobel test是啥检验?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sobel test是啥检验?相关的知识,希望对你有一定的参考价值。

边缘检验。

中文名称:边缘检验

定  义:将系统的工作环境置于允许范围的边缘状况下工作,借此发现某些将失效部件的检验方法。

应用学科:航空科技(一级学科),航空器维修工程(二级学科)

一阶微分算法是一类经典的人们常用的边缘检测算法,它的代表有Kirsch,Prewit,Sobel,Robert,Robinson,Frei和Chen算法.这些算法都是先用近似方法求梯度。

Sobel test是一阶方向导数极值法——一种检测边缘的新方法。一阶方向导数极值法不用选取门限值Th。


参考资料:

该方法首先沿边缘的垂直方向求一阶导数,然后再检测此一阶导数的极值点(极大点或极小点),并把此极值点作为边缘点而检出。

实验证明该方法检测的边缘是很好的,即在不漏检真实边缘、不多检假边缘和边缘定位精确这3个方面精度高。

参考资料来源:百度百科—边缘检验

参考技术A Sobel test是边缘检验。
Sobel test是一阶方向导数极值法——一种检测边缘的新方法。一阶方向导数极值法不用选取门限值Th.该方法首先沿边缘的垂直方向求一阶导数,然后再检测此一阶导数的极值点(极大点或极小点),并把此极值点作为边缘点而检出.实验证明该方法检测的边缘是很好的,即在不漏检真实边缘、不多检假边缘和边缘定位精确这3个方面精度高。
一阶微分算法是一类经典的人们常用的边缘检测算法,它的代表有Kirsch,Prewit,Sobel,Robert,Robinson,Frei和Chen算法.这些算法都是先用近似方法求梯度,然后再取一门限值Th,把梯度模值大于这个门限值Th的点作为阶跃状边缘点检出.虽然这类微分算法使用较普遍,但检测边缘的精度是比较低的.其中一个原因是选取合适的门限值Th是件很困难的事.这是因为有些边缘处灰度变化很快,此时,梯度模值很大;而另外一些边缘处灰度变化很缓慢,则该点的梯度模值很小;而在一些非边缘点处,灰度的变化速率介于上述两者之间,这时,该点的梯度模值也介于上述两个梯度值之间.在这种情况下,很难选取一个恰当的门限值Th把两个边缘同时检出,而又不检出非边缘点.如果把门限值Th选高一些,以便不检出非边缘点,则会漏检掉较低梯度值的边缘点;如果门限值Th选低一些,以便能检出较低梯度值的边缘点,则又会使具有较高梯度模值的非边缘点被当作边缘点而检出.总之,对于上述这种情况,无论怎样选取门限值Th都不会取得好的检测结果.
参考技术B 一阶方向导数极值法——一种检测边缘的新方法

余生晨 刘大有 孙莉民

摘 要:文中通过傅里叶变换(Fourier transform),在频率域,通过求垂直于边缘的一阶方向导数,并检测其极值(极大或极小)点来确定边缘.同时,参考一阶方向导数的数值来排除一些非边缘点(一阶方向导数的数值为常数者,零也为常数).实验证明该方法检测边缘的准确度高,而且不用选取门限值(阈值).
关键词:边缘检测,一阶方向导数,极值,傅里叶变换
分类号:TP391

METHOD USING EXTREMUM OF FIRST DIRECTIONAL
DERIVATIVE——A NEW METHOD FOR EDGE DETECTION

YU Sheng-Chen
(Department of Computer Science, Jilin University, Changchun 130023)
LIU Da-You
(Software Center, Northeast University, Shenchun 110003)
SUN Li-Min
(Department of Industry Managements, Social Science Colledge of North Industry University, Beijing 100041)

Abstract:In this paper, a new edge detection method——method using extremum of first directional derivative is proposed, based upon a general gradient edge model. Edge lines are extracted automatically from image, by acquiring points of extremum of first directional derivative vertical with edge line with Fourier transform in frequency domain. In detecting edges, non-edge points are rejected using values of first directional derivatives vertical with edge line. Experiments involving both test and real image are conducted. Acquiring second directional derivative vertical with edge line is the main character of the method.
Key words:edge (boundary) detection, first directional derivative, extremum, Fourier transform▲

1 引 言

边缘检测是图像处理技术的经典难题之一,它的解决对我们进行高层次的处理如特征描述、识别和理解有着重大的影响.由于其有重要的应用价值,所以,人们一直在研究解决这个问题.到目前为止,虽已有不少的边缘检测方法发表,但都存在着种种不足.
一阶微分算法是一类经典的人们常用的边缘检测算法,它的代表有Kirsch,Prewit,Sobel,Robert,Robinson,Frei和Chen算法.这些算法都是先用近似方法求梯度,然后再取一门限值Th,把梯度模值大于这个门限值Th的点作为阶跃状边缘点检出.虽然这类微分算法使用较普遍,但检测边缘的精度是比较低的.其中一个原因是选取合适的门限值Th是件很困难的事.这是因为有些边缘处灰度变化很快,此时,梯度模值很大;而另外一些边缘处灰度变化很缓慢,则该点的梯度模值很小;而在一些非边缘点处,灰度的变化速率介于上述两者之间,这时,该点的梯度模值也介于上述两个梯度值之间.在这种情况下,很难选取一个恰当的门限值Th把两个边缘同时检出,而又不检出非边缘点.如果把门限值Th选高一些,以便不检出非边缘点,则会漏检掉较低梯度值的边缘点;如果门限值Th选低一些,以便能检出较低梯度值的边缘点,则又会使具有较高梯度模值的非边缘点被当作边缘点而检出.总之,对于上述这种情况,无论怎样选取门限值Th都不会取得好的检测结果.
能否摆脱选取门限值的麻烦呢?答案是肯定的.本文给出的方法——一阶方向导数极值法就不用选取门限值Th.该方法首先沿边缘的垂直方向求一阶导数,然后再检测此一阶导数的极值点(极大点或极小点),并把此极值点作为边缘点而检出.实验证明该方法检测的边缘是很好的,即在不漏检真实边缘、不多检假边缘和边缘定位精确这3个方面精度高.下面将介绍该方法的原理.

2 原 理

边缘:在灰度图像中,物体的边缘一般呈阶跃状变化或呈梯度变化〔1〕.它的特点是沿垂直于边缘的方向一阶方向导数取得极值(极大或极小,并非都为最大或最小值).该导数的极值点可作为边缘点被检出.这是本文方法所依据的基础.
极值点的检测:如何检测出这些极值点,对检测边缘的精度也有重要的影响.边缘就是这些连续极值点的连线.在边缘的走向方向上,这些极值可能高低起伏,大小不一,没什么规律可循,但沿边缘的垂直方向上再求一阶导数,此时的一阶导数(相当于对原灰度图像求二阶方向导数),在极值点处取得零值(即二阶方向导数为零),所以,可以把这种零值点作为极值点而检出,即作为边缘点而检出.
特殊情况处理:在上面对灰度图像最初所求的一阶导数图上,有些非边缘地方(当灰度为零或常数或线性变化时,)一阶导数可能会为常数(零也是一种常数),对这种常数再求一阶导数(相当于二阶导数),其值也为零,这种零值不是边缘点,应当排除.具体排除方法是:对二阶导数为零的点,检查对应的一阶导数图上该点的某一适当小的邻域内的一阶导数是否为常数,为常数者则作为非边缘点检出,不为常数者则作为边缘点检出.
在实际的一幅图中,可能有各种走向,弯曲变化的边缘线同时出现,这就给求一阶方向导数带来了困难.本文采取在某一局部小的区域内,把边缘线用直线来近似的办法,把整个区域看成是由许多这种小的区域所组成的.
在实际的一幅图中,穿过某一区域的边缘线的方向可能是0°~360°之间某一确定数值.从理论上讲,可以在该小区域内求0°~360°之间的所有方向的方向导数,这其中,必有一个方向的方向导数是沿垂直于穿过该小区域的边缘线而求的(一阶方向导数取极值,二阶方向导数为零),这样,可达到垂直于边缘线求方向导数的目的.本文通过实验发现,每间隔5°求一个方向导数,其检测边缘线的精度足以满足一般实际工作�需要.
在0°~360°范围内,每隔5°求一个方向导数,在空间域是很困难的(直接对原始数据求方向导数).文中通过对原始数据做傅里叶变换,在频率域(或波数域)求方向导数.这样,求方向导数的问题就变得简单,易于实现.下面将说明如何在频率域(或波数域)中求方向导数.

3 频率域(波数域)中任意方向的一阶、二阶方向导数的求法

设T(x,y)为点(x,y)处的灰度值, u,v分别为x,y方向的圆频率(与圆波数相当),ST(u,v)为T(x,y)的傅里叶正变换,则有下列的傅里叶正变换与逆变换〔2〕:
正变换:

g1-246.gif (1158 bytes)

逆变换:

g2-246.gif (1306 bytes)

设α为方向角,则在α方向上的一阶方向导数、二阶方向导数为
一阶方向导数:

g3-246.gif (1194 bytes)

二阶方向导数:g4-246.gif (2129 bytes)

在频率域内,T(x,y)在α方向的一阶方向导数T′α(x,y)和二阶方向导数T〃α(x,y)的傅里叶正变换分别为

ST′α(u,v)=(2πiu)ST(u,v)cosα+ (2πiv)ST(u,v)sin2α
=2πi(ucosα+vsinα)ST(u,v)
ST〃α(u,v) =(2πiu)2ST(u,v)cos2α+ 2(2πiu)(2πiv)ST(u,v)sinαcosα+(2πiv)2ST(u,v)sin2α
=-4π2(ucosα+ vsinα)2ST(u,v)

由上面两式可见:在频率域求α方向的一阶方向导数、二阶方向导数(的傅里叶正变换),仅相当于分别乘以因子:2πi(ucosα+ vsinα)和-4π2(ucosα+ vsinα)2,
这就使得求任意方向的一阶方向导数、二阶方向导数变得很容易实现.
总结上述,可把利用傅里叶变换求任意方向的一阶方向导数、二阶方向导数的步骤总结如下:
①对灰度数值T(x,y)作傅里叶正变换,得ST(u,v);
②在频率域内,对ST(u,v)分别乘以一阶方向导数、二阶方向导数因子,可得其对应的傅里叶正变换:

ST'α(u,v)= 2πi(ucosα+ vsinα)ST(u,v)
ST〃α(u,v)= - 4π2(ucosα+ vsinα)2ST(u,v)

③对ST'α(u,v), ST〃α(u,v) 作傅里叶逆变换,可得空间域内对应的一阶方向导数和二阶方向导数.

4 屋顶状边缘的检测

上面介绍的检测边缘的方法适合于边缘呈阶跃状或梯度状变化的情况,这是工程图中常见的情况.有时,在一些地质图或地形图中还会遇到另外一种边缘——屋顶状边缘,如山脊线和山谷线所构成的边缘.在这种边缘处,灰度数值取得极值(极大或极小).它的特点是在其垂直方向上,一阶导数为零.利用这点,用类似的方法可检测出这种边缘(当灰度数值为零或常数时,其一阶系数也为零,这种特殊情况需要排除).

5 算法的简要描述

本方法的实质是沿边缘走向的垂直方向求一阶方向导数,并检测其极值点来确定边缘的,同时参考一阶方向导数的数值来排除一些非边缘点.其算法的简要描述如下:
(1) 首先,对离散的灰度图像数据作傅里叶变换(Fourier transform);
(2) 在频率域,按5°间隔在0°~180°范围内求一阶方向导数、二阶方向导数;
因为在0°~180°范围内沿α方向求的一阶方向导数和180°~360°范围内沿180°+α求的一阶方向导数仅差一个符号,但其绝对值是相等的,二阶方向导数则是相同的,所以在0°~360°范围内求一阶、二阶方向导数的问题可简化为只求0°~180°范围内的一阶、二阶方向导数;
(3) 对上面求的各一阶方向导数、二阶方向导数作傅里叶逆(反)变换,可得空间域各点的各个方向上的一阶、二阶方向导数;
(4) 对每点,比较该点各个方向上一阶方向导数绝对值的大小,取其绝对值最大者作为该点垂直于边缘的一阶方向导数,并记录下取得该最大值时求一阶方向导数时的方向,并同时取得该方向上的二阶方向�导数;
(5) 对上面每点上所得到的二阶方向导数,检查其数值为零的点.实际工作中,检查数值为零的点时,只要其绝对值小于某个很小的数值ε时,就认为是零点;
(6) 对上面检测出的二阶导数为零的点,检查对应的一阶导数(垂直于边缘所求得的)图上该点的某一适当小的领域内的一阶导数是否为常数,为常数者则作为非边缘点检出,不为常数者则作为边缘点检出.
(7) 屋顶状边缘:上面介绍的算法是对常见的灰度呈阶跃状或梯度状变化的边缘而言的,对偶尔遇到的屋顶状边缘可用类似的方法检测出一阶导数(垂直于边缘所求得的)为零的那些点,并把这些零点作为边缘点输出(同时排除那些灰度值为零或常数的点).

6 实 例

为了检验本文所提供的方法——一阶方向导数极值法检测边缘的效果,本文选取了一幅图来做实验.图1是原始图;图2是用本方法检测的边缘(黑色表示边缘,白色表示非边缘).从图2可见,本文给出的方法检测的边缘效果很好,既没有漏检的,也没有多检的边缘.

t247-1.gif (1958 bytes)

图1 原始图

t247-2.gif (2621 bytes)

图2 用本方法检测的边缘(黑色表示边缘,白色表示非边缘)■

基金项目:本课题得到吉林大学符号计算与知识工程教育部开放研究室实验室、国家自然科学基金项目(项目编号69883003)资助.
作者简介:余生晨,男,1968年生,博士后,副教授,主要研究方向为图像处理、计算机视觉、
文字识别、人工智能和地图的输入识别等.
刘大有,男,1942年生,教授,博士生导师,主要研究方向为模式识别、分布式人工
智能和知识工程等.
孙莉民,女,1971年生,助理工程师,主要研究方向为数字图像处理.
作者单位:余生晨(吉林大学计算机科学系 长春 130023)
刘大有(东北大学软件中心 沈阳 110003)
孙莉民(北方工业大学人文与社会科学院工业管理系 北京 100041)

参考文献:

〔1〕崔屹. 数字图像处理技术与应用. 北京:电子工业出版社,1997(Cui Yi. Digital Image Processing Techniques and Application(in Chinese). Beijing: Publishing House of Electronics Industry, 1997)
〔2〕Brigham E O. The Fast Fourier Transform. Englewood Cliffs, NJ: Prentice-Hall, 1984本回答被提问者采纳

matlab canny算子边缘检测函数代码是啥?

参考技术A

I = imread('lena.bmp');                 %%如果是其他类型图像,请先转换为灰度图 

%%没有噪声时的检测结果 

BW_sobel = edge(I,'sobel');

BW_prewitt = edge(I,'prewitt'); 

BW_roberts = edge(I,'roberts'); 

BW_laplace = edge(I,'log');

BW_canny = edge(I,'canny'); figure(1); 

subplot(2,3,1),imshow(I),xlabel('原始图像'); 

subplot(2,3,2),imshow(BW_sobel),xlabel('sobel检测');

subplot(2,3,3),imshow(BW_prewitt),xlabel('prewitt检测'); 

subplot(2,3,4),imshow(BW_roberts),xlabel('roberts检测'); 

subplot(2,3,5),imshow(BW_laplace),xlabel('laplace检测');

subplot(2,3,6),imshow(BW_canny),xlabel('canny检测'); 

%%加入高斯噪声(μ=0,σ^2=0.01)检测结果

I_g1 = imnoise(I,'gaussian',0,0.01);

BW_sobel = edge(I_g1,'sobel'); 

BW_prewitt = edge(I_g1,'prewitt'); 

BW_roberts = edge(I_g1,'roberts'); 

BW_laplace = edge(I_g1,'log'); 

BW_canny = edge(I_g1,'canny'); figure(2); 

subplot(2,3,1),imshow(I_g1),xlabel('加入高斯噪声(μ=0,σ^2=0.01)图像');

subplot(2,3,2),imshow(BW_sobel),xlabel('sobel检测'); 

subplot(2,3,3),imshow(BW_prewitt),xlabel('prewitt检测'); 

subplot(2,3,4),imshow(BW_roberts),xlabel('roberts检测'); 

subplot(2,3,5),imshow(BW_laplace),xlabel('laplace检测'); 

subplot(2,3,6),imshow(BW_canny),xlabel('canny检测');  

%%加入高斯噪声(μ=0,σ^2=0.02)检测结果

I_g2 = imnoise(I,'gaussian',0,0.02); 

BW_sobel = edge(I_g2,'sobel');

BW_prewitt = edge(I_g2,'prewitt'); 

BW_roberts = edge(I_g2,'roberts'); 

BW_laplace = edge(I_g2,'log');

BW_canny = edge(I_g2,'canny'); figure(3); 

subplot(2,3,1),imshow(I_g2),xlabel('加入高斯噪声(μ=0,σ^2=0.02)图像');

subplot(2,3,2),imshow(BW_sobel),xlabel('sobel检测');

subplot(2,3,3),imshow(BW_prewitt),xlabel('prewitt检测'); 

subplot(2,3,4),imshow(BW_roberts),xlabel('roberts检测'); 

subplot(2,3,5),imshow(BW_laplace),xlabel('laplace检测');

subplot(2,3,6),imshow(BW_canny),xlabel('c

一、没有噪声时的检测结果 1 原始图像 

2 Sobel算子边缘检测 3 Prewitt算子边缘检测 4 Roberts算子边缘检测 5 Laplace算子边缘检测 6 Canny算子边缘检测 

二、加入高斯噪声(μ=0,σ^2=0.01)检测结果 1 原始图像 

2 Sobel算子边缘检测 3 Prewitt算子边缘检测 4 Roberts算子边缘检测 5 Laplace算子边缘检测 6 Canny算子边缘检测  

三、加入高斯噪声(μ=0,σ^2=0.02)检测结果 1 原始图像 

2 Sobel算子边缘检测 3 Prewitt算子边缘检测 4 Roberts算子边缘检测 5 Laplace算子边缘检测 6 Canny算子边缘检测   

clear all; close all; 

warning off all;

参考技术B

clc
clear all
close all
I = imread('cameraman.tif');  % 读入图像
imshow(I);title('原图')
BW1 = edge(I,'canny');  % 调用canny函数
figure,imshow(BW1);  % 显示分割后的图像,即梯度图像
title('Canny')

Canny边缘检测算子是JohnF.Canny于1986年开发出来的一个多级边缘检测算法。更为重要的是Canny创立了边缘检测计算理论(Computationaltheoryofedgedetection)解释这项技术如何工作。

以上是关于Sobel test是啥检验?的主要内容,如果未能解决你的问题,请参考以下文章

spss交互项检验如何做?

SPSS中怎么用Bootstrapping方法做中介效应检验

f检验的p值和r值是啥意思?

计量经济学多元线性回归分析中f检验和t检验的关系是啥意思

回归参数的显著性检验(t检验)和回归方程的显著性检验(F检验)的区别是啥?

什么是假设检验(hypothesis test)?什么是正态性检验(normality test)?