边缘计算与轮廓检测

1.Canny边缘检测

1)使用高斯滤波器,以平滑图像,滤除噪声。

2)用sobel算子计算图像中每个像素点的梯度强度和方向。

3)应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测带来的杂散响应。

4)应用双阈值(Double-Threshold)检测来确定真实的和潜在的边缘。

5)通过抑制孤立的弱边缘最终完成边缘检测。

设置的阈值越大,保留细节越少

2.sobel算子

cv2.Sobel(src,ddepth图像深度,dx水平方向,dy竖直方向,ksize算子大小)

表示只算竖直,谁是1就算谁

白-黑是正数,黑-白是负数,所有负数被截断成0,所以需要加绝对值

cv2.addWeighted(sobelx,权重,sobely,权重,偏置项一般为0)

分开计算再融合效果比整体计算更好

3.Scharr算子

Iaplacian算子

对噪音点敏感

sobel scharr Iaplacian


1.图像金字塔:

高斯金字塔:向下采样方法(缩小)

将Gi与高斯内核卷积

将所有偶数行和列去除

高斯金字塔:向上采用方法(放大)

将图像在每个方向扩大为原来的两倍,新增的行和列以0填充

使用先前同样的内核与放大后的图像卷积,获得近似值

2.金字塔制作方法

cv2.pryUp(图像) shape变大

cv2.pryDown(图像) shape变小

3.拉普拉斯金字塔

4.图像轮廓

cv2.findContours(img,mode,method)

mode:轮廓检索模式

RETR_EXTERNAL:只检索最外面的轮廓;

RETR_LIST:检索所有的轮廓,并将其保存到一条链表当中;

RETR_CCOMP:检索所有的轮廓,并将他们组织为两层:顶层是各部分的外部边界,第二层是空洞的边界;

RETR_TREE:检索所有的轮廓,并重构嵌套轮廓的整个层次;(常用)

method:轮廓逼近方法

CHAIN_APPROX_NONE:以Freeman链码的方式输出轮廓,所有其他方法输出多边形(顶点的序列)。

CHAIN_APPROX_SIMPLE:压缩水平的、垂直的和斜的部分,也就是,函数只保留他们的终点部分。

为了更高的准确率, 一般用二值图像

第一个值是原图,第二个图是轮廓点,第三个是层级

绘制轮廓:cv2.drawContours(图像,轮廓点,第几个轮廓 默认-1为所有轮廓,(B,G,R颜色),线条宽度) 会覆盖源文件

5.轮廓特征计算

6.轮廓近似

binary,contours,hierarchy=cv2.findContours(灰度图,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)

cnt=contours[0]

approx=cv2.approxPolyDP(cnt,epsilon,True) 近似函数

res=cv2.drawContours(img,[approx],-1,(0,0,255),2)

7.边界矩形

8.模板匹配

模板匹配和卷积原理很像,模板在原图像上从原点开始滑动,计算模板与(图像被模板覆盖的地方)的差别程度,这个差别程度的计算方法在opencv里有6种,然后将每次计算的结果放入一个矩阵里,作为结果输出。假如原图形是AxB大小,而模板是axb大小,则输出结果的矩阵是(A-a+1)x(B-b+1)

TM_SQDIFF:计算平方不同,计算出来的值越小,越相关

TM_CCORR:计算相关性,计算出来的值越大,越相关

TM_CCOEFF:计算相关系数,计算出来的值越大,越相关

TM_SQDIFF_NORMED:计算归一化平方不同,计算出来的值越接近0,越相关

TM_CCORR_NORMED:计算归一化相关性,计算出来的值越接近1,越相关

TM_CCOEFF_NORMED:计算归一化相关系数,计算出来的值越接近1,越相关

cv2.matchTemplate(img,template,cv2.TMSQDIFF)

匹配多个对象

9.直方图

cv2.calcHist(images,channels,mask,histSize,ranges)

images: 原图像图像格式为 uint8 或 float32。当传入函数时应 用中括号 [] 括来例如[img]

channels: 同样用中括号括来它会告函数我们统幅图 像的直方图。如果入图像是灰度图它的值就是 [0]如果是彩色图像 的传入的参数可以是 [0][1][2] 它们分别对应着 BGR。

mask: 掩码图像。统整幅图像的直方图就把它为 None。但是如 果你想统图像某一分的直方图的你就制作一个掩模图像并 使用它。

histSize:BIN 的数目。也应用中括号括来

ranges: 像素值范围常为 [0,256]

10.均衡化:

cv2.equalizeHist(img)

自适应均衡化:cv2.createCLAHE(clipLimit=2.0,tileGridSize=(8,8))

11.傅里叶变换

作用:高频:变化剧烈地灰度分量,比如边界

低频:变化缓慢的灰度分量,例如一片大海

滤波:低通滤波器:只保留低频,会使图像模糊

高通滤波器:只保留高频,会使图像细节增加

在opencv中主要是cv2.dft()和cv2.idft(),输入图像要先转换成np.float32格式,得到的结果中频率为0的部分会在左上角,通常要转换到中心位置,可以通过shift变换来实现。cv2.dft()返回的结果是双通道的(实部,虚部),通常还需要转换成图像格式才能展示(0,255)

12.角点检测:

cv2.cornerHarris(img,blockSize指定区域大小,ksize,k取值参数为0.04 0.06)

相关推荐
AI技术增长2 分钟前
Pytorch图像去噪实战(八):Noise2Void盲点网络图像去噪实战,只有单张带噪图也能训练
人工智能·pytorch·python
梦想很大很大7 分钟前
让 AI 成为“报表配置员”:BI 低代码平台的 Schema 实践路径
前端·人工智能·低代码
隔壁大炮13 分钟前
Day07-RNN层(循环网络层)
人工智能·pytorch·python·rnn·深度学习·神经网络·计算机视觉
小饕19 分钟前
从 Word2Vec 到多模态:词嵌入技术的演进全景
人工智能·算法·机器学习
上海云盾第一敬业销售19 分钟前
生成式AI催生深度伪造攻击,WAF如何识别“假流量“?
人工智能
ykjhr_3d20 分钟前
数字工具AI智能学伴,助力教育数字化转型
大数据·人工智能·ai·ai人工智能·华锐视点·华锐云空间
LIUAWEIO22 分钟前
鸽鸽工具网:免费在线工具大全,打开网页即用
人工智能·安全·ai·json
动恰客流管家26 分钟前
动恰3DV3丨客流统计系统:旺季人手不够淡季闲人太多?客流统计帮你科学优化人力成本
大数据·运维·人工智能·3d
吻等离子30 分钟前
机器学习基本概念篇(含思维导图)
人工智能·机器学习
乐维_lwops30 分钟前
智变2026:中国IT运维管理软件行业全景洞察——从AI重塑到信创深水区
运维·人工智能