图像处理
胖子工作室
这个作者很懒,什么都没留下…
展开
-
[Kalman滤波]无迹卡尔曼滤波的C++与MATLAB实现
[Kalman滤波]无迹卡尔曼滤波的C++与MATLAB实现转载 2023-05-24 09:18:34 · 303 阅读 · 0 评论 -
自动对焦算法
自动对焦算法https://blog.csdn.net/thisiszdy/article/details/108984491转载 2022-03-28 20:28:02 · 487 阅读 · 0 评论 -
补偿范围
下相机拍照时,机械手夹住产品:1、X,Y偏差值计算:机械手端用加号,视觉端用基准值 - 当前产品得到的值2、R偏差值计算:机械手端用加号,视觉端用基准值 - 当前产品得到的值玻璃片上相机拍照,下相机拍照偏差计算方式:1、上相机偏差计算:(1)上相机X、Y偏差值计算:视觉端基准值 - 当前产品得到的值(2)上相机R偏差值计算:视觉端基准值 - 当前产品得到的值2、下相机偏差计算:(...原创 2020-04-09 18:43:40 · 602 阅读 · 0 评论 -
【OpenCV + Python】图像平滑
• 学习使用不同的低通滤波器对图像进行模糊• 使用自定义的滤波器对图像进行卷积(2D 卷积)我们也可以对 2D 图像实施低通滤波(LPF),高通滤波(HPF)等。 LPF 帮助我们去除噪音,模糊图像。 HPF 帮助我们找到图像的边缘OpenCV 提供的函数 cv.filter2D() 可以让我们对一幅图像进行卷积操作。使用低通滤波器可以达到图像模糊的目的。这对与去除噪音很有帮助。其实就是去...原创 2019-06-24 23:34:25 · 288 阅读 · 0 评论 -
【OpenCV + Python】形态学转换
• 我们要学习的函数有:cv2.erode(), cv2.dilate(), cv2.morphologyEx()等。• 学习不同的形态学操作,例如腐蚀,膨胀,开运算,闭运算等。形态学操作是根据图像形状进行的简单操作。一般情况下对二值化图像进行的操作。需要输入两个参数,一个是原始图像,第二个被称为结构化元素或核,它是用来决定操作的性质的。两个基本的形态学操作是腐蚀和膨胀。他们的变体构成了开运...原创 2019-06-30 09:08:05 · 340 阅读 · 0 评论 -
图像处理中的距离含义
距离变换是二值图像处理与操作中常用手段,在骨架提取,图像窄化中常有应用。距离变换的结果是得到一张与输入图像类似的灰度图像,但是灰度值只出现在前景区域。并且越远离背景边缘的像素灰度值越大。根据度量距离的方法不同,距离变换有几种不同的方法,假设像素点p1(x1, y1),p2(x2, y2)计算距离的方法常见的有:欧几里德距离(常用的距离),是点和点之间坐标的均方根。通常情况下人们所说到...原创 2019-06-28 10:37:13 · 3570 阅读 · 0 评论 -
【OpenCV + Python】给指定位置像素赋值
img[i,:] = im[j,:] # 将第 j 行的数值赋值给第 i 行img[:,i] = 100 # 将第 i 列的所有数值设为 100img[:100,:50].sum() # 计算前 100 行、前 50 列所有数值的和img[50:100,50:100] # 50~100 行,50~100 列(不包括第 100 行和第 100 列)img[i].mean() # 第 i 行所...原创 2019-06-28 14:34:52 · 6147 阅读 · 0 评论 -
相机帧率与曝光的关系
所谓的测量单位为每秒显示帧数(Frames per Second),简称:FPS或“赫兹”(Hz)。 由于人类眼睛的特殊生理结构,如果所看画面之帧率高于16fps的时候,就会认为是连贯的,此现象称之为视觉暂留。这也就是为什么电影胶片是一格一格拍摄出来,然后快速播放的。 每秒的帧数(fps)或者说帧率表示图形处理器处理场时每秒钟能够更新的次数。高的帧率可以得到更流畅、更逼真的动画。一般来说30fps...转载 2019-06-29 08:32:06 · 6781 阅读 · 0 评论 -
【OpenCV + Python】图像窗口大小控制
import cv2img=cv2.imread(‘5.jpg’,0)rows,cols=img.shaperet2,mask2 = cv2.threshold(img,23, 255,cv2.THRESH_OTSU | 1)ret2,mask3 = cv2.threshold(img,0,255,1+ cv2.THRESH_OTSU)cv2.namedWindow(“enhanced...原创 2019-06-29 11:07:25 · 5337 阅读 · 0 评论 -
图像分辨率
简单来说,分辨率就是屏幕上横、纵的总象素点数,比如说320×240的分辨率就是手机屏幕横向每行有240个象素点,纵向每列有320个象素点,乘起来就是320×240=76800个象素点,而176×144=25344。这样的话,同样尺寸大小的屏幕分辨率越高,图象显示也就越清晰,同样2.0寸的显示屏,320×240象素的分辨率显示效果就会好于176×144的分辨率。...原创 2019-06-29 11:22:29 · 3644 阅读 · 0 评论 -
【OpenCV + Python】人脸识别
HAAR与LBP特征数据下载:实例:import cv2import numpy as npdef face_detecte(img): print(img.shape) gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) face_detector = cv2.CascadeClassifier("C:\\Users\\Des...原创 2019-06-30 18:20:03 · 403 阅读 · 0 评论 -
【OpenCV + Python】OCR识别
import cv2import numpy as npfrom PIL import Imageimport pytesseract as tessdef recognize_text(img): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.imshow("binimg", gray) ret, binnar...原创 2019-06-30 18:46:50 · 9611 阅读 · 0 评论 -
【OpenCV + Python】轮廓特性
函数cv2.drawContours()被用来绘制轮廓。第一个参数是一张图片,可以是原图或者其他。第二个参数是轮廓,也可以说是cv2.findContours()找出来的点集,一个列表。第三个参数是对轮廓(第二个参数)的索引,当需要绘制独立轮廓时很有用,若要全部绘制可设为-1。接下来的参数是轮廓的颜色和厚度。凸形形状的轮廓检测:凸形指图形内两点连线可能会在图形外,OpenCV中应用道格拉斯-普...原创 2019-06-30 21:39:32 · 602 阅读 · 1 评论 -
图像中矩的概念
数学中矩的概念:图像中的矩:统计中矩的定义是各点对某一固定点A离差幂的平均值。如果A=0,则是原点矩,A=均值,则是中心距。K是阶数。统计中引入矩是为了描述随机变量分布的形态。数学期望是一阶原点矩(表示分布重心)方差是二阶中心距(表示离散程度)偏态是三阶中心矩(表示分布偏离对称的程度)峰态是四阶中心距(描述分布的尖峰程度,例如正态分布峰态系数=0)图像的矩通常描述了该图像形...转载 2019-07-01 08:52:23 · 2156 阅读 · 1 评论 -
【OpenCV + Python】时域和频域&傅里叶变换
跟一维信号处理一样,傅里叶变化,把图像从“空域”变为“频率”。对于一幅图像,高频部分代表了图像的细节、纹理信息;低频部分代表了图像的轮廓信息。如果对一幅精细的图像使用低通滤波器,那么滤波后的结果就剩下了轮廓了。这与信号处理的基本思想是相通的。如果图像受到的噪声恰好位于某个特定的“频率”范围内,则可以通过滤波器来恢复原来的图像。时域是指时间域,频域是指频率域。时域和频域是信号的基本性质。频率(单位...转载 2019-06-27 19:19:50 · 4695 阅读 · 0 评论 -
【OpenCV + Python】SIFT(Scale-Invariant Feature Transform)介绍
import cv2img = cv2.imread('3.png')gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)sift = cv2.xfeatures2d.SIFT_create()kp = sift.detect(gray,None)img=cv2.drawKeypoints(gray,kp,img)cv2.imshow("img",img...原创 2019-06-27 17:32:52 · 253 阅读 · 0 评论 -
【OpenCV + Python】角点检测& 跟踪的图像特征
OpenCV 提供了函数:cv2.goodFeaturesToTrack()。这个函数可以帮我们使用Shi-Tomasi 方法获取图像中N 个最好的角点(如果你愿意的话,也可以通过改变参数来使用Harris 角点检测算法)。通常情况下,输入的应该是灰度图像。然后确定你想要检测到的角点目。再设置角点的质量水平,0到1 之间。它代表了角点的最低质量,低于这个数的所有角点都会被忽略。最后在设置两个角点之...原创 2019-06-27 16:52:33 · 3315 阅读 · 0 评论 -
拉普拉斯(laplacian)滤波实现图像锐化分析(负值处理方法)
先上个简单的示例,看MATLAB中拉普拉斯滤波器是如何实现的:令原图f=magic(3)f =8 1 63 5 74 9 2掩膜采用标准Laplacian掩膜:w=fspecial(‘laplacian’,0)w =0 1 01 -4 10 1 0n=imfilter(f,w,‘re...转载 2019-06-25 10:03:45 · 14994 阅读 · 1 评论 -
【OpenCV + Python】Canny 边缘检测
对平滑后的图像使用Sobel 算子计算水平方向和竖直方向的一阶导数(图像梯度)(Gx 和Gy)。根据得到的这两幅梯度图(Gx 和Gy)找到边界的梯度和方向,梯度的方向一般总是与边界垂直。梯度方向被归为四类:垂直,水平,和两个对角线。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190625103544663.) 在获得梯度的方向和大小...原创 2019-06-25 11:14:13 · 785 阅读 · 0 评论 -
【OpenCV + Python】图像金字塔
一般情况下,我们要处理是一副具有固定分辨率的图像。但是有些情况下,我们需要对同一图像的不同分辨率的子图像进行处理。比如,我们要在一幅图像中查找某个目标,比如脸,我们不知道目标在图像中的尺寸大小。这种情况下,我们需要创建创建一组图像,这些图像是具有不同分辨率的原始图像。我们把这组图像叫做图像金字塔(简单来说就是同一图像的不同分辨率的子图集合)。如果我们把最大的图像放在底部,最小的放在顶部,看起来像一...原创 2019-06-25 12:01:52 · 478 阅读 · 0 评论 -
【OpenCV + Python】轮廓
• 函数:cv2.findContours(),cv2.drawContours()轮廓查找:• 为了更加准确,要使用二值化图像。在寻找轮廓之前,要进行阈值化处理或者Canny 边界检测。• 查找轮廓的函数会修改原始图像。如果你在找到轮廓之后还想使用原始图像的话,你应该将原始图像存储到其他变量中。• 在OpenCV 中,查找轮廓就像在黑色背景中找白色物体。你应该记住,要找的物体应该是白色而...原创 2019-06-25 21:03:12 · 4016 阅读 · 0 评论 -
【OpenCV + Python】直方图
• 使用 OpenCV 或 Numpy 函数计算直方图• 使用 Opencv 或者 Matplotlib 函数绘制直方图• 将要学习的函数有: cv2.calcHist(), np.histogram()直方图统计**BINS:原创 2019-06-26 11:38:23 · 354 阅读 · 0 评论 -
【OpenCV + Python】2D直方图
HSV图示:cv2:calcHist(images; channels; mask; histSize; ranges[; hist[; accumulate]])images: 原图像(图像格式为uint8 或float32)。当传入函数时应该用中括号[] 括起来,例如:[img]。channels: 同样需要用中括号括起来,它会告诉函数我们要统计那幅图像的直方图。如果输入图像是灰...原创 2019-06-26 17:31:05 · 1201 阅读 · 1 评论 -
【OpenCV + Python】图像像素遍历&初始化图像&初始化结构体&运行时间统计
图像像素遍历&初始化图像&初始化结构体&运行时间统计等基本知识点。import cv2import numpy as npdef access_pixel(img): #像素访问 print(img.shape) height = img.shape[0] width = img.shape[1] channels = img.sh...原创 2019-07-01 23:17:12 · 3862 阅读 · 0 评论 -
【OpenCV + Python】色彩空间&通道分离与合并
HSV色彩空间: 做颜色物体跟踪非常有用。实例:import cv2import numpy as npdef find_obj(img): hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) lower_hsv = np.array([0,43,46]) upper_hsv = np.array([10, 255, 255]) ...原创 2019-07-02 00:04:36 · 539 阅读 · 0 评论 -
【OpenCV + Python】模板匹配
模板匹配是用来在一副大图中搜寻查找模版图像位置的方法。OpenCV 为我们提供了函数:cv2.matchTemplate()。和2D 卷积一样,它也是用模板图像在输入图像(大图)上滑动,并在每一个位置对模板图像和与其对应的输入图像的子区域进行比较。OpenCV 提供了几种不同的比较方法。返回的结果是一个灰度图像,每一个像素值表示了此区域与模板的匹配程度。如果输入图像的大小是(WxH),模板的大小...原创 2019-06-26 19:10:16 · 534 阅读 · 0 评论 -
【OpenCV + Python】Hough 直线变换
• 理解霍夫变换的概念• 学习如何在一张图片中检测直线• 学习函数:cv2.HoughLines(),cv2.HoughLinesP()霍夫变换在检测各种形状的的技术中非常流行,如果你要检测的形状可以用数学表达式写出,你就可以是使用霍夫变换检测它。即使要检测的形状存在一点破坏或者扭曲也可以使用。我们下面就看看如何使用霍夫变换检测直线。一条直线可以用数学表达式y = mx + c 或者 = ...原创 2019-06-26 20:34:31 · 1350 阅读 · 0 评论 -
【OpenCV + Python】Hough 圆环变换
• 学习使用霍夫变换在图像中找圆形(环)。• 学习函数:cv2.HoughCircles()。首先对图像进行canny边缘检测,对边缘中的每一个非0点,通过Sobel算法计算局部梯度。那么计算得到的梯度方向,实际上就是圆切线的法线。三条法线即可确定一个圆心,同理在累加器中对圆心通过的法线进行累加,就得到了圆环的判定。cv2.HoughCircles(image, method, dp, m...转载 2019-06-26 23:40:29 · 1902 阅读 · 0 评论 -
【OpenCV + Python】分水岭算法图像分割
任何一副灰度图像都可以被看成拓扑平面,灰度值高的区域可以被看成是山峰,灰度值低的区域可以被看成是山谷。我们向每一个山谷中灌不同颜色的水。随着水的位的升高,不同山谷的水就会相遇汇合,为了防止不同山谷的水汇合,我们需要在水汇合的地方构建起堤坝。不停的灌水,不停的构建堤坝直到所有的山峰都被水淹没。我们构建好的堤坝就是对图像的分割。这就是分水岭算法的背后哲理。但是这种方法通常都会得到过度分割的结果,这...原创 2019-06-27 00:03:55 · 6380 阅读 · 2 评论 -
【OpenCV + Python】图像特征 & Harris 角点检测
Opencv 中的函数cv2.cornerHarris() 可以用来进行角点检测。参数如下:• img - 数据类型为float32 的输入图像。• blockSize - 角点检测中要考虑的领域大小。• ksize - Sobel 求导中使用的窗口大小• k - Harris 角点检测方程中的自由参数,取值参数为[0,04,0.06]。实例:import cv2import num...原创 2019-06-27 16:31:08 · 2298 阅读 · 1 评论 -
【OpenCV + Python】图像梯度
学习以下内容:• 图像梯度,图像边界等• 使用到的函数有:cv2.Sobel(),cv2.Schar(),cv2.Laplacian() 等OpenCV 提供了三种不同的梯度滤波器,或者说高通滤波器:Sobel,Scharr 和Laplacian。我们会意义介绍他们。Sobel,Scharr 其实就是求一阶或二阶导数。Scharr 是对Sobel(使用小的卷积核求解求解梯度角度时)的优化。L...原创 2019-06-25 09:42:27 · 1019 阅读 · 0 评论