[CV] Sobel算子

相关API Sobel();//索贝尔算子 Scharr();//Sobel的加强 笔记 Sobel: 边缘检测算法及各自的优缺点 Sobel是离散的一阶微分算子,可以用来计算图像的梯度(一阶), 常用于得到图像的边缘特征, 除了Sobel之外还有其他的算子, Sobel的优势是速度比较快, 但是在准确度上有欠缺 使用加减来简化计算机的负担: sobel算子的原理与实现 乘除对计算机很费力, 对计算机应该采用近似计算, 在Sobel求边缘的合成阶段使用到了这种思想 整个流程: 高斯->转灰度->求梯度x与y->混合 源 无

February 15, 2020 · 1 min

[CV] 上下采样-高斯不同(DOG)

相关函数 - pyrUp();//上采样 - pyrDown();//下采样 - subtract();//图像减法 - threshold()//二值化 - binarythreshold()//还是二值化 笔记 高斯金字塔: 涉及到上采样和下采样的概念 实现步骤是: 1.高斯模糊 2.删除当前层偶数行列 高斯不同(DOG): 同图像在不同参数下做高斯模糊然后结果相减, 最后记得归一化, 不然图很淡 上/下采样对比几个像素求平均合成的优势: 最大的好处就是变快了, 在人脸识别那个项目里我自己写了压缩算法,但是速度和这个相差了一倍(在720p下) 但是也发现这个算法有局限, 首先图像会便模糊, 其次只能实现2的次方倍的缩放(至少根据OpenCV里的API来看) 源 无

February 15, 2020 · 1 min

[CV] 形态学操作

相关函数 getStructuringElement(int shape, Size ksize ,Point anchor);注意size还是要奇数 dilate(src, dst, kernel);膨胀 erode(src, dst, kernel);腐蚀 creatTrackbar();创建滑块,比较实用,但我搞不懂 morphologyEX();形态学操作 adaptiveThreshold(); threshold(); //大津法 实现 膨胀 腐蚀 开操作 形态学梯度 提取垂直或水平的线(使用水平或竖直的结构体) 二值化 对图像取反(用~) 笔记 opencv结构元素获取(getStructuringElement)我理解是类似卷积核的东西 膨胀:区域最大值覆盖中心值 腐蚀:区域最小值覆盖中心值 开操作:先腐蚀后膨胀,去掉小的对象 闭操作:先膨胀后腐蚀,填充小的洞 形态学梯度可以方便得提取边线 提取垂直或水平的线思路: 使用特殊的结构体来提取特殊的结构,比如一条横线进行开操作就可以提取出横线结构(操作完以后可以blur一下) 在进行阙值分割前对图像进行模糊处理(图像处理领域好像叫滤波?)再分割貌似有更好的效果 挑战: 验证码识别...

January 30, 2020 · 2 min

[CV] 各类模糊

相关函数 blur(); //均值模糊 GaussianBlur(); //高斯模糊 medianBlur(); //中值滤波 bilateralFilter() //双边滤波 实现 模糊 均值滤波 高斯滤波 中值滤波 双边滤波 笔记 高斯滤波是通过高斯函数也就是正态分布来给mask权重 sigma越大正态分布上表现就是越平滑 中值滤波是统计排序滤波器,对椒盐噪声有很好的抑制作用 注意区分中值和均值 高斯模糊没有考虑像素值的差异,会导致边缘还是不那么清晰 引入空间域核与值域核考虑,空间域就相当于普通的高斯滤波,根据相邻距离决定权重,而值域核是由目标像素值与中心像素值差来给定权重 简单来说就是双边模糊对高斯模糊来说多了一层mask,这层mask不是根据像素空间位置来给定权重的,而是根据像素与中心像素值之差得出 双边滤波可以磨皮( 剩下的看注释 相关 无 源 // OpenCV_Template.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream>#include <string>#include<opencv2\opencv.hpp> using namespace std; using namespace cv; int main(int argc, char** argv){ /**************************************** 初始化 ****************************************************/ Mat imgIn, imgOut; Mat mask; imgIn = imread("Test....

January 29, 2020 · 2 min

[CV] 图像混合-亮度对比度-几何绘制

相关函数 mat.at<xxx> bitwise_not();//反色 src.convertTo();//通道转换 addWeighted()//图像混合加权相加,大小类型必须一致 multiply()//图像相乘 Mat::zeros cv:point cv:scalar line(); cv:rect rectangle(); 实现 对像素的操作 图像混合 对比度和亮度调节 几何绘制(人脸追踪框可能) 笔记 通过权重相加函数实现图像混合效果 addWeighted() 对比度和亮度调节的实现思想 像素值相乘(对比度实现,因为拉大了数值差) 像素值加常数(亮度实现) 公式:g(x,y) = alpha * f(x,y) + beta 相关 无 源 // OpenCV_Template.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream>#include <string>#include<opencv2\opencv.hpp> using namespace std; using namespace cv; int main(int argc, char** argv){ /**************************************** 初始化 ****************************************************/ Mat imgIn, imgOut; Mat mask; imgIn = imread("Test....

January 25, 2020 · 2 min