18 caimouse

尚未进行身份认证

网名是caimouse

等级
TA的排名 28

在OpenCV里实现均值平滑5

从前面来看已经可以把积分图像的功能集成到OpenCV里,那么在它里面也有相应的均值平滑的函数cv2.blur,这个函数实现的功能与前面实现快速计算平滑的方法是一样的,只不过它可以处理彩色图像,因为它可以把彩色图片进行分离成三个颜色的图像进行平滑,再合并回来。它的定义如下:src输入图像dst输出图像ksize平滑窗口的大小anchor锚点,如果宽、高均为奇数,则Poin...

2019-09-18 16:16:40

在OpenCV里实现均值平滑4

前面为了说明原理,采用自己实现的积分图像的计算方法,其实这种方法也是OpenCV里实现的算法,那在OpenCV里有没有相同的实现函数呢?这是有的,它就是cv2.integral函数,它的定义如下:第一个参数src,可以使灰度图或RGB彩色图,单通道和三通道均可作为输入,但每个通道的精度必须是8位int或32位、64位浮点型;第二个参数sum,积分图,若输入src是灰度图,则积分图也是灰...

2019-09-18 15:54:36

在OpenCV里实现均值平滑3

有了前面的积分图像之后,就可以采用下面的公式来快速地计算均值平滑:这个公式就是前面计算面积的公式,因此可以把均值平滑的算法写成这样:#python3.7.4,opencv4.1#蔡军生https://blog.csdn.net/caimouse/article/details/51749579#importcv2importnumpyasnp#计算积分图像In...

2019-09-16 18:17:35

在OpenCV里实现均值平滑2

通过均值可以实现平滑的效果,不过这样采用卷积的方式来计算还是不够快,即使是使用了分离的卷积计算。由于均值的特殊性,可以针对这种卷积计算进行优化。我们知道计算均值就是把所有元素加到一起,然后再除以个数。由于图像很大,而卷积算子很小,那么就相当于一个窗口不断地滑动在图像上,并且计算这个窗口的和,那么有没有方法让这个计算的和快速一些。我们知道卷积计算是由乘法再求和,要快速就得把乘法替换掉,那么要怎么样才...

2019-09-16 17:11:46

在OpenCV里实现均值平滑1

前面学习了高斯平滑,其实就是使用卷积对图像的操作,卷积核的数据采用了二维正态分布,那么沿着这个思路,我们来把卷积核修改为不同的方式,那么这样的平滑是否也有意义,也能达到我们的目的呢。在这里就来进行一个修改,前面是使用高斯函数,在这里不使用这个了,而是使用平均值的方式。假设一个卷积核高为h,宽为w的均值卷积算子,它的所有元素值都是1/(h*w),如下所示:比如:均值平滑是指对每一个像...

2019-09-12 10:54:21

在OpenCV里实现高斯平滑6

前面可以看到使用分离的高斯卷积核来计算平滑更快,不过前面使用的卷积函数是采用scipy里的,现在我们来采用OpenCV里函数sepFilter2D来计算,它的定义如下:dst=cv.sepFilter2D(src,ddepth,kernelX,kernelY[,dst[,anchor[,delta[,borderType]]]])其中参数定义:InputArraysrc...

2019-09-12 08:21:03

在OpenCV里实现高斯平滑5

基于可分离的高斯矩阵的卷积,并且计算量还少,那么OpenCV也提供了相应的函数getGaussianKernel来计算高斯平滑,这个函数主要用来计算一维垂直方向的高斯卷积核,它的定义如下:retval=cv.getGaussianKernel(ksize,sigma[,ktype])其中参数ksize是表示一维垂直方向上的高斯核的行数,要求是正奇数;sigma是表示标准差;ktype是...

2019-09-11 16:45:11

在OpenCV里实现高斯平滑4

上面通过代码构造了高斯算子,并且使用二维的卷积运算来平滑图像,也达到了目标,不过还有一个问题,就是当你处理比较大的图片,或者比较大的高斯矩阵时,就会发现计算的时间很长。这时候我们就要考虑有没有高效快速的算法了,再回过头来审视一下二维高斯函数:可以看到最后的等式,再考虑指数的运算法则:根据(1)指数运算公式,反向使用它,就可以变换为两个指数相乘,这样就有意义了,表明高斯算子是可以分离...

2019-09-11 11:38:42

在OpenCV里实现高斯平滑3

在上面了解图像扩展的方式,也就是明白了扩展参数的作用,接着下来要明白为什么要叫做高斯平滑了,因为这个函数里使用了高斯分布,如果对高斯分布很陌生的话,或许听说正态分布,这个分布经常会使用到。高斯平滑,也有另外一种叫法:高斯滤波。高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像...

2019-09-11 08:37:09

在OpenCV里实现高斯平滑2

