机器视觉
duganlx
业精于勤,荒于嬉;行成于思,毁于随
展开
-
相机模型与标定(学习笔记)
相机模型与标定内外参定义相机中有四个坐标系,分别是{world}、{camera}、{image}、{pixel}{world}:世界坐标系,可以任意指定xw和yw轴{camera}:相机坐标系,原点位于小孔,z轴与光轴重合,xc轴和yc轴平行投影面{image}:图像坐标系,原点位于光轴和投影面的交点,xp轴和yp轴平行投影面{pixel}:像素坐标系,从小孔向投影面方向看,投影面...原创 2020-04-07 11:48:17 · 822 阅读 · 0 评论 -
交互式前景提取GrabCut
交互式前景提取GrabCutGrabCut算法的具体实施过程在图片中定义含有(一个或多个)物体的矩形框矩形框外的区域被自动认为是“确定背景”对于用户自定义的矩形区域,可用背景中的数据来区别矩形框区域内的前景和背景区域用高斯混合模型(Gaussians Mixture Model, GMM)来对前景和背景建模。GMM会根据用户的输入学习并创建新的像素分布。对未分类的像素,根据其与已知分类...原创 2020-04-02 17:26:12 · 608 阅读 · 0 评论 -
分水岭算法(学习笔记)
分水岭算法watershed进行图像分割基本的步骤通过形态学开运算对原图像O去噪通过膨胀操作获取“确定背景B”利用距离变换函数对图像进行运算,并对其进行阈值处理,得到“确定前景F”计算未知区域UN(UN = O – B – F )利用函数connecedComponents对原图像O进行标注对函数connecedComponents的标注结果进行修正使用分水岭函数wat...原创 2020-04-02 17:03:23 · 4048 阅读 · 1 评论 -
数字图像的表示
数字图像的表示图像是由像素构成的图像分类二值图像(0/1)灰度图像(0:黑;255:白;other:灰)RGB图像(R:red,G:green,B:blue)注意: openCV顺序:BGR读取图像:retval = cv2.imread(file_name [, param])paramcv.IMREAD_UNCHANGEDcv.IMREAD_GRAYSCA...原创 2020-03-31 12:09:52 · 673 阅读 · 0 评论 -
图像基本操作
图像基本操作图像像素级处理opencv读取像素返回值 = 图像(位置参数)灰度图像:返回灰度值——p=img[88, 142]——print(p)RGB图像:返回B、G、R的值blue=img[78, 125, 0] —— print(blue)green=img[78, 125, 1] —— print(green)red=img[78, 125, 2] —— print...原创 2020-03-31 12:08:46 · 365 阅读 · 0 评论 -
色彩空间
色彩空间将图像由一种类型转换为另外一种类型cv2.cvtColor(a, cv2.COLOR_BGR2GRAY)cv2.cvtColor(a, cv2.COLOR_BGR2RGB)cv2.cvtColor(a, cv2.COLOR_GRAY2BGR)原创 2020-03-31 12:06:31 · 194 阅读 · 0 评论 -
边缘/轮廓检测
边缘/轮廓检测Canny边缘检测Canny边缘检测原理Canny边缘检测的一般步骤step1:去噪边缘检测容易受到噪声的影响。因此,在进行边缘检测前,通常需要先进行去噪通常采用高斯滤波器去除噪声step2:梯度对平滑后的图像采用sobel算子计算梯度和方向梯度的方向一般总是与边界垂直梯度方向被归为四类:垂直、水平、两个对角线step3:非极大值抑制在获得了梯...原创 2020-03-31 12:05:01 · 1739 阅读 · 0 评论 -
傅里叶变换
傅里叶变换理论基础时间域与频域相互转换来看信号使用Numpy实现傅里叶变换numpy.fft.fft2实现傅里叶变换返回一个复数数组(complex ndarray)numpy.fft.fftshift将零频率分量移到频谱中心20*np.log(np.abs(fshift))设置频谱的范围操作小记import cv2import numpy as npimp...原创 2020-03-31 12:03:25 · 786 阅读 · 0 评论 -
常见的图像变换
常见的图像变换直方图处理基本概念直方图横坐标:图像中各个像素点的灰度级纵坐标:具有该灰度级的像素个数归一化直方图横坐标:图像中各个像素点的灰度级纵坐标:出现这个灰度级的概率DIMS:使用参数的数量dims=1:灰度直方图——仅考虑灰度的情况BINS:参数子集的数目RANGE:统计灰度值的范围一般为[0, 255]最小值:0——黑色最大值:255——白色...原创 2020-03-31 12:01:14 · 1095 阅读 · 0 评论 -
滤波和卷积
滤波和卷积图像阈值处理原始图像其中 红色线为阈值二进制阈值化小于阈值的——0大于阈值的——255反二进制阈值化小于阈值的——255大于阈值的——0截断阈值化小于阈值的——本身大于阈值的——取阈值反阈值化为0小于阈值的——本身大于等于阈值的——0阈值化为0小于阈值的——0大于等于阈值的——本身实现:thresholdretval, dst = cv...原创 2020-03-31 11:58:42 · 545 阅读 · 0 评论 -
模板匹配
模板匹配模板匹配原理定义:模板匹配就是在整个图像区域发现与给定字图像匹配的最小区域条件:需要有一个模板图像T,一个待检测的图像——源图像 I工作方法:在待检测图像I上,从左到右,从上向下计算模板图像与重叠字图像的匹配度,匹配程度越大,两者相同的可能性越大。函数介绍:cv2.matchTemplate(image, templ, method, result=None, mask=Non...原创 2020-03-31 09:34:38 · 5106 阅读 · 2 评论 -
opencv通过滑动条实现渐变相关练习
需求:写一个程序,通过调节滑动条来设置阈值threshold1(低阈值)和threshold2(高阈值)进行canny检测原创 2020-03-27 12:43:28 · 271 阅读 · 1 评论 -
直方图及灰度映射
采样和量化1.采样:一维信号时间轴、二维信号空间轴的数字化采样频率、采样间隔:空间分辨率2.量化:一维信号振幅、二维信号振幅、图像明暗的数字化量化级数/量化数:幅度分辨率3.信息无损复原,采样间隔多大合适?设:采样间隔:T ,量子化数:(n为比特数)则 无损复原的采样间隔: 【Nyquist frequency:2fmax】【f为频率】例1:解 无损间隔 T &l...原创 2019-03-18 21:25:48 · 6551 阅读 · 2 评论 -
利用迭代法求阈值并实现二值化
场景设定将阈值计算的迭代法,设计为函数 level = thresh_x( f ); 并调用函数测试:读入lena.ppm,lena1.ppm, lena2.ppm, ocr.ppm等测试。分析这四个测试点不要想的太简单,图像ocr.ppm和图像lena.ppm这两个是最基本的测试点,只要你迭代法正确编写,就可以得出答案,但是lena1.ppm图像是整体偏暗,而lena2.ppm整体偏亮...原创 2019-04-30 12:00:27 · 8857 阅读 · 1 评论 -
操作小记(图像梯度处理)
图像梯度处理描述:使用sobel算子、scharr算子和Laplacian算子处理同一幅图像(核的大小相同),观察其结果的不同代码import cv2import numpy as npimport matplotlib.pyplot as pltplt.close('all')img = cv2.imread("rice.png", 1)# img = cv2.cvtCol...原创 2020-03-20 16:36:25 · 270 阅读 · 0 评论 -
操作小记(图像平滑处理)
图像平滑处理描述:使用均值滤波、中值滤波、高斯滤波、双边滤波和自定义卷积核对同一幅图像进行处理,观察其结果的不同代码import cv2import numpy as npimport matplotlib.pyplot as pltplt.close('all')img = cv2.cvtColor(cv2.imread("lena.jpg", 1), cv2.COLOR_BG...原创 2020-03-20 16:14:52 · 352 阅读 · 0 评论 -
操作小记(图像阈值处理)
图像阈值处理分别使用全局阈值处理、Otsu处理和自适应阈值处理方法处理图片代码import cv2import matplotlib.pyplot as pltimg = cv2.imread("lena.jpg", 0)showImg = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)# 全局阈值处理ret1, th1 = cv2.threshold...原创 2020-03-20 15:56:41 · 228 阅读 · 0 评论 -
操作小记(图像中不同颜色的提取)
图像中不同颜色的提取通过色彩模型的转换(BGR——HSV),分别提取出图像的不同颜色模块代码import cv2import numpy as npimport matplotlib.pyplot as pltori = cv2.imread("intro.png")img = cv2.cvtColor(ori, cv2.COLOR_BGR2RGB)hsv = cv2.cvtC...原创 2020-03-20 14:52:12 · 1319 阅读 · 1 评论 -
《机器视觉应用》笔记汇总
2.1 数字图像的表示图像是由像素构成的图像分类二值图像(0/1)灰度图像(0:黑;255:白;other:灰)RGB图像(R:red,G:green,B:blue)注意: openCV顺序:BGR读取图像:retval = cv2.imread(file_name [, param])paramcv.IMREAD_UNCHANGEDcv.IMREAD_GRA...原创 2020-03-10 19:58:29 · 386 阅读 · 0 评论