图像处理
文章平均质量分 63
马大哈先生
新人一枚,请大家多多关照!
展开
-
图像特征提取(一)——什么是特征点、特征描述、特征匹配
特征匹配(Feature Match)是计算机视觉中很多应用的基础,所以花一些时间去深入理解这个概念是不为过的。本文希望通过一种通俗易懂的方式来阐述特征匹配这个过程,以及在过程中遇到的一些问题。概念理解:假设这样的一个场景,小明和小小明都在看一个图片,但是他们想知道他们看的是否是同一幅图片,于是他们就通过电话描述这个图片,来判断是否是同一个图片。比如说有下面两个图片对话1:小白...转载 2018-07-09 11:26:47 · 22579 阅读 · 0 评论 -
opencv笔记(十九)——提取连通区域轮廓
连通区域指的是二值图像中相连像素组成的形状。而内、外轮廓的概念及opencv1中如何提取二值图像的轮廓见我的这篇博客:http://blog.csdn.net/lu597203933/article/details/14489225 轮廓的简单提取算法如下: 系统性地扫描图像直到遇到连通区域的一个点,以它为起始点,跟踪它的轮廓,标记边界上的像素。当轮廓完整闭合,扫描回到上一个位...转载 2018-08-24 16:42:01 · 6544 阅读 · 0 评论 -
opencv笔记(零)——OpenCV参考手册之Mat类详解
Mat OpenCV 自 2001 年出现以来。在那些日子里库是围绕C接口构建的。在那些日子里,他们使用名为IplImage C 的结构在内存中存储图像。这是您将在大多数较旧的教程和教材中看到的那个。使用这个结构的问题是将 C 语言的所有负面效果都摆到了桌面上。最大的问题是手动管理。它是建立在用户来负责处理内存分配和解除分配的假设之上的。当程序规模较小时,这是没有问题的,一旦代码基开...转载 2018-08-25 16:02:24 · 1179 阅读 · 0 评论 -
Matlab DIP(瓦)——关于bwmorph函数的解释以及相关形态学图像处理的例子
Matlab中的bwmorph函数解释bwmorph:对二值图像的形态学操作。BW2 = bwmorph(BW,operation)BW2 =bwmorph(BW,operation,n)BW2 = bwmorph(BW,operation)对二值图像应用形态学操作。BW2 = bwmorph(BW,operation,n)应用形态学操作n次,n可以是Inf,这种情况下该操作被...转载 2018-08-25 17:00:23 · 1108 阅读 · 0 评论 -
opencv笔记(二十一)——骨骼去毛刺
图像细化多用于机器人视觉,OCR字符识别等领域,细化后的图像经过去毛刺就成为了我们常说的图像的骨架。 该图像细化代码依据论文: T. Y. ZHANG and C. Y. SUEN A Fast Parallel Algorithm for Thinning Digital Patterns代码如下:void ThinSubiteration1(Mat & pSrc, Ma...原创 2018-08-25 17:59:16 · 10761 阅读 · 0 评论 -
opencv笔记(二十九)——提取轮廓相关函数使用方法
opencv中常用的跟轮廓相关的操作有:findContours()查找轮廓;drawContours()画轮廓;轮廓填充;计算轮廓的面积和周长;提取轮廓凸包,矩形,最小外接矩形,外接圆等。它们都有相应的函数可以直接调用,那么任意形状怎么取呢? 方法1:点乘,将其形状与图像进行点乘,求其形状对应的图像形状; 方法2:用findContours函数...转载 2018-09-19 16:10:54 · 5666 阅读 · 0 评论 -
opencv笔记(三十)——opencv中滑动条的创建
//注:调用滑杆时,显示滑杆的那张图的名字要和createTrackbar函数的第二个参数和onChangeTrackBar中imshow的名字相同#include <iostream>#include <opencv2\highgui\highgui.hpp>using namespace std;using namespac...转载 2018-09-20 17:27:12 · 490 阅读 · 0 评论 -
opencv笔记(三十一)——Mat 矩阵数据类型转换convertTo
一、数据类型转换1.一般图像文件格式使用的是unsigned 8bits,对应的数据类型有:CV_8UC1、CV_8UC2,CV_8UC3其中,CV_8UC3表示3通道8位的unsigned char型float是32位,对应的CvMat数据结构类型是:CV_32FC1,CV_32FC2,CV_32FC3double是64位,对应的CvMat数据结构类型是:CV_64FC1,CV_...转载 2018-09-26 16:20:44 · 18494 阅读 · 0 评论 -
opencv笔记(三十二)——将模糊集合用于灰度变换和边缘检测
模糊集合原理 在计算机编程的时候,常常会使用一种“干脆的”集合。在判断某件事,或者某个变量的时候,常常使用的是布尔值(因为某件事,不是真就是假)。通过一个阈值,去判断这件事,而这样的一个阈值的设定,会产生一个问题。还是使用《Digital Image Processing》 Rafael C. Gonzalez / Richard E. Woods书中的例子,看以下两个图。 ...转载 2018-10-08 10:47:37 · 4412 阅读 · 4 评论 -
opencv笔记(三十三)——Video Capture使用示例。读取视频
这次通过一个读取视频的综合例子来介绍VideoCapture类的一些基本操作:#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <iostream> ...转载 2018-10-08 11:07:35 · 42996 阅读 · 1 评论 -
层次分类的论文综述
一、Tree-CNN:一招解决深度学习中的「灾难性遗忘」 深度学习领域一直存在一个比较严重的问题——“灾难性遗忘”,即一旦使用新的数据集去训练已有的模型,该模型将会失去对原数据集识别的能力【1】。 为解决这一问题,本文提出了树卷积神经网络,通过先将物体分为几个大类,然后再将各个大类依次进行划分、识别,就像树一样不断地开枝散叶,最终叶节点得到的类别就是我们所要识别的类...转载 2019-08-06 15:19:14 · 2589 阅读 · 0 评论 -
opencv笔记(三十四)——线性分段
线性分段方法的难点在于分段点的选取,对于目标与背景灰度值差异明显的,可以采用生成灰度直方图,然后人工选点的方式,也可以采用统计灰度值的算法来自动计算分段点,如下: 当待处理图片目标和背景灰度值的对比度比较低时,线性分段分段点的选取主要采用“最小误差法”【1】选取,。 最小误差法是KITTLER1984年在MINIMUM ERROR THRESHO...原创 2019-08-10 19:51:40 · 898 阅读 · 0 评论 -
opencv笔记(三十五)——线性插值、双线性插值
1.为什么要用图像的插值?[1] 在图像的放大和缩小的过程中,需要计算新图像像素点对应原图的位置,如果计算的位置不是整数,就需要用到图像的内插,我们需要寻找在原图中最近的像素点赋值给新的像素点,这种方法最简单是最近邻插法,这种方法好理解、简单,但是不实用,会产生失真现象,产生棋盘格效应,更实用的方法就是双线性内插。2.一维线性插值 ...原创 2019-09-05 11:16:33 · 2283 阅读 · 0 评论 -
opencv笔记(十八)——连通区域分析
本文主要介绍在CVPR和图像处理领域中较为常用的一种图像区域(Blob)提取的方法——连通性分析法(连通区域标记法)。文中介绍了两种常见的连通性分析的算法:1)Two-pass;2)Seed-Filling种子填充,并给出了两个算法的基于OpenCV的C++实现代码。一、连通区域分析连通区域(Connected Component)一般是指图像中具有相同像素值且位置相邻的...转载 2018-08-24 16:26:04 · 4802 阅读 · 0 评论 -
opencv笔记(二十七)——cvGetSize与cvSize的区别
CvSize 矩形框大小,以像素为精度 typedef struct CvSize{int width; /* 矩形宽 */int height; /* 矩形高 */}CvSize;/* 构造函数 */inline CvSize cvSize( int width, int height );GetSize返回矩阵或图像ROI的大小 CvSize cvGetSize...转载 2018-08-31 14:37:28 · 3590 阅读 · 0 评论 -
图像处理(二)——ORB论文笔记
ORB算法的论文来自"ORB: an efficient alternative to SIFT or SURF",作者是OpenCV维护和开发的公司willowgarage的,论文名字起的很牛气,摘要里说,ORB算法比sift算法效率高两个数量级。江湖上流传的说法是ORB算法综合性能在各种测评里是最好的。ORB算法是在FAST关键点检测+BRIEF特征上做的。1. 假设给定一副图。论文第...转载 2018-07-09 11:32:41 · 749 阅读 · 0 评论 -
图像特征提取(二)——SIFT算法详解
转载自:http://blog.csdn.net/zddblog/article/details/7521424尺度不变特征变换匹配算法详解Scale Invariant Feature Transform(SIFT)Just For Funzdd [email protected] or ([email protected])对于初学者,从David G.Lowe的论文到实现,有许多鸿沟,本文帮...转载 2018-07-09 11:45:54 · 19444 阅读 · 4 评论 -
图像特征提取(五)—— OpenCV实现Harris角点检测(二)
转自:https://blog.csdn.net/crzy_sparrow/article/details/7391511一、Harris角点检测基本理论(要讲清楚东西太多,附录提供文档详细说明)1.1 简略表达:角点:最直观的印象就是在水平、竖直两个方向上变化均较大的点,即Ix、Iy都较大 边缘:仅在水平、或者仅在竖直方向有较大的变化量,即Ix和Iy只有其一较大 平坦地区:在水平、竖直方向的变化...转载 2018-07-09 15:48:41 · 673 阅读 · 0 评论 -
图像特征提取(六)——尺度空间理论
转自:http://www.cnblogs.com/ronny/p/3886013.html1. 特征的不变性何谓特征?每个物体,我们总可以用一些词语或部件来描述它,比如人脸的特征:两个眼睛、一个鼻子和一个嘴巴。对于图像而言,我们需要计算机去理解图像,描述图像就需要计算机去取得图像的特征,对图像比较全面的描述即一个二维矩阵,矩阵内的每个值代表图像的亮度。有时候我们需要让计算机更简化的来描述一个图像...转载 2018-07-09 15:54:23 · 4923 阅读 · 0 评论 -
opencv笔记(二十二)——CV_8UC1,CV_32FC3等参数的含义
(一)Mat矩阵(图像容器)创建时CV_8UC1,CV_8UC2等参数详解 Mat不但是一个非常有用的图像容器类,同时也是一个通用的矩阵类.创建一个Mat对象的方法很多,我们现在先看一下Mat矩阵/图像容器类在OpenCv中的有关源代码:使用Mat图像容器类创建Mat类的对象 //! default constructor Mat(); //! c...转载 2018-08-26 10:29:57 · 5139 阅读 · 0 评论 -
opencv笔记(十五)——图像的二值化
要对图像进行轮廓检测,则必须要先对图像进行二值化,图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。《OpenCV入门指南》系列文章地址:http://blog.csdn.net/morewindows/article/category/129...转载 2018-08-22 14:45:52 · 505 阅读 · 0 评论 -
opencv笔记(十七)——形态学操作(膨胀、腐蚀、开、闭操作)
一、设置结构元素:getStructuringElement 图像处理经常要用到形态学操作,其中首先要获取结构元素。包括结构元素的大小及形状。 OpenCV提供了一个函数getStructuringElement,可以获取常用的结构元素的形状:矩形(包括线形)、椭圆(包括圆形)及十字形。 C++:Mat getStructuringElement(int shape, Size...转载 2018-08-23 17:08:44 · 1871 阅读 · 0 评论 -
opencv笔记(二十三)——OpenCV轮廓vector vector<Point>,vector<Vec4i>,vector<Rect>,vector<RotatedRect>
轮廓周围绘制矩形框vector<vector<Point>>,vector<V e c 4 i>,vector<R e c t>,vector<R o t a t e d R e c t>刚开始学OpenCV没多久遇到这些个东西不知道是什么,搞得很不舒服。通过给轮廓绘制矩形框弄明白了这些东西。vector<vecto...转载 2018-08-28 09:30:51 · 14657 阅读 · 8 评论 -
opencv笔记(二十四)——图像遍历的4种方式(at、指针、isContinuous、迭代器)、在Vector尾部加数据函数push_back()。
一、遍历图像 我们在实际应用中对图像进行的操作,往往并不是将图像作为一个整体进行操作,而是对图像中的所有点或特殊点进行运算,所以遍历图像就显得很重要,如何高效的遍历图像是一个很值得探讨的问题。1.1 at<typename>(i,j) Mat类提供了一个at的方法用于取得图像上的点,它是一个模板函数,可以取到任何类型的图像上的点。下面我们通过一个图像...转载 2018-08-28 09:43:18 · 3004 阅读 · 0 评论 -
opencv笔记(二十五)——对于.at<uchar>(j, i) 和.at<uchar>(Point(j, i)) 的区别
srcImage.at<uchar>(j, i) //表示的是 j 行 i 列 的这个像素srcImage.at<uchar>(Point(j, i)) //表示的是 坐标(j,i)的像素为了我下面的图方便说明 j 换成 x , i 换成 y 。也就是说:srcImage.at<uchar>(x, y) //表示的是 x 行 y 列 的这个像素...转载 2018-08-31 14:33:54 · 4272 阅读 · 0 评论 -
opencv笔记(二十六)——OpenCV 中CV_IMAGE_ELEM 的使用
CV_IMAGE_ELEM 是一个宏函数,基本形式: CV_IMAGE_ELEM(image,elemtype,row,col) 其中,image为指针数组,elemtype为数据的存取类型,row为图像的高度,范围:0~height;col为图像的宽度,范围:0~width (height = cvGetSize(...转载 2018-08-31 14:35:50 · 1265 阅读 · 0 评论 -
图像读取方式以及效率对比
今天来讲一下Python中几种主流读取图像方法,并对他们的读取方式的效率进行对比。我搜集了几类大家用的比较多的读取图像方法:opencv、scikit-image、scipy、pillow、matplotlib,这些方法的好处就是我们直接调包就好。在早期,pillow算是Python默认库中比较流行的图像工具,后来pillow原始开发人员逐渐做了废弃的选择(现在维护的是另一班人),然后各类...转载 2019-09-24 18:55:06 · 976 阅读 · 0 评论