OpenCV
SZTLLDGZ
这个作者很懒,什么都没留下…
展开
-
(06)调整图像亮度和对比度--继续对像素的操作
/**调整图像亮度和对比度--继续对像素的操作*理论图像变换可以看成如下:像素变换-点操作领域变换-区域:用来做图像的卷积、做图像整体的特征提取、对图像梯度的计算、对图像做更深入的模式匹配、识别、角点检测、模糊、平滑等等调整图像亮度和对比度属于像素变换-点操作g(i, j) = αf(i, j) + β 其中α > 0,β是增益变量f(i, j)表示输入图像的每一个像素点...翻译 2018-03-14 21:36:16 · 1042 阅读 · 0 评论 -
(19)Laplace算子
/* * Laplace算子 求导,通过二阶导数获得图像边缘,这也是一个卷积理论的延伸,可以通过卷积求取图像的边缘,Laplace算子也是一个卷积核 理论: 前一节我们学习了 Sobel 算子 ,其基础来自于一个事实,即在边缘部分,像素值出现”跳跃“或者较大的变化。 如果在此边缘部分求取一阶导数,你会看到极值的出现。 你会发现在一...翻译 2018-07-16 17:43:55 · 436 阅读 · 0 评论 -
(20)Canny边缘检测
/* *Canny边缘检测 *Canny算法介绍 Canny是边缘检测算法, 在1986年提出的,是一个很好的边缘检测器,很常用也很实用的图像处理方法 五步in cv::Canny 1.高斯模糊-GaussianBlur 所有图像的模糊都是对图像进行降噪,把细微的可能有影响结果的点都给去掉,免得它影响最终算法的结果 2.灰度转换...翻译 2018-07-16 17:45:12 · 741 阅读 · 0 评论 -
(21)霍夫变换-直线
/* *霍夫变换-直线 霍夫变换-直线检测 霍夫变换是图像处理当中很经典的算法,通过霍夫变换可以实现传统的几何规则的几何图像的一个检测,从直线到圆扩展到其他的一些不规则的或者稍 微有点规则的几何形状检测都可以通过霍夫变换来实现,最经典的就是霍夫变换直线检测和圆检测,在opencv当中提供了API *霍夫直线变换介绍 Hough ...翻译 2018-07-16 17:46:03 · 394 阅读 · 0 评论 -
(22)霍夫圆检测
/* *霍夫圆检测 霍夫变换进行圆检测 几何中圆心坐标和半径表征一个圆, 从平面坐标到极坐标转换三个参数C(x0, y0, r), 固定r,在0-360度空间的时候只有x0, y0这两个变量,就是a跟b, 其中x0, y0是圆心,那么在圆心处有最大值,霍夫空间累计最大值在圆心处 假设平面坐标的任意一个圆上的点...翻译 2018-07-16 17:46:53 · 1484 阅读 · 0 评论 -
(24)直方图
/* * 直方图均衡化*什么是直方图(Histogram) 假设有图像数据8x8,像素值范围0~14共15个灰度等级,统计得到各个等级出现次数及直方图如下图 图像直方图,是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称为图像直方图-直方图。直方图反映了图像灰度的分布情况。 是图像的统计学特征。 ...翻译 2018-07-17 18:55:10 · 360 阅读 · 0 评论 -
(23)像素重映射
/* *像素重映射 先想一下数学上面的映射的概念 简单点说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去,形成一张新的图像。API介绍cv::remap Remap( InputArray src,// 输入图像 没有要求 OutputArray dst,// 输出图像...转载 2018-07-17 19:07:04 · 518 阅读 · 0 评论 -
(25)模板匹配
/**模板匹配(Template Match) 模板也是一幅图像,是一个小的子图象,要在大的图片里找到与小图片完全相同或者相似的图片,这个过程就叫做匹配,匹配的 过程就叫做模板匹配 1:模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。 2:所以模板匹配首先需要一个模板图像T(给定的子图像) 3:另外需要一...转载 2018-07-17 19:08:02 · 255 阅读 · 0 评论 -
(26)轮廓发现
/**轮廓发现* 区别于轮廓和边缘的概念,轮廓也是有一定梯度层次的,有大的小的不同的轮廓*轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法。所以边缘提取的阈值选定会影响最终轮廓发现结果。* API介绍:findContours发现轮廓 在灰度图像上进行轮廓发现 cv::findContours( InputOutputArray bi...转载 2018-07-18 17:15:51 · 262 阅读 · 0 评论 -
(27)凸包
/**凸包 凸包是在轮廓提取的基础上再走一步,轮廓就是那些点,要把这些轮廓全部包含在一个里面就需要一个凸包把它包含在里面* 概念介绍 什么是凸包(Convex Hull),在一个多变形边缘或者内部任意两个点的连线都包含在多边形边界或者内部。 正式定义 包含点集合S中所有点的最小凸多边形称为凸包。*检测算法 - Grah...转载 2018-07-18 17:16:42 · 250 阅读 · 0 评论 -
(28)轮廓周围绘制矩形框和圆形
/**轮廓周围绘制矩形框和圆形框 基于轮廓绘制出来的矩形或者椭圆 先把图像转换为灰度图像,然后模糊,模糊的目的是为了后面进行一个二值化的时候可以降低噪声,让二值化更精准一些二值化处理通过 threshold阈值这个方法实现或者当你输入一幅灰度图像给Canny同样可以帮你进行一个最后得出一个二值化的边缘图像,基于二值图像我们 可以发现边缘findcontour,它...转载 2018-07-18 17:17:27 · 945 阅读 · 0 评论 -
(29)图形矩
/**图像矩(Image Moments) 几何矩 中心矩 中心归一化矩 二值图像提取的对象,对那个对象获得轮廓,对那个轮廓进行几何矩的计算,那么我们就得到轮廓的特征,一般计算二阶,三阶,弧矩* API介绍与使用-计算矩cv::moments moments( InputArray array,//输入数据 轮廓 ...转载 2018-07-18 17:18:05 · 557 阅读 · 1 评论 -
(30)点多边形测试
/**点多边形测试* 概念介绍 测试一个点是否在给定的多边形内部,边缘或者外部*API介绍 cv::pointPolygonTest pointPolygonTest( InputArray contour,// 输入的轮廓,一个轮廓一个轮廓的做 Point2f pt, // 测试点 测试的像素点的位置...转载 2018-07-18 17:18:47 · 528 阅读 · 0 评论 -
(31)基于距离变换与分水岭的图像分割
/**基于距离变换与分水岭的图像分割*什么是图像分割(Image Segmentation) 1:图像分割(Image Segmentation)是图像处理最重要的处理手段之一 2:图像分割的目标是将图像中像素根据一定的规则分为若干(N)个cluster集合,每个集合包含一类像素。 3:根据算法分为监督学习方法和无监督学习方法,图像分割的算法多数都是无监督学习方法 - KM...转载 2018-07-18 17:19:31 · 1153 阅读 · 0 评论 -
(18)sobel算子
/**Sobel算子*卷积的应用-图像边缘提取 边缘是什么 -是像素值发生跃迁的地方,是图形显著特征之一,在图像特征提取、对象检测、模式识别等 方面都要重要的作用 如何捕捉/提取边缘 -对图像求它的一阶导数 delta = f(x) - f(x-1), delta越大,说明像素在x方向...翻译 2018-07-16 17:43:08 · 980 阅读 · 0 评论 -
(17)处理边缘
/* *处理边缘 图像卷积的时候边界像素不能被卷积操作,原因在于边界像素没有完全跟kernel(卷积核)重叠,所以当3*3滤波时候 有1个像素的边缘没有被处理,5*5滤波的时候有2个像素的边缘没有被处理 在卷积开始之前增加边缘像素,填充的像素值为0或者RGB黑色,比如3*3在四周各填充1个像素的边缘,这样就确保图像的边缘被处理, 在卷积处理之后再去掉这些边缘。...翻译 2018-07-16 17:42:15 · 298 阅读 · 0 评论 -
(07)绘制形状与文字
/**绘制形状与文字 cv::Point数据结构:代表了一个点的坐标,一个二维点的坐标 Point表示2D平面上一个点x, y Point p; p.x = 10; p.y = 8; or p = Point(10, 8); cv::Scalar数据结构:代表颜色的向量,RGB色彩空间经常是数有三个值或者灰度图像赋给一个值 Scalar表示四个元素的向量,基类是V...翻译 2018-03-15 12:11:39 · 302 阅读 · 0 评论 -
(08)模糊图像
/**图像模糊一 *模糊原理 Smooth/Blur 是图像处理中最简单和常用的操作之一 使用该操作的原因之一就为了给图像预处理时候减低噪声,避免后续图像处理操作的干扰 使用Smooth/Blur操作其背后时数学卷积计算 g(i, j) = ∑f(i+k, j+l)h(k, l) h(k, l)表示卷积算子,又叫做掩膜,对一个图像f每个中心位置是(i, j)然后把掩膜放上去...翻译 2018-03-16 19:49:53 · 286 阅读 · 0 评论 -
(09)膨胀和腐蚀
/**膨胀和腐蚀 *形态学操作 图像形态学操作-基于形状的一系列图像处理操作的集合,主要是基于集合论基础上的形态学数学 形态学有四个基本操作:腐蚀、膨胀、开、闭 *形态学操作-膨胀 跟卷积操作类似,假设有图像A和结构元素B,结构元素B在A上面移动,其中B定义其中心为锚点, 计算B覆盖下A的最大像素值用来替换锚点的像素,其中B作为结构体可以是任意形状 *形态学操作-腐蚀 ...翻译 2018-03-16 21:16:20 · 274 阅读 · 0 评论 -
(10)形态学操作
/**形态学操作 在二值图像处理和灰度图像处理当中用到的特别多,有些特征提取,区域分割,也可以通过形态学的方法来进行,对彩色图像的效果不好,一般都是先变成二值或者灰度图像再操作 *开操作-open 先腐蚀后膨胀:可以去掉小得对象,大的对象不变(因为大的对象没有全部腐蚀,腐蚀完后再膨胀就不变),假设对象是前景色,背景是黑色 *闭操作-close 先膨胀后腐蚀,可以填充小的洞,假设对象是...翻译 2018-03-17 11:52:53 · 342 阅读 · 0 评论 -
(01) 加载、修改、保存图像
#include <opencv2\opencv.hpp>#include <iostream>using namespace cv;int main(int argc, char** argv){ /* 加载图像(用cv::imread) imread功能是加载图像文件成为一个Mat对象, 其中第一个参数表示图像文件名称; 第二个参数是表示加载的图...翻译 2018-03-13 10:08:33 · 252 阅读 · 0 评论 -
(02)矩阵的掩膜操作--提高图像的对比度
#include <opencv2\opencv.hpp>#include <iostream>using namespace cv;int main(int argc, char** argv){ Mat src, dst; src = imread("D:/A_Graduation/picture/Fusion/source17_1.tif"); if...翻译 2018-03-13 12:37:29 · 400 阅读 · 0 评论 -
(03)Mat对象
#include <opencv2\opencv.hpp>#include <iostream>using namespace cv;using namespace std;int main(int argc, char** argv){ Mat src; src = imread("D:/A_Graduation/learning/opencv/tang...翻译 2018-03-13 21:04:08 · 198 阅读 · 0 评论 -
(04)图像操作--主要是读写像素
#include <opencv2\opencv.hpp>#include <iostream>using namespace cv;using namespace std;int main(int argc, char** argv){ Mat src, gray_src; src = imread("D:/A_Graduation/learning/o...翻译 2018-03-14 09:14:19 · 250 阅读 · 0 评论 -
(05)图像融合
/*图像融合--三个方法:1、addWeighted(src1, alpha, src2, 1.0 - alpha, 0.0, dst); //基于权重2、add(src1, src2, dst); //这个是很生硬的把每个像素直接相加3、multiply(src1, src2, dst); //这个是相乘,像素的相乘*/#include <op...翻译 2018-03-14 11:48:21 · 310 阅读 · 0 评论 -
(13)形态学操作应用-提取水平与垂直直线
/**形态学操作应用-提取水平与垂直直线 有很多种方法都可以提取到水平和垂直的线,但是要找出一种最适合你项目运用的,贴近你项目实际需求包括软件和硬件的需求的计算的速度等等各方面能符合你要求的一个提取的方法还是很不容易的 *原理方法 图像形态学操作时候,可以通过自定义的结构元素实现结构元素对输入图像一些对象敏感,另外一些对象不敏感,这样就会让敏感的对象改变 ...翻译 2018-07-16 17:36:07 · 543 阅读 · 0 评论 -
(14)图像金字塔-上采样与降采样
/* * 图像金字塔-上采样与降采样 图像金字塔:比如1*1的图像,2*2的图像,4*4的图像,8*8的图像 ,把图像按照从小到大的顺序放在空间上的位置,如果从上向下形状就跟古埃及金字塔一样了 我们也可以把这些不同的看成图像的分辨率,从上向下看分辨率不断增加,增加分辨率的过程就可以看成向图片进行采样的过程,采样愈多图像分辨...翻译 2018-07-16 17:38:47 · 1133 阅读 · 0 评论 -
(15)基本阈值操作
/* * 基本阈值操作 *图像阈值(threshold) 阈值是什么?简单点说是把图像分割的标尺(图像的一个像素值),这个标尺是根据什么产生的,阈值产生算法或者阈值类型(Binary segmentation) 阈值产生的算法比较复杂,opencv给出两种阈值的算法供我们使用, 如果不用这两种算法就可以自己指定一个阈...翻译 2018-07-16 17:39:53 · 576 阅读 · 0 评论 -
(16)自定义线性滤波
/* *自定义线性滤波 前言:之前讲过的掩膜,什么一般的滤波,一般的模糊如中值模糊,高斯模糊,这些内容从本质上来讲它都属于一个概念就是卷积 所以我们在介绍自定义线性滤波的时候其实我们就是在介绍卷积,前面讲的是卷积的第一功能,卷积可以模糊一幅图像,可以降低 图像的噪声,我们模糊的目的就是降噪,降低噪声 *卷积概念: 卷积其...翻译 2018-07-16 17:41:06 · 305 阅读 · 0 评论 -
图像配准
#include "registration.h"#include <QDebug>#include <opencv2/opencv.hpp>#include <opencv2/xfeatures2d.hpp>#include <iostream>using namespace cv;using namespace cv::xfeat...原创 2019-03-17 08:58:51 · 458 阅读 · 0 评论