如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 前言 特征点检测广泛应用到目标匹配,目标跟踪,三维重建等应用中,在进行目标建模时会对图像进行目标特征的提取,常用的有颜色,角点,特征点,轮廓,纹理等特征.而下面学习常用的特征点检测. 总结一下提取特征点的作用: 1,运动目标跟踪 2,物体识别 3,图像配准 4,全景图像拼接 5,三维重建 而一种重要的点…
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 1,如何提高图像像素 对曝光过度或者逆光拍摄的图片可以通过直方图均衡化的方法用来增强局部或者整体的对比度. 对于相机采集的原始图像经常会出现一种现象,即图像所有像素的灰度值分布不均匀,而是集中在某一特定的小区域,导致图像中的所有信息的灰度值都很接近,即对比度差,很难从图像中分辨出某一特征的信息.而质量较…
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 准备:图像转数组,数组转图像 将RGB图像转换为一维数组的代码如下: # 图像二维像素转换为一维 img = cv2.imread(filename=img_path) data = img.reshape((-1, 3)) data = np.float32(data) print(img.shape…
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 图像的几何变换是在不改变图像内容的前提下对图像像素进行空间几何变换,主要包括了图像的平移变换,缩放,旋转,翻转,镜像变换等. 1,几何变换的基本概念 1.1 坐标映射关系 图像的几何变换改变了像素的空间位置,建立一种原图像像素与变换后图像像素之间的映射关系,通过这种映射关系能够实现下面两种计算: 1,原…
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 形态学操作简单来说,就是改变物体的形状,下面学习一下,首先本文的目录如下: 1,定义结构元素 2,腐蚀和膨胀 3,开运算和闭运算 4,礼帽/顶帽,黑帽算法 5,梯度运算 6,形态学运算 检测边和角点(1,检测边缘 : 2,检测拐角) 1,定义结构元素 形态学操作的原理:在特殊领域运算形式--结构元素(S…
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 在数字图像处理中,有两个经典的变换被广泛应用--傅里叶变换和霍夫变化.其中,傅里叶变换主要是将时间域上的信号转变为频率域上的信号,用来进行图像降噪,图像增强等处理,这一篇主要学习傅里叶变换,后面在学习霍夫变换. 下面学习一下傅里叶变换.有人说傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前…
1,计算机眼中的图像 我们打开经典的 Lena图片,看看计算机是如何看待图片的: 我们点击图中的一个小格子,发现计算机会将其分为R,G,B三种通道.每个通道分别由一堆0~256之间的数字组成,那OpenCV如何读取,处理图片呢,我们下面详细学习. 2,图像的加载,显示和保存 我们看看在OpenCV中如何操作: import cv2 # 生成图片 img = cv2.imread("lena.jpg") # 生成灰色图片 imgGrey = cv2.imread("lena.j…
在OpenCV中我们经常会遇到一个名字:Mask(掩膜).很多函数都使用到它,那么这个Mask到底是什么呢,下面我们从图像基本运算开始,一步一步学习掩膜. 1,图像算术运算 图像的算术运算有很多种,比如两幅图像可以相加,相减,相乘,相除,位运算,平方根,对数,绝对值等:图像也可以放大,缩小,旋转,还可以截取其中的一部分作为ROI(感兴趣区域)进行操作,各个颜色通道还可以分别提取对各个颜色通道进行各种运算操作.总之,对图像可以进行的算术运算非常的多.这里先学习图片间的数学运算,图像混合,按位运算.…
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 下面主要学习图像灰度化的知识,结合OpenCV调用 cv2.cvtColor()函数实现图像灰度化,使用像素处理方法对图像进行灰度化处理. 1.  图像灰度化 1.1  图像灰度化原理 图像灰度化是将一幅彩色图像转换为灰度化图像的过程.彩色图像通常包括R.G.B三个分量,分别显示出红绿蓝等各种颜色,灰度…
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 本节学习图像金字塔,图像金字塔包括高斯金字塔和拉普拉斯金字塔.它是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构.简单来说,图像金字塔就是用来进行图像缩放的. 1,图像金字塔 图像金字塔是指一组图像且不同分辨率的子图集合,它是图像多尺度表达的一种,以多分辨…
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 1,简单几何图像绘制 简单几何图像一般包括点,直线,矩阵,圆,椭圆,多边形等等. 下面学习一下 opencv对像素点的定义.图像的一个像素点有1或3个值,对灰度图像有一个灰度值,对彩色图像有3个值组成一个像素值,他们表现出不同的颜色. 其实有了点才能组成各种多边形,才能对多边形进行轮廓检测,所以下面先练…
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice "平滑处理"(smoothing)也称"模糊处理"(bluring),是一项简单且使用频率很高的图像处理方法.平滑处理的用途有很多,最常见的是用来减少图像上的噪点或者失真.在涉及到降低图像分辨率时,平滑处理是非常好用的方法. 图像滤波,就是在尽量保留图像细节特征的条件下对目…
OpenCV 计算图像的直方图 计算图像的直方图是图像处理领域一个非经常见的基本操作. OpenCV 中提供了 calcHist 函数来计算图像直方图.只是这个函数说实话挺难用的,研究了好久才掌握了些主要的使用方法. calcHist 函数 C++ 的函数原型例如以下: void calcHist(const Mat* images, int nimages, const int* channels, InputArray mask, SparseMat& hist, int dims, con…
1.直方图 一幅图像由不同灰度值的像素组成,图像中灰度的分布情况是该图像的一个重要特征.图像的灰度直方图就描述了图像中灰度分布情况,能够很直观的展示出图像中各个灰度级所占的多少.图像的灰度直方图是灰度级的函数,描述的是图像中具有该灰度级的像素的个数:其中,横坐标是灰度级,纵坐标是该灰度级出现的频率. 不过通常会将纵坐标归一化到[0,1][0,1]区间内,也就是将灰度级出现的频率(像素个数)除以图像中像素的总数.灰度直方图的计算公式如下: 其中 rk是像素的灰度级 nk是具有灰度rk的像素个数 M…
本文主要内容来源于书籍<python计算机视觉编程> 我是一名初学者,如果你发现文中有错误,请留言告诉我,谢谢 PIL模块 PIL模块全程为Python Imaging Library,是python中一个免费的图像处理模块. 打开图像 PIL模块常用到它的Image类,打开图像首先要导入Image类 from PIL import Image, 然后调用Image的open方法. 例如 from PIL import Image image = Image.open("smallp…
本章我们学习LBP图像的原理和使用,因为接下来教程我们要使用LBP图像的直方图来进行脸部识别. 参考资料: http://docs.opencv.org/modules/contrib/doc/facerec/facerec_tutorial.html http://www.cnblogs.com/mikewolf2002/p/3438166.html       LBP的基本思想是以图像中某个像素为中心,对相邻像素进行阈值比较.如果中心像素的亮度大于等于它的相邻像素,把相邻像素标记为1,否则标…
1 直方图 灰度级范围为 \([0,L-1]\) 的数字图像的直方图是离散函数 \(h(r_k) = n_k\) , 其中 \(r_k\) 是第\(k\)级灰度值,\(n_k\) 是图像中灰度为 \(r_k\) 的像素个数.在实践中,经常用乘积 \(MN\) 表示的图像像素的总数除它的每个分量来归一化直方图,通常 \(M\) 和 \(N\) 是图像的行和列的位数.因此,归一化后的直方图由 \(p(r_k) = n_k/MN\) 给出,其中 \(k = 0, 1, ... ,L-1\) .简单地说…
直方图均衡化 原理: 想象一下如果一副图像中的大多是像素点的像素值都集中在一个像素值范围之内会怎样呢?例如,如果一幅图片整体很亮,那所有的像素值应该都会很高.但是一副高质量的图像的像素值分布应该很广泛.所以你应该把它的直方图做一个横向拉伸(如下图),这就是直方图均衡化要做的事情.通常情况下这种操作会改善图像的对比度.直方图均衡化后面潜在的数学原理是一个分布(输入的亮度直方图)被映射到另一个分布(一个更宽,理想统一的亮度值分布),映射函数是一个累积分布函数.对于连续分布,结果将是准确的均衡化.在e…
转载请详细注明原作者及出处,谢谢! 本篇文章介绍如何用OpenCV Python来计算直方图,并简略介绍用NumPy和Matplotlib计算和绘制直方图 直方图的背景知识.用途什么的就直接略过去了.这里直接介绍方法. 计算并显示直方图 与C++中一样,在Python中调用的OpenCV直方图计算函数为cv2.calcHist. cv2.calcHist的原型为: cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, acc…
直方图用于展示数据的分布情况,x轴是一个连续变量,y轴是该变量的频次. 下面利用Nathan Yau所著的<鲜活的数据:数据可视化指南>一书中的数据,学习画图. 数据地址:http://datasets.flowingdata.com/crimeRatesByState2005.csv 以下是这个数据文件的前5行: state murder forcible_rape robbery aggravated_assault \ 0 United States 5.6 31.7 140.7 291…
深度学习与计算机视觉(12)_tensorflow实现基于深度学习的图像补全 原文地址:Image Completion with Deep Learning in TensorFlow by Brandon Amos 原文翻译与校对:@MOLLY && 寒小阳 (hanxiaoyang.ml@gmail.com) 时间:2017年4月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/70214565 声明:版权所有,转载请联系作…
手工实现灰度及RGB直方图 !库 1. 灰度图像直方图 算法 1. 图片灰度化: 2. 遍历Mat,统计各灰度级的像素个数: 3. 根据opencv画点线函数,绘制坐标轴及像素分布图 源码(编译环境:VS2017+OpenCV) 补充:三通道直方图(即RGB彩色图象直方图在后面) #include <iostream> #include <string> #include <algorithm> #include <opencv2/opencv.hpp> #…
直方图概念 图像的构成是有像素点构成的,每个像素点的值代表着该点的颜色(灰度图或者彩色图).所谓直方图就是对图像的中的这些像素点的值进行统计,得到一个统一的整体的灰度概念.一般情况下直方图都是灰度图像,直方图x轴是灰度值(一般0~255),y轴就是图像中每一个灰度级对应的像素点的个数.直方图的好处就在于可以清晰了解图像的整体灰度分布,这对于后面依据直方图处理图像来说至关重要. 统计直方图 Opencv给我们提供的函数是cv2.calcHist(),该函数有5个参数: hist = cv2.cal…
本篇懒得排版,直接在网页html编辑器编辑 在图像处理时,我们常常需要求出图像的直方图.灰度平均值.灰度的方差,这里给出一个opencv2+自带程序,实现这些功能. 直方图 对于直方图,使用cv::calcHist函数可以求出. 原型 void calcHist(const Mat* arrays, int narrays, const int* channels, InputArray mask, OutputArray hist, int dims, const int* histSize,…
随着HDTV的普及,以LCD-TV为主的高清数字电视逐渐进入蓬勃发展时期.与传统CRT电视不同的是,这些高清数字电视需要较复杂的视频处理电路来驱动,比如:模数转换(A/D Converter).去隔行(De-interlacer).视频缩放(Scaler)和视频图像增强(Video Enhancement)等等.由于HDTV的带宽较高,720p信号(1280×720@60Hz)的像素速率达到74MHz,因此针对HDTV的视频处理算法需要更高性能的器件.采用大规模高工艺的ASIC芯片是目前这个问题…
一.利用直方图的方式进行批量的图片缺陷检测(方法简单) 二.步骤(完整代码见最后) 2.1灰度转换(将原图和要检测对比的图分开灰度化) 灰度化的作用是因为后面的直方图比较需要以像素256为基准进行相关性比较 img = cv2.imread("0.bmp") #原图灰度转换 gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) #循环要检测的图,均灰度化 for i in range(1, 6): t1=cv2.cvtColor(cv2.imread…
开发配置 OpenCV的例程中已经带有了人脸检测的例程,位置在:OpenCV\samples\facedetect.cpp文件,OpenCV的安装与这个例子的测试可以参考我之前的博文Linux 下编译安装OpenCV. 网上能够找到关于OpenCV人脸检测的例子也比较多,大多也都是基于这个例程来更改,只是多数使用的是OpenCV 1.0的版本,而OpenCV2.0以后由于模块结构的更改,很多人并没有将例程运行起来.如果是新版的OpenCV跑旧的例程,编译运行出错的话,需要确保: #include…
疲劳检测 pan.baidu.com/s/1Ng_-utB8BSrXlgVelc8ovw #导入工具包 from scipy.spatial import distance as dist from collections import OrderedDict import numpy as np import argparse import time import dlib import cv2 FACIAL_LANDMARKS_68_IDXS = OrderedDict([ ("mouth&…
OpenCV图像处理学习笔记-Day03 目录 OpenCV图像处理学习笔记-Day03 第31课:Canny边缘检测原理 第32课:Canny函数及使用 第33课:图像金字塔-理论基础 第34课:pyrDown函数及使用-向下采样 第35课:pyrUP函数及使用-向上采样 第36课:向下取样与向上取样的可逆性研究 第37课:拉普拉斯金字塔 第38课:图像轮廓 第39课:直方图的概念 第40课:绘制直方图 第31课:Canny边缘检测原理 第32课:Canny函数及使用 edges = cv2.…
OpenCV图像处理学习笔记-Day4(完结) 第41课:使用OpenCV统计直方图 第42课:绘制OpenCV统计直方图 pass 第43课:使用掩膜的直方图 第44课:掩膜原理及演示 第45课:直方图均衡化原理 第46课:直方图均衡化函数equalizeHist 第47课:subplot函数的使用 第48课:matplotlib.pyplot.imshow函数的使用 第49课:直方图均衡化对比 第50课:傅里叶变换理论基础 第51课:numpy实现傅里叶变换 第52课:使用numpy实现逆傅…