图像处理
图像处理
南山二毛
怕什么真理无穷,进一寸有一寸的欢喜。
展开
-
Ubuntu同时安装OpenCV2和OpenCV3
Ubuntu下查看linux版本pkg-config --modversion opencv sudo apt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev libtbb-dev 下载好opencv3.2(https:...原创 2018-09-21 17:44:44 · 3131 阅读 · 0 评论 -
OpenCV学习29--计算物体的凸包
物体的凸包(Convex hull)用于理解物体的形状或轮廓。很多复杂物体的特性都能很好的被这种缺陷表现出来。 一组平面上的点,求一个包含所有点的最小的凸多边形,这就是凸包问题了。这可以形象地想成这样:在地上放置一些不可移动的木桩,用一根绳子把他们尽量紧地圈起来,这就是凸包了。 凸包有什么应用? 凸包在很多地方有着重要的应用,如手势识别,需要识别出手的轮廓的凸包,二维或者三维区域的边界的信息...原创 2018-03-21 17:39:08 · 2631 阅读 · 0 评论 -
OpenCV学习28--在图像中寻找轮廓
查找轮廓什么是轮廓:一个轮廓是由图像中的一系列点组成的,也就是图像中的一条曲线。在OpenCV中一般用序列来存储轮廓信息。序列中的每个元素是曲线中每个点的位置。 关于序列:序列是内存存储器中可以存储的一种对象,序列是某种结构的链表。下面是序列结构体:typedef sturct CvSeq{int flags; int header_size;CvSeq *...原创 2018-03-21 15:23:12 · 5065 阅读 · 0 评论 -
OpenCV学习27--反向投影
什么是反射投影 反射投影是记录给定图像中像素点如何适应直方图模型像素分布的方式(估计你看了这句话还是不懂)。 英文的解释是这样的:a way of recording how well the pixels of a given image fit the distribution of pixels in a histogram model.(还是不懂?) 简单地讲就是就是先计算某一特征的...原创 2018-03-21 10:59:18 · 2016 阅读 · 0 评论 -
OpenCV学习26--仿射变换
什么是仿射变换: 一个任意的仿射变换都能表示为 乘以一个矩阵 (线性变换) 接着再 加上一个向量 (平移).仿射变换可以实现什么功能:旋转平移缩放操作怎样得到一个仿射变换: 放射变换代表的是两幅图之间的关系。 通过原图和目标图像三个点之间的对应关系,可以求出一个2 X 3的矩阵。 我们通常使用2 x 3矩阵来表示仿射变换。怎样去旋转一个图像: - 确定旋转图像的...原创 2018-03-21 08:32:11 · 1784 阅读 · 0 评论 -
OpenCV学习25--Harris角点检测
在图像处理和与计算机视觉领域,兴趣点(interest points),或称作关键点(keypoints)、特征点(feature points) 被大量用于解决物体识别,图像识别、图像匹配、视觉跟踪、三维重建等一系列的问题。我们不再观察整幅图,而是选择某些特殊的点,然后对他们进行局部有的放矢的分析。如果能检测到足够多的这种点,同时他们的区分度很高,并且可以精确定位稳定的特征,那么这个方法就有使用...原创 2018-03-20 23:59:41 · 1773 阅读 · 0 评论 -
OpenCV学习24--漫水填充算法
漫水填充法是一种用特定的颜色填充联通区域,通过设置可连通像素的上下限以及连通方式来达到不同的填充效果的方法。漫水填充经常被用来标记或分离图像的一部分以便对其进行进一步处理或分析,也可以用来从输入图像获取掩码区域,掩码会加速处理过程,或只处理掩码指定的像素点,操作的结果总是某个连续的区域。 所谓漫水填充,简单来说,就是自动选中了和种子点相连的区域,接着将该区域替换成指定的颜色,这是个非常有用的功能...原创 2018-03-20 23:25:57 · 1920 阅读 · 0 评论 -
OpenCV学习23--模板匹配
模板匹配是在一幅图像中寻找一个特定目标的方法。这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否“相似”,当相似度足够高时,就认为找到了我们的目标。程序中会用到 OpenCV 的函数包括:void matchTemplate( InputArray image, InputArray templ, Outp...原创 2018-03-20 21:33:14 · 2027 阅读 · 0 评论 -
OpenCV学习资源
OpenCV自带的tutorials(英文) https://docs.opencv.org/2.4/doc/tutorials/tutorials.htmlOpenCV自带的tutorials(中文) http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/tutorials.html爱丁堡大学人工智能实验室 http...原创 2018-03-20 19:11:05 · 1797 阅读 · 0 评论 -
Openv-python学习1--图片加载
开发环境:spyder3 编程语言:python3.6 使用模块:opencv-python代码:import cv2 img = cv2.imread("beauty.jpg") cv2.namedWindow("Image") cv2.imshow("Image", img) cv2.waitKey (0) cv2.destroyAllWindow...原创 2018-04-09 09:38:51 · 1859 阅读 · 0 评论 -
Openv-python学习2--图片灰度变换
import cv2 import numpy as np img = cv2.imread("beauty.jpg") emptyImage = np.zeros(img.shape, np.uint8) emptyImage2 = img.copy()emptyImage3=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) cv2.namedWi...原创 2018-04-09 09:56:53 · 1987 阅读 · 0 评论 -
基于特征点的物体检测
本教程是一种用于基于在参考图像和目标图像之间找到点对应关系来检测特定对象的算法。尽管尺度变化或平面内旋转,它仍可以检测物体。它对于少量的平面外旋转和遮挡也很稳健。这种对象检测方法最适用于呈现非重复纹理图案的对象,这会产生独特的特征匹配。对于均匀着色的对象或包含重复图案的对象,此技术不太适用。请注意,此算法用于检测特定对象,例如参考图像中的大象,而不是任何大象。使用的图片完整的Matla...原创 2018-09-25 18:42:04 · 5590 阅读 · 1 评论 -
使用梯度网格法识别透明物体(斯坦福大学论文翻译)
原文链接:https://docplayer.net/52742044-Transparent-object-recognition-using-gradient-grids.html 如果无法下载可以到我的CSDN链接下载:https://download.csdn.net/download/qq_16481211/10618887摘要1.引言2.相关工作3.技术方法3.1...原创 2018-08-22 10:04:54 · 4774 阅读 · 1 评论 -
OpenCV学习18--霍夫变换检测直线
霍夫变换直线检测 前提条件:边缘检测已经完成(单通道8位灰度图像,经过二值化变为黑白图像) 平面空间转到极坐标空间 通过上式子可以把像素点转化成极坐标,如下图所示。 上面的曲线相交与一点,说明了什么信息呢?说明这些像素都在一条直线。 比如一个图像有200个像素,通过坐标变换。那么就可以得到200条曲线。相交点的对应横坐标角度就是直线在空间坐标的角度。这就是霍夫变换的原理。 霍...原创 2018-03-19 10:11:08 · 1911 阅读 · 0 评论 -
OpenCV学习31--图像分水岭分割算法
任意的灰度图像可以被看做是地质学表面,高亮度的地方是山峰,低亮度的地方是山谷。给每个孤立的山谷(局部最小值)不同颜色的水(标签),当水涨起来,根据周围的山峰(梯度),不同的山谷也就是不同的颜色会开始合并,要避免这个,你可以在水要合并的地方建立障碍,直到所有山峰都被淹没。你所创建的障碍就是分割结果,这个就是分水岭的原理,但是这个方法会分割过度,因为有噪点,或者其他图像上的错误。所以OpenCV实现了...原创 2018-04-12 11:48:55 · 4085 阅读 · 1 评论 -
OpenCV学习30--阈值分割的OTSU算法
OTSU算法又叫最大类间方差阈值分割算法,也叫大津算法,是在1980年由日本的大津展之提出,是由最小二乘法推导而来,用于一些简单的阈值确定。对于一个灰度图,我们有时候非常想把他用一个阈值将他的前景和背景区分开来。我们可以合理的假设为如果将图像的像素分布图画出来,那么图像上应该有两个峰,即前景色和背景色。在这两个峰之间肯定有一个谷,那么我们就可以将阈值设在这里,从而对图像达到一个良好的分割效果。...原创 2018-04-12 11:38:01 · 3417 阅读 · 0 评论 -
暗原色先验理论分析
何凯明博士在其文统计了各种不同环境情况所采集的场景图像,通过不断的验证实验,其结果表明:任意一个图像中,都会存在一个比较暗淡的区域,该区域内某些像素点灰度值相比其他部位较低,可能是由于纯颜色的影响,其他的颜色通道灰度值。因此,在指定像素点的方形区域内至少存在一个通道灰度值极小,即该区域内像素点接收到的光较其他区域的弱,而由于暗原色不能很好地解决面积较大的白亮图像,会使图像失真达不到理想的效果。因为...原创 2018-04-16 20:33:37 · 5812 阅读 · 0 评论 -
图像处理主要内容
图像增强在图像增强领域,运用的主要知识有:模糊数学理论,直方图法,小波理论,多尺度分析理论,非线性理论,HSI彩色模型饱和度分量法,Retinex理论,Contourlet变换等。 在空域中,图像处理的方法主要内容有灰度变换,空域滤波,直方图处理等,基于变换域的图像处理方法是将图像信息特征从时域中转换到频域下,利用一定的指数修正方法修正变换域内的系数,从而获得增强后的图像,与空域方法相比更好...原创 2018-04-16 16:57:23 · 6177 阅读 · 0 评论 -
图像处理需要掌握的基本知识架构
图像像素操作几何运算-加减乘除逻辑运算-与或非取反像素读写通道混合与调整对比度与亮度调整图像变换插值(zoom in或out)旋转(rotate)透视变换错切变换翻转像素统计计算均值与方差计算直方图计算最大最小计算像素内方差色彩空间RGBHSLYUVYCrCb色彩空间转换灰度转换调整饱和度与亮度主色彩提取与分析...原创 2018-03-20 18:34:45 · 10254 阅读 · 0 评论 -
OpenCV学习3--图像的掩膜操作
获取图像像素的指针CV-Assert(myImage.depth()==CV_8U);Mat.ptr < uchar>(int i=0)获取像素矩阵的指针,索引i表示第几行,从0开始计行数。获得当前行指针const uchar * current = myImage.ptr< uchar>(row);获取当前像素点P(row,col)的像素值p(row,co...原创 2018-03-14 16:41:15 · 2383 阅读 · 0 评论 -
OpenCV学习13--基本阈值操作
阈值(threshold)简单地说就是把图像分割的一个标尺。阈值类型 1.阈值二值化(threshold binary) 大于阈值取最大值,小于阈值取最小值。 2.阈值反二值化(threshold binary Interval) 3.截断(truncate) 超过阈值和阈值相等,否则为0. 4.阈值取零(threshold to zero) 小于阈值取0,大于的...原创 2018-03-18 20:17:47 · 1818 阅读 · 0 评论 -
OpenCV学习12--图像金字塔
金字塔原理 图像金字塔是一个图像集合,集合中所有的图像都源于同一个原始图像,而且通过对原始图像连续降采样获得。 在图像处理中,常常会调整图像大小,最常见的就是放大和缩小。 一个图像金字塔是一系列图像组成,最底下一张是图像尺寸最大,最上方的图像尺寸最小,从空间上从上向下看就像一个古埃及的金字塔。高斯金字塔–用来对图像进行降采样 拉普拉斯金字塔–用来重建一张图片根据他的上层降采样图片。...原创 2018-03-18 01:07:57 · 1857 阅读 · 0 评论 -
OPenCV学习11--形态学
在opencv\sources\samples下面提供了很多的官方例程,是学习OpenCV的最好的资源。视频教程地址: https://www.bilibili.com/video/av17748771/?p=12 感谢贾志刚老师的视频教程。开运算 闭运算 形态学梯度:膨胀减去腐蚀 顶帽(top hat)原图像与开操作之间的差值图像。 黑帽:闭操作图像和原图像之间的差值图像。...原创 2018-03-16 10:50:51 · 1795 阅读 · 0 评论 -
OpenCV学习10--腐蚀与膨胀
在opencv\sources\samples下面提供了很多的官方例程,是学习OpenCV的最好的资源。视频教程地址: https://www.bilibili.com/video/av17748771/?p=11 感谢贾志刚老师的视频教程。程序:#include<iostream>#include<opencv2/core/core.hpp>#inc...原创 2018-03-15 16:06:16 · 1807 阅读 · 0 评论 -
OpenCV学习9--模糊图像
在opencv\sources\samples下面提供了很多的官方例程,是学习OpenCV的最好的资源。视频教程地址: https://www.bilibili.com/video/av17748771/?p=9 感谢贾志刚老师的视频教程。图像模糊原理 Smooth/Blur 是图像处理中最简单和常用的操作之一。 使用该操作的原因之一就是为了给图像预处理时候减低噪声。 使用Sm...原创 2018-03-15 15:48:32 · 1757 阅读 · 0 评论 -
OpenCV学习8--绘制形状和文字
在opencv\sources\samples下面提供了很多的官方例程,是学习OpenCV的最好的资源。视频教程地址: https://www.bilibili.com/video/av17748771/?p=8 感谢贾志刚老师的视频教程。绘制形状 使用cv::Point与cv::Scalar Point表示2D平面的一个点x,y p = Point(10,8); Scalar...原创 2018-03-15 12:26:08 · 1817 阅读 · 0 评论 -
OpenCV学习7--调整图像亮度和对比度
在opencv\sources\samples下面提供了很多的官方例程,是学习OpenCV的最好的资源。理论: 图像变换可以看做如下: 像素变换–点操作 邻域变换–区域操作其中图像亮度和对比度属于像素变换–点操作α是对比度调节参数, β是调节亮度。一些主要API: Mat new_image = Mat::zeros(image.size(),image.type()...原创 2018-03-15 10:57:58 · 1790 阅读 · 0 评论 -
OpenCV学习6--图像混合
理论–线性混合操作 线性混合理论: 两幅图像的每个像素都进行加权相加。α的取值范围是0~1。相关API 线性混合API: void cv::addWeighted( inputArray src1, double alpha, InputArray src2, double gamma, outputArray dst, int dtype = -1 );代码演示...原创 2018-03-15 10:09:18 · 1798 阅读 · 0 评论 -
OpenCV学习5--图像操作
修改像素值 灰度图像 img.at< uchar>(y,x) = 128;RGB三通道图像 img.at< Vec3b>(y,x)[0]=128;//blue img.at< Vec3b>(y,x)[1]=128;//blue img.at< Vec3b>(y,x)[2]=128;//blue空白图像 img=Scalar(0);...原创 2018-03-14 22:12:43 · 1755 阅读 · 0 评论 -
OpenCV学习14--自定义线性滤波
卷积 模糊图像,图像边缘,增强图像常见卷积算子: Robert、sobel、拉普拉斯算子代码:#include <opencv2/opencv.hpp>#include <iostream>#include <math.h>using namespace cv;int main(int argc,char ** argv){ ...原创 2018-03-18 22:32:03 · 1937 阅读 · 1 评论 -
OpenCV学习15--处理边缘
卷积边缘问题 在做卷积处理时,图像边缘的像素不会被卷积操作。 原因在于边界像素没有完全跟卷积和重合,所以3x3像素会有1个像素的边缘没有被处理。 边缘处理方法: 在卷积开始之前增加边缘像素,填充的像素为0或者RGB黑色。这样就确保边缘被处理。OpenCV默认的是BORDER_DEFAULT,其他还有: BORDER_CONSTANT - 填充边缘用指定像素 BORDER_REPLI...原创 2018-03-18 23:17:57 · 3652 阅读 · 0 评论 -
OpenCV学习16--Laplance算子
理论: 在二阶微分的时候,最大变化处的值为零即边缘是零值,通过二阶导数计算,依据理论我们可以计算出图像二阶导数,提取边缘。 处理流程: 高斯模糊-去噪声GaussianBlur() 转化为灰度图像cvtColor() 拉普拉斯-二阶导数计算Laplacian() 提取绝对值convertScaleAbs() 显示结果代码:#include <opencv2/op...原创 2018-03-19 00:00:43 · 1872 阅读 · 0 评论 -
机器视觉与图像处理研究必备
机器视觉和图像处理的研究工作,做到以下两点非常重要: 1、把握国际最前沿的内容 2、所做的工作具备很高的实用性上述两点的解决方法分别为:找到这个方向公认成就最高的几个超级专家;找到实际应用的项目,边做边写文章 做好这几点的途径之一就是利用网络资源,利用权威网站和专家们的个人主页;以下大家收集了机器视觉和图像处理领域的核心材料。依照下面目录整理: [1] 研究群体(国际国内) ...原创 2018-03-09 11:03:56 · 10826 阅读 · 1 评论 -
OpenCV自带例程介绍
参考:http://www.swarthmore.edu/NatSci/mzucker1/opencv-2.4.10-docs/index.html 自带API介绍:例程总结: feature2d module原创 2018-03-20 15:56:10 · 4296 阅读 · 0 评论 -
OpenCV学习2--图片的加载,修改与保存
之前安装配置好OpenCV的环境之后,就可以进行使用了。下面是关于OpenCV的图像处理程序。#include<iostream>#include<opencv2/core/core.hpp>#include<highgui/highgui.hpp>using namespace cv;using namespace std;int mai...原创 2018-03-14 15:53:26 · 1847 阅读 · 0 评论 -
OpenCV学习22--直方图比较
对输入的两张图像计算得到直方图H1与H2,归一化到相同的尺度空间,然后通过计算H1与H2之间的距离得到两个直方图的相似程度进而进行比较图像本身的相似度。OpenCV提供的比较方法有四种: 直方图比较方法 Correlation相关性比较 Chi-Squra卡方比较 Intersection十字交叉性 Bhattacharyya distance巴氏距离直方图比较方法–相关性计算(CV...原创 2018-03-20 10:40:00 · 1922 阅读 · 0 评论 -
OpenCV学习1--介绍与环境搭建
PS:安装过程中的一些总结和教训安装文件夹里的V11对应的是VS2012版本,V14对应的是VS2015版本,所以使用VS2012的人可能无法使用opencv3后面的一些新版本的库,目前的opencv基本都支持V14,所以尽量安装VS2015.VS2012的平台默认是Win32,和你的电脑的位数无关,所以我们在VS2012上安装的时候只能选择X86的版本和Win32的平台。OpenC...原创 2018-03-13 21:14:07 · 1865 阅读 · 0 评论 -
OpenCV学习21--图像直方图
灰度直方图,RGB直方图,梯度直方图 对于数据在一定范围之内,可以统计频率的都可以做直方图。 图像直方图。是指对整个图像在灰度范围内的像素值(0-255)统计出现频率次数,据此生成的直方图成为图像直方图,直方图反映了图像灰度的分布情况,是图像的统计学特征。直方图均衡化是一种提高图像对比度的方法,拉伸图像灰度值范围。 如何实现均衡化呢?通过重映射可以将图像灰度分布从一个分布映射到另...原创 2018-03-19 21:28:25 · 1754 阅读 · 0 评论 -
OpenCV学习20--像素重映射
cv::remap Remap( src, dst, InputArray map1, //x映射表 InputArray map2, //y映射表 int interpolation, //选择的插值方法,常见线性插值,可选择立方等 int borderMode, //BORDER_CONSTANT const Scalar borderValue //color )...原创 2018-03-19 20:59:40 · 1862 阅读 · 0 评论 -
OpenCV学习19--霍夫变换检测圆
原理: 霍夫变换圆检测原理和直线相似,直线检测需要两个参数(theta,r)。圆形需要圆心做坐标两个参数和半径。 对左边做霍夫圆变换可以发现圆形的位置变成了一个两点,说明 HoughCircles( image, outputArray circles, 发现圆信息 int method, 方法-HOUGH_GRADIENT dou...原创 2018-03-19 17:08:24 · 3221 阅读 · 0 评论