地方网站需要什么手续成都网多多
地方网站需要什么手续,成都网多多,外贸和网站制作,江门网站制作模板Laplacian(拉普拉斯)算子
前面介绍的Sobel算子和Scharr算子存在的问题:
1.要分别计算两个方向#xff08;x,y)的边缘#xff0c;之后将两方向的边缘进行叠加。
2.边缘与方向相关性较大。当我们通过Sobel算子提取x方向检测时#xff0c;它所能够检测到的边缘都是一个沿着y…Laplacian(拉普拉斯)算子
前面介绍的Sobel算子和Scharr算子存在的问题:
1.要分别计算两个方向x,y)的边缘之后将两方向的边缘进行叠加。
2.边缘与方向相关性较大。当我们通过Sobel算子提取x方向检测时它所能够检测到的边缘都是一个沿着y轴方向的边缘与检测的方向相反垂直方向),当进行y方向检测时得到的边缘是一个水平方向的垂直的边缘没有办法提取这就造成了在选择边缘检测的时候需要额外主义边缘的方向性同时可能出现倾斜的边缘会被反复的检测出来(x方向y方向检测都有),二当两者边缘检测结果进行叠加时则会将倾斜的边缘额外加强。 因此拉普拉斯算子针对图像边缘的方向性提出一种无边缘的算法。拉普拉斯算子分别对两个方向进行求导然后进行叠加也就是只要我们使用了拉普拉斯算子就可以直接提取图像中各个方向的边缘而无需分别提取x方向和y方向后在进行叠加。所以拉普拉斯算子具有无关方向性的优点但是由于拉普拉斯算子需要进行两次求导所以更容易受噪声的影响。 由上图拉普拉斯算子矩阵我们可以看出它是一个中心对称的边缘检测算子因此对于各个方向都可以检测出来。
Laplacian边缘检测函数
Laplacian()
void cv::Laplacian(InputArray src,OutputArray dst,int ddepth,int ksize 1,double scale 1,double delta 0,int borderType BORDER_DEFAULT)
·src:输入原图像可以是灰度图像和彩色图像。
·dst:输出图像与输入图像src具有相同的尺寸和通道数。
·ddepth:输出图像的数据类型深度根据输入图像的数据类型不同拥有不同的取值范围。进行边缘检测时可能会出现数值较大较小负数的情况。
·ksize:滤波器的大小必须为正奇数参数默认值为1表示的时一个3*3尺寸的拉普拉斯边缘检测算子。
·scale:对导数计算结果进行缩放的缩放因子默认系数为1不进行缩放。
·delta:偏值在计算结果中加上偏值。
·borderType:像素外推法标志。
Canny边缘检测原理介绍 Canny边缘检测是对Sobel算法进行优化的算法Sobel算子进行边缘检测时得到的边缘信息非常多而且有些边缘信息较亮而有些边缘信息较暗有些边缘信息时存在图像内部可能是由于光照等因素影响使得某一个局部区域像素值发生了微小波动但是通过Sobel算子依然能够将这个波动检测出来然而此波动却不是真正的边缘因此Canny算法的思想就是如何去除掉虚假边缘。
Canny边缘检测的主要步骤:
Step1:使用高斯滤波平滑图像目的是尽可能减少出现在图像内部的虚假边缘常用的高斯滤波平滑图像的滤波器如下图矩阵。
Step2:计算图像中每个像素的梯度方向和幅值。
Step3:应用非极大值抑制算法消除边缘检测带来的杂散响应。
Step4:应用双阀值法划分强边缘和弱边缘给出较低和较高的阈值在较低阈值之下的梯度响应舍弃当梯度的赋值大于较高阈值时称强边缘当梯度幅值在阈值之间时称弱边缘。
Step5:消除孤立的弱边缘孤立弱边缘指周围没有强边缘的存在若存在强边缘那么将弱边缘转化为强边缘。 Canny算法函数
Canny()
void cv::Canny(InputArray image,OutputArray edges,double threshold1,double threshold2,int apertureSize 3,bool L2gradient false)
·image:输入图像必须是CV_8U单通道或者三通道的图像。
·edges:输出图像与输入图像具有相同尺寸的单通道图像且数据类型为CV_8U输出图像进行了二值化处理的结果显示边缘的区域全为最高值255不是边缘的区域全为0。
·threshold1:第一个滞后阈值。
·threshold2:第二个滞后阈值。
·apertureSize:Sobel算子的直径参数默认值为3。
·L2gradient:计算图像梯度赋值的标志使用默认值即可。
示例
#include opencv2/opencv.hpp
#include iostreamusing namespace cv; //opencv的命名空间
using namespace std;//主函数
int main()
{//读取图像黑白图像边缘检测结果较为明显Mat img imread(E:/opencv/opencv-4.6.0-vc14_vc15/opencv/lenaGray.png);if (img.empty()){cout 请确认图像文件名称是否正确 endl;return -1;}Mat result, result_g, result_G;//未滤波提取边缘Laplacian(img, result, CV_16S, 3, 1, 0);convertScaleAbs(result, result); //取绝对值函数//滤波后提取Laplacian边缘GaussianBlur(img, result_g, Size(3, 3), 5, 0); //高斯滤波Laplacian(result_g, result_G, CV_16S, 3, 1, 0);convertScaleAbs(result_G, result_G); //取绝对值函数//显示图像imshow(result, result);imshow(result_G, result_G);cout 接下来进行Canny比爱能源检测 endl;waitKey(0);//等待函数用于显示图像,按下键盘任意键后退出Mat resultHigh, resultLow, resultG;//大阈值检测图像边缘Canny(img, resultHigh, 100, 200, 3);//弱阈值和强阈值较大//小阈值检测图像边缘Canny(img, resultLow, 20, 40, 3);//弱阈值和强阈值较小//高斯模糊后检测图像边缘GaussianBlur(img, resultG, Size(3, 3), 5);Canny(resultG, resultG, 100, 200, 3);//显示图像imshow(resultHigh, resultHigh);imshow(resultLow, resultLow);imshow(resultG, resultG);waitKey(0);//等待函数用于显示图像,按下键盘任意键后退出return 0;}结果
拉普拉斯边缘检测结果: 可以看到图像中即提取到了竖直边缘也提取到了水平边缘得到的结果中边缘与方向无关若图像中含有较大的噪声检测后的图像内部也会出现一些弱小的边缘这些边缘无法形成条状或带状区域是一个零散雪花状的区域。
进行高斯滤波后的结果明显减少了虚假边缘整个图像结果较为清晰边缘轮廓也比较准确。 Canny算法得到的结果中,使用较低阈值得到的结果边缘比较多而使用较高阈值得到的边缘就较少少了很多虚假边缘。 经过高斯滤波后的检测结果一些虚假的边缘被去除同时边缘整体信息还是完整保留虽然Canny算法有一定的优越性但是我们也要根据实际的情况对图像进行预处理之后再使用相应的算法得到我们想要的结果。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/89434.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!