在上面这个例子里使用了高斯平滑函数cv2.GaussianBlur(),就可以让点阵的图片进行细腻化,模糊化,其实也是一个滤镜的作用。现在回过头来看一下,高斯平滑是怎么样实现的,又是怎么样进行卷积运算。在进行下一步之前,先来看一下函数cv2.GaussianBlur()的定义,如下:dst=cv.GaussianBlur(src,ksize,sigmaX[,dst[,sigmaY[,...

2019-09-10 15:51:04

在OpenCV里实现高斯平滑1

在前面复习了卷积的运算,以及使用python里的函数进行计算卷积,理解到卷积的过程,其实在图像里就是其中一点像素值可以与它周围的像素值进行加权求和,这就意味着输出的像素值是作为平均计算,因此该点的像素值由这点和这点周围的像素来决定了。理论上怎么样推导,怎么样计算,可以先放下来,首要的问题是先来感觉一下什么是高斯平滑,又是怎么样来变换图像的,因此先看下面的例子:#python3.7.4,op...

2019-09-10 09:27:54

在OpenCV里实现二维离散卷积3

从结果里可以看到,当卷积使用full计算时,输出结果会比原来输入的图像变大,这样会破坏图像的大小,如果经过几遍这样的计算,图像就会变得非常大,有时候这种输出结果会导致问题出现。那么有没有输入图像与输出图像一样大小的卷积运算呢?是有的,就是same模式计算,如下图:当卷积核的中心(K)与image的边角重合时,开始做卷积运算,可见卷积核的运动范围比full模式小了一圈。注意:这里的same还...

2019-09-09 11:07:46

在OpenCV里实现二维离散卷积2

上面了解了整个二维卷积的计算过程,那么接着下来,需要看看在代码里怎么样实现这样的计算,方法当然有很多,比如自己编写代码把整个算法实现,也可以采用python的科学计算库Scipy里的功能,还可以使用OpenCV的功能。在这里主要学习后面两种卷积的编程方法。先来学习使用scipy的方式,如果你的环境里没有安装这个库,可以使用下面的命令行来安装:C:\Users\arm>pipinst...

2019-09-09 09:34:49

在OpenCV里实现二维离散卷积1

在前面学习的内容主要是对图像进行增强的操作,不过图像可能还有某种干扰的像素,这些像素可能是由噪声引起的,噪声可以理解为由一种或多种原因造成的灰度值的随机变化,比如电磁波通讯时受到干扰。为了解决这个问题,在大多数情况之下,通过平滑技术(或称为滤波技术)进行抑制或者消除,常用的平滑处理算法包括二维离散卷积的高斯平滑、均值平滑,基于统计方法的中值平滑等等。在进行平滑算法之前,先来温习一下二维离...

2019-09-07 22:38:07

在OpenCV里实现限制对比度的直方图均衡化

下面将要介绍功能强大、用途广泛、影响深远的对比度有限的自适应直方图均衡(CLAHE,ContrastLimitedAdaptiveHistogramEqualization)算法。尽管最初它仅仅是被当作一种图像增强算法被提出,但是现今在图像去雾、低照度图像增强,水下图像效果调节、以及数码照片改善等方面都有应用。对于一幅图像而言,它不同区域的对比度可能差别很大。可能有些地方很明亮,而有些地方...

2019-09-07 09:34:58

在OpenCV里实现全局直方图均衡化2

上面是根据原理,使用自己编写的算法来实现全局直方图均衡化,接着下来,就是使用OpenCV里的函数cv2.equalizeHist()来计算,这个函数计算步骤如下:采用这个函数来计算相同的图片的例子:#python3.7.4,opencv4.1#蔡军生https://blog.csdn.net/caimouse/article/details/51749579#import...

2019-09-06 17:54:28

在OpenCV里实现全局直方图均衡化1

前面学习过直方图的概念,也学习过它的算法实现,也看到相应的图示。从这么多直方图里,是否看得出来一些门道呢?经过经验的积累,会发现清晰的图片,都有一个特点,就是直方图比较平坦,像素分布比较平均。由于环境或摄像机的问题,导致某些图片不清晰,从直方图上来看就是要么过度集中在右边,或者左边,或者中间,对于这些图片进行改善,让它的清晰度进行提高。当然提高的方法有很多,前面就有线性和伽马变换,现在来学习另外一...

2019-09-06 16:31:06

在OpenCV里实现伽马变换

在前面学习了图像的线性变换,接着下来介绍常用图像非线性变换—伽马变换(Gamma变换)。Gamma变换是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系:这个指数即为Gamma。Gamma变换就是用来图像增强,其提升了暗部细节,简单来说就是通过非线性变换,让图像从暴光强度的线性响应变得更接近人眼感受的响应,即将漂白(相机曝光)或过暗(曝光不足)的图片,进行矫...

2019-09-05 16:39:35

在OpenCV里实现正规化变换2

上面学习了L1范数,还有L2范数,那么什么是范数的分类呢?其实要从数学上一条公式来分析出来,这个公式如下:Lp=|x|p=(i|xi|p)1p在这条公式里,根据p值来取不同的值来分类,P=1-范数:║x║1=│x1│+│x2│+…+│xn│(曼哈顿距离)P=2-范数:║x║2=(│x1│2+│x2│2+…+│xn│2)1/2...

2019-09-05 11:35:18

在OpenCV里实现正规化变换1

前面学习了直方图正规化变换,采用的是等比例缩放方式,这种方式理解起来比较简单和形象。但是在图像正规化里,计算的方式有很多种,源于人们对距离的认识不同。说到距离,那么我们就要从中学的绝对值开始了,比如温度计就是常用的一种工具,早上温度为0度,中午为10度,那么温度相差为10度,这个就是温度的差,也是一种距离。如果晚上温度为-10度,那么晚上与早上的温差也是10度,要计算这个10度显然就是使用了绝对值...

2019-09-04 17:45:59

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024超级勋章
    1024超级勋章
    授予原创文章总数达到1024篇的博主,感谢你对CSDN社区的贡献,CSDN与你一起成长。
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周上午根据用户上周周三的博文发布情况由系统自动颁发。