数字图像处理基础
文章平均质量分 88
kuweicai
这个作者很懒,什么都没留下…
展开
-
霍夫变换圆检测原理及 OpenCV API 应用
霍夫变换圆检测原理及 OpenCV API 应用1. 霍夫圆变换霍夫圆检测和霍夫直线检测的原理类似。建议先理解霍夫直线检测的原理,再来看霍夫圆检测。圆在极坐标下的数学表达式如下:{x=a+r⋅cosθy=b+r⋅sinθ\left\{ \begin{aligned}x = a + r\cdot cos\theta \\y = b + r\cdot sin\theta \\\end{aligned}\right.{x=a+r⋅cosθy=b+r⋅sinθ其中 a,ba, ba,b 是原创 2020-11-30 14:40:47 · 1854 阅读 · 1 评论 -
霍夫变换直线检测原理及 OpenCV API 应用
霍夫变换直线检测原理及 OpenCV API 应用1. 霍夫变换霍夫变换(Hough Transform)于1962年由Paul Hough 首次提出,后于1972年由Richard Duda和Peter Hart推广使用,是图像处理领域内从图像中检测几何形状的基本方法之一。经典霍夫变换用来检测图像中的直线,后来霍夫变换经过扩展可以进行任意形状物体的识别,例如圆和椭圆。霍夫变换运用两个坐标空间之间(图像空间和霍夫空间)的变换,将在一个图像空间中具有相同形状的曲线或直线映射成霍夫空间的一个点,从而把检测原创 2020-11-30 14:35:58 · 1629 阅读 · 0 评论 -
角点检测(Harris & Shi-Tomas)的原理及OpenCV API 的应用
角点检测(Harris & Shi-Tomas)的原理及OpenCV API 的应用这篇博客的内容主要时对参考中多篇博客的总结。1. 角点在现实世界中,角点对应于物体的拐角,道路的十字路口、丁字路口等。关于角点的具体描述可以有几种:1). 一阶导数(即灰度的梯度)的局部最大所对应的像素点;2). 两条及两条以上边缘的交点;3). 图像中梯度值和梯度方向的变化速率都很高的点;4).角点处的一阶导数最大,二阶导数为零,指示物体边缘变化不连续的方向。从求解思路上可以分为原创 2020-11-29 23:10:13 · 2020 阅读 · 0 评论 -
Canny边缘检测算法的实现
转自:canny边缘检测图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波。我们知道微分运算是求信号的变化率,具有加强高频分量的作用。在空域运算中来说,对图像的锐化就是计算微分。由于数字图像的离散信号,微分运算就变成计算差分或梯度。图像处理中有多种边缘检测(梯度)算子,常用的包括普通一阶差分,Robert算子(交叉差分),Sobel算子等等,是基于寻找梯度强度。拉普拉斯算子(...转载 2018-03-06 21:14:21 · 5482 阅读 · 0 评论 -
经典人脸识别算法小结——EigenFace, FisherFace & LBPH(上)
该文章由下面两部分组成:1).经典人脸识别算法小结——EigenFace, FisherFace & LBPH(上),这部分介绍人脸开源库,和图片的读取等准备工作。2).经典人脸识别算法小结——EigenFace, FisherFace & LBPH(下),这部分介绍三种人脸识别算法。1. 人脸数据库在开始之前,首先介绍几个常用的开源face database,上面可以下载人脸图像...原创 2018-02-10 20:14:16 · 5796 阅读 · 1 评论 -
主成分分析(PCA)和线性判别分析(LDA)原理简介
本文整理自下面的博客,对PCA和LDA的原理进行介绍,并对比了其不同点。1).主成分分析(PCA)原理详解2).线性判别分析LDA与主成分分析PCA3). PCA(主成成分分析)和LDA(线性判别分析)详解-共性和区别4).什么时候使用PCA和LDA?5).PCA的数学原理6).Dimensionality Reduction——LDA线性判别分析原理篇7).主成分分析...原创 2018-02-04 21:58:53 · 30188 阅读 · 3 评论 -
Gabor滤波器及Gabor特征提取
1.Gabor变换简介该部分主要摘自:Gabor滤波进行目标图像纹理特征的提取。说起Gabor变换就得先从Fourier变换说起。傅里叶变换是线性系统分析的有力工具,提供了一种把时域信号转换到频域进行分析的途径,时域和频域之间是一对一的映射关系。图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。如:大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低;而对 于地表属...原创 2018-02-20 17:57:39 · 9305 阅读 · 1 评论 -
经典人脸识别算法小结——EigenFace, FisherFace & LBPH(下)
该文章由下面两部分组成:1).经典人脸识别算法小结——EigenFace, FisherFace & LBPH(上),这部分介绍人脸开源库,和图片的读取等准备工作。2).经典人脸识别算法小结——EigenFace, FisherFace & LBPH(下),这部分介绍三种人脸识别算法。如果对于opencv中的人脸识别API感兴趣,可参看官方的说明:Face Recognition ...原创 2018-02-16 17:57:37 · 27849 阅读 · 7 评论 -
图像处理中的常用几何变换——平移、旋转、缩放、相似变换、仿射变换及单应性变换
1. Overview几何变换,又称空间变换,是图形处理的一个方面,是各种图形处理算法的基础。它将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置,其实质是改变像素的空间位置,估算新空间位置上的像素值。几何变换不改变图像的像素值, 只是在图像平面上进行像素的重新安排。适当的几何变换可以最大程度地消除由于成像角度、透视关系乃至镜头自身原因所造成的几何失真所产生的负面影响。几何变换常常作为图像处...原创 2019-04-16 21:17:13 · 10425 阅读 · 3 评论 -
RANSAC(随机抽样一致性算法)的原理及其在 SIFT 特征点匹配中的应用
RANSAC(随机抽样一致性算法)1. OverViewRANSAC(RANdom SAmple Consensus, 译作 随机抽样一致性算法)是由Fischler和Bolles于1981年最先提出。它是根据一组包含异常数据的样本数据集,计算出数据的数学模型参数,得到有效样本数据的算法。该算法在计算机视觉的匹配问题中(比如相机配准, 特征点匹配等)被用来寻找最佳的匹配模型。2. RANS...原创 2019-04-16 22:45:54 · 6527 阅读 · 0 评论 -
opencv中归一化函数normalize()的原理讲解
1. 归一化归一化就是要把需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。首先归一化是为了后面数据处理的方便,其次是保证程序运行时收敛加快。归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在某个区间上是统计的坐标分布。归一化有同一、统一和合一的意思。归一化的目的,是使得没有可比性的数据变得具有可比性,同时又保持相比较的两个数据之间的相对关系,......原创 2018-01-06 15:47:47 · 81693 阅读 · 10 评论 -
opencv中的图像矩(空间矩,中心矩,归一化中心矩,Hu矩)
1. opencv计算图像矩的APIC++: Moments moments(InputArray array, bool binaryImage=false )Python: cv2.moments(array[, binaryImage]) → retvalC: void cvMoments(const CvArr* arr, CvMomen原创 2018-01-10 19:45:05 · 15750 阅读 · 0 评论 -
哈尔(Haar)小波变换的原理及opencv源代码
# include# include using namespace std; using namespace cv; int main(){ Mat img = imread("lenna.bmp",0); int width = img.cols; int height = img.ro原创 2017-12-27 21:55:14 · 12482 阅读 · 3 评论 -
opencv彩色图像(RGB)转灰度图像及其优化
1. 彩色图像转灰度图像RGB转灰度,通常会使用下面的一个心理学公式:(Matlab和OpenCV中使用的也是该公式)Gray = 0.2989*R + 0.5870*G + 0.1140*B实现代码如下#include//通过上述计算公式得到灰度图像void grayImageShow(cv::Mat &input, cv::Mat &output)转载 2017-06-18 22:32:01 · 14158 阅读 · 1 评论 -
Opencv绘制灰度/彩色图像的直方图及直方图的均衡化实例及源代码
1. Opencv中的坐标关系在开始绘制直方图之前,需要明确Opencv中采用的坐标关系。下图非常清晰的标出了三种常用的坐标轴名称,及相互的关系。2. 灰度图像的直方图及均衡化利用opencv中的calcHist()函数计算直方图,利用equalizeHist()对直方图进行均衡化,然后利用rectangle()(通过绘制多个矩形/线条)绘制出直方图。下面是对一张图原创 2017-06-27 22:56:56 · 7208 阅读 · 0 评论 -
opencv中常用的线性滤波器--boxFilter(),blur(),GaussianBlur()
1. boxFilter()下面是opencv官方对boxFilter()函数的介绍。如果均衡化(即normalize==ture,这也是默认值),则其本质是均值滤波。C++: void boxFilter(InputArray src, OutputArray dst, int ddepth, Size ksize, Point anchor=Point(-1,-1)原创 2017-07-04 22:17:20 · 24587 阅读 · 0 评论 -
opencv中常用的非线性滤波器--中值滤波medianBlur() 和 双边滤波bilateralFilter()
1.1 中值滤波中值滤波的原理很简单,就是用像素点邻域灰度值的中值来代替该像素点的灰度。由于中值滤波是基于排序统计理论,所以其对脉冲噪声、椒盐噪声会有很好的滤波效果,并能保留图像的边缘细节。但是代价就是效率低,花费的时间是均值滤波的5倍以上。opencv中对应的函数为medianBlur(), 下面分别利用高斯滤波和中值滤波对衣服有椒盐噪声的图片进行滤波。1.2 源代码及滤波效原创 2017-07-06 22:42:08 · 6977 阅读 · 0 评论 -
数字图像的缩放及opencv中的实现
1. 数字图像的缩放常用的数字图像的缩放的方式有最近邻插值、双线性插值、双三次插值。最近邻插值就是把目标图像的像素点映射到原图像中,那个像素离得最近,就把目标图像中的像素值取为该点的值。双线性插值是指考虑两个方向(X & Y),四个像素点来计算目标图像中的像素值。和最近邻相比,每个双线性不仅考虑了两个方向,并且每个方向上考虑了目标像素与原像素点的距离的加权。双线性内插法转载 2017-07-23 16:14:11 · 6846 阅读 · 1 评论 -
opencv显示图像的傅里叶谱图像(频谱)源代码详解
1. 频率域通过傅里叶变换连接空间域和频率域,其是频率域滤波的基础。这里将结合opencv中的sample文档(\source\sample目录下的dft.cpp),对一副灰度图像进行傅里叶变换,并显示其傅里叶谱图像。2. 傅里叶谱显示#include#includeint main(void){ //加载一副灰度图像 cv::Mat src=cv::imrea原创 2017-08-02 21:45:48 · 10017 阅读 · 2 评论 -
导向滤波小结:从导向滤波(guided filter)到快速导向滤波(fast guide filter)的原理,应用及opencv实现代码
1. 导向滤波简介导向滤波是何凯明在学生时代提出的一个保边滤波(edge-preserving smoothing)算法。何凯明在cv圈应该算是名人了,学生时代关于图像去雾的研究就以第一作者的身份获得Best Paper Award(CVPR 2009),而且今年刚刚又斩获Marr Prize(ICCV 2017)。更多关于何凯明的最新研究动态可以点击以下链接何凯明。导向滤波顾名思义,就是原创 2017-10-29 15:49:43 · 38722 阅读 · 5 评论 -
伽马(Gamma)校正的原理及opencv实现
转自 Gamma校正及其OpenCV实现,略有改动。 一、什么是Gamma校正?Gamma校正是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系:[2]这个指数即为Gamma.经过Gamma校正后的输入和输出图像灰度值关系如图1所示:横坐标是输入灰度值,纵坐标是输出灰度值,蓝色曲线是gamma值小于1时的输入输出关系,红色转载 2018-01-03 21:20:55 · 12396 阅读 · 0 评论 -
基于图像内插值和外插值的亮度/对比度调整及模糊/锐化方法
根据http://blog.csdn.net/jia20003/article/details/52896077整理如下:1. 内插值及外插值介绍两张图像混合时通过内插与外插值方法可以实现图像亮度、对比度、饱和度、填色、锐化等常见的图像处理操作。在两张图像混合时最常见是线性插值方法,使用的混合权重公式如下:这个就是两张图像最常见的混合公式,其实我们很少考虑到值大于1转载 2017-07-15 17:41:37 · 1893 阅读 · 0 评论