OpenCv:边缘处理&Canny边缘检测
卷积边缘:
一、在进行卷积的时候,对于原图像(1,1)的位置,左、上方没有足够的像素做卷积。
二、通常,在卷积之前,在原图增加边缘像素,比如(3*3的,增加一个像素)
三、增加像素值得处理方法,通常有:
(一)BORDER_DEFAULT。默认
(二)BORDER_CONSTANT。使用固定的值。
(三)BORDER_REPLICATE。使用已知边缘的像素值。
(四)BORDER_WRAP。用另一边的像素值来补偿填充。
四、API
copyMakeBorder(
Mat src,
Mat dst,
int top,//边缘宽度,一般上下左右都一样
int bottom,
int left,
int right,
int borderType,//类型
Scalar value //颜色限制
)
五、例子
原图
BORDER_DEFAULT
BORDER_REPLICATE
BORDER_WRAP
Canny边缘检测
一、算法介绍
(一)高斯模糊——GaussianBlur。就是对图像进行降噪。
(二)灰度转换——cvtColor。
(三)计算梯度——Sobel/Scharr。得到 |X| + |Y|。
(四)非最大信号抑制。由于Sobel后,边沿非常强(粗),甚至起“皱褶”。因此要处理。
(五)高低阈值输出二值图像。
二、详细介绍
(一)梯度。Sobel
Gx:将kernel内,水平方向的所有变化量,全部集中在【锚点】处,而且【锚点】同行,还*2,突出其权重。
G如果大于某个阈值,那么此位置就可能是边缘了。
G通常用G = |Gx| +|Gy|
(二)非最大信号抑制。
1、梯度方向。在哪个方向变化最大。
θ在0~180度之间
2、抑制。
(1)找到θ
(2)比如θ=90度,找到90±45度的像素(左上、右上)
(3)如果像素值,大于左上、右上,那么保留。否则舍弃。
(三)高低阈值输出二值图像。
1、定义2个阈值:高值T1、低值T2。
2、大于T1,保留;小于T2,丢弃。
3、从高于T1的像素开始寻找,大于T2且相互链接的,都保留。
4、推荐T1:T2 = 3:1,或者2:1。
三、API介绍
Canny(
Mat src, //8-bit(位)的灰度图
Mat dst,
double T2, //低阈值,此值越高,得到的边缘越少,最终只留最强的边缘
double T1, //高阈值,通常为255
int aptertureSize,//Soble算子的Size,通常3*3的,所以这里填3
bool L2gradient //true表示是L2来归一化,否则用L1归一化,一般为false
) //L2gradient ,使用L2,则用G = sqrt(gx*gx + gy* gy)来求梯度,否则用
//G = |gx| + |gy|来近似
四、例子
Mat gaussianBlur, gray, canny;
cvtColor(src, gray, COLOR_BGR2GRAY);
Canny(gray, canny, 85, 255, 3);
imshow("canny", canny);
随着低阈值的变化,而变化
最新文章
- PHP 做文件校验,MD5,CRC32,SHA等
- Max Points on a Line
- Java新集合示意图
- 51nod 循环数组最大子段和
- Java_log4j
- arcgis android 加载google切片 天地图切片 并且能进行缓存
- 迭代器模式(Iterator Pattern)
- XSS与字符编码的那些事儿
- css中的滤镜
- Linux输入子系统(Input Subsystem)
- nginx 配置proxy_pass URL末尾加与不加/(斜线)的区别
- HTML标签 按功能排序
- __add__,关于运算符重载(用户权限)
- JMeter-正则表达式(Json中取value的部分值)
- MyEclipse破解步骤
- appium-电脑连不上手机设备如何解决
- Ubuntu下math库函数编译时未定义问题的解决
- Jekins在Tomcat上的安装和配置
- 内核开发知识第一讲.内核中的数据类型.重要数据结构.常用内核API函数.
- Python 私有
热门文章
- 【win+r】快速打开软件
- 2023 年 CCF 春季测试赛模拟赛 - 1
- app启动性能分析
- 使用vue+iview创建自己的对话框组件
- leetcode 跳跃游戏系列
- 【Linux命令】在Linux服务器上与windows通过SCP命令互传文件时出现的问题排查过程
- java报错 SLF4J:Failed to load class ";org.slf4j.impl.StaticLoggerBinder";
- 开启MySQL数据库远程连接
- 集成mupdf实现手写笔签批应用
- UE4大地图(流关卡、无缝地图)