边缘提取

iOS滤镜系列-滤镜开发概览

≡放荡痞女 提交于 2020-01-12 03:55:40
概述 滤镜最早的出现应该是应用在相机镜头前实现自然光过滤和调色的镜片,然而在软件开发中更多的指的是软件滤镜,是对镜头滤镜的模拟实现。当然这种方式更加方便快捷,缺点自然就是无法还原拍摄时的真实场景,例如无法实现偏光镜和紫外线滤色镜的效果。今天简单介绍一下iOS滤镜开发中的正确姿势,让刚刚接触滤镜开发的朋友少走弯路。 在iOS开发中常见的滤镜开发方式大概包括:CIFilter、GPUImage、OpenCV等。 CoreImage CIFilter CIFilter存在于CoreImage框架中,它基于OpenGL着色器来处理图像(最新的已经基于Metal实现),优点当然是快,因为它可以充分利用GPU加速来处理图像渲染,同时它自身支持滤镜链,多个滤镜同时使用时迅速高效。 CIFilter目前已经支持21个分类(如下代码) 196种滤镜 : public let kCICategoryDistortionEffect: String public let kCICategoryGeometryAdjustment: String public let kCICategoryCompositeOperation: String public let kCICategoryHalftoneEffect: String public let kCICategoryColorAdjustment

图像处理与分析

天大地大妈咪最大 提交于 2020-01-10 03:25:57
基本概念 图像的采样和量化 光照本身是连续的、但是转换成数字形式必然是不连续的 在坐标值(空间)上的数字化即为采样,对幅值的数字化即为量化 量化——每一像素值只能用有限位比特表示,故只能表现有限的精度 可以看作是笛卡儿积 Z 2 Z^2 Z 2 中的一对元素,映射到灰度值集合上的一个映射。 空间分辨率:如dpi每英寸点数;灰度分辨率直接用比特表示 图像插值 最简单的是最近邻方法,其次是双线性,最后是双三次 双线性:可以看作是在一个方格内拟合 f ( x , y ) = a + b x + c y + d x y f(x,y)=a+bx+cy+dxy f ( x , y ) = a + b x + c y + d x y ,比较好的特点是无论固定x还是固定y,关于另一个变量都是线性的。 像素间关系 4领域、8领域、m邻接(m邻接可以消除8邻接的二义性 连通性、区域、边界 距离的度量:非负、自反、交换、三角 常用计算 矩阵与阵列计算 灰度算术 集合和逻辑操作 空间操作(几何空间变换与图像配准 一般来说反向映射比前向映射要好,可以配合插值算法决定每个像素的输出值 把图像当作一个向量,然后乘以矩阵 图像变到某个变换域去(通常通过某个正交变换核 彩色图像 光的三原色为RGB 颜料的三原色为CMYK(青、品红、黄、黑 HSI 色调、饱和度、强度 图像增强 灰度变换 略 直方图处理 直方图

永兴的笔记-OpenCV-6图像梯度和边缘检测

。_饼干妹妹 提交于 2020-01-01 15:15:48
一、什么是图像梯度: 图像的梯度就是描述图像中灰度的变化,微积分就是求函数的变化率,即导数(梯度)。图像的梯度相当于2个相邻像素之间的差值。 图像梯度可以把图像看成二维离散函数,图像梯度其实就是这个二维离散函数的求导: 在x方向,选取某个像素,假设其像素值是100,沿x方向的相邻像素分别是90,90,90,则根据上面的计算其x方向梯度分别是10,0,0。这里只取变化率的绝对值,表明变化的大小即可。 灰度值100和90之间亮度相差10,并不是很明显,与一大群90的连续灰度值在一起,轮廓必然是模糊的。我们注意到,如果相邻像素灰度值有变化,那么梯度就有值,如果相邻像素灰度值没有变化,那么梯度就为0。如果我们把梯度值与对应的像素相加,那么灰度值没有变化的,像素值不变,而有梯度值的,灰度值变大了,那么图像的边缘更加明显。 二、OpenCV中的图像梯度应用(检测边缘): OpenCV提供三种类型的梯度滤波器或高通滤波器,Sobel,Scharr和Laplacian. 高通滤波器(英语:High-pass filter)是容许高频信号通过、但减弱(或减少)频率低于截止频率信号通过的滤波器。对于不同滤波器而言,每个频率的信号的减弱程度不同。它有时被称为低频剪切滤波器; 1、Sober 算子 Sober 算子是离散微分算子(discrete differentiation operator)

halcon边缘提取和缺陷检测常用方法;shape_trans算子的说明

爱⌒轻易说出口 提交于 2019-12-25 03:45:39
一、边缘提取 1、设置ROI兴趣区域 2、快速二值化,并连接相邻区域。 这样做的目的是进一步减少目标区域,通过二值化将目标区域大概轮廓提取出来 3、提取最接近目标区域的轮廓 常用函数有boundary,gen_contour_region_xld boundary (获取一个区域的边界) Region (input_object) Regions for which the boundary is to be computed. 区域 RegionBorder (output_object) Resulting boundaries. 输出的边界 BoundaryType (input_control) Boundary type.边界类型 Default value: 'inner' List of values: 'inner', 'inner_filled', 'outer' linner 内边界。 inner_filled 内边界上的孔。 outer 外边界。 gen_contour_region_xld (生成区域的XLD轮廓) 4、根据自需求提取需要的初步轮廓 5、将初步提取的初步轮廓进行膨胀操作 6、将膨胀后的区域和原图进行减操作(在这步之前有可能需要对原图进行高斯滤波)。这样就能得到只有边缘的真实图像 7、用canny或其他算子(根据需要)提取亚像素轮廓

OpenCV使用边缘提取、腐蚀、轮廓进行车牌定位

ぃ、小莉子 提交于 2019-12-20 07:20:50
http://blog.csdn.net/superdont/article/details/24935383 OpenCV使用边缘提取、腐蚀、轮廓进行车牌定位 2014-05-03 21:38 6786人阅读 评论 (2) 收藏 举报 分类: opencv(24) 版权声明:本文为博主原创文章,未经博主允许不得转载。 采用OpenCV249利用边缘检测、轮廓检测、腐蚀实现的车牌定位,具体为: [cpp] view plain copy Mat srcImage=imread( "image/000.jpg"); //imshow("a",srcImage); int i,j; int cPointR,cPointG,cPointB,cPoint; //currentPoint; Mat resizeImage; resize(srcImage,resizeImage,Size(400,300)); Mat grayImage; cvtColor(resizeImage,grayImage, CV_BGR2GRAY); Mat medianImage; medianBlur(grayImage,medianImage,3); //最后一个参数需要为奇数 Mat sobelImage; //参数为:源图像,结果图像,图像深度,x方向阶数,y方向阶数,核的大小,尺度因子,增加的值

车牌校正中水平方向的边缘提取

一笑奈何 提交于 2019-12-20 04:59:03
1.下面是一个水平角度调试比较好的设置 一下是主要几个参数: cvSobel(img,imgS,0,1,3); cvErode(imgTh,imgTh,KernelVertical,1); 经过试验验证,其实用scharr滤波器比sobel滤波器更好,scharr滤波器只是把最后一个svSobel参数改为-1 cvSobel(img,imgS,0,1,-1); scharr滤波器的滤波系数和sobel的滤波系数有差异, 书上说Scharr滤波器同sobel滤波器一样快,但是准确率更高。 使用扩展 Sobel 算子计算一阶、二阶、三阶或混合图像差分 void cvSobel( const CvArr* src, CvArr* dst, int xorder, int yorder, int aperture_size=3 ); src输入图像.dst输出图像.xorderx 方向上的差分阶数yordery 方向上的差分阶数aperture_size扩展 Sobel 核的大小,必须是 1, 3, 5 或 7。 除了尺寸为 1, 其它情况下, aperture_size ×aperture_size 可分离内核将用来计算差分。对 aperture_size=1的情况, 使用 3x1 或 1x3 内核 (不进行高斯平滑操作)。这里有一个特殊变量 CV_SCHARR (=-1),对应 3x3

EC-Net: a Edge-aware Point set Consolidation Network

风流意气都作罢 提交于 2019-12-18 06:51:02
Brief Introduction 关于EC-Net 网络的实现,以及相关技术,解决的问题,以及为解决的问题 论文链接: Lequan Yu EC-Net: an Edge-aware ECCV 2018 paper 视频链接: GAMES Webinar 120期李贤芝 (关于 PU-Net ,EC-Net 和 PU-GAN) Detail 这个EC-Net是在基础上提出来的改进网络,目的是为了解决PU-Net在规则物体点云上采样上无法检测边缘,导致物体棱角不平滑,呈现出不规则起伏的缺点。因此,李贤芝她们在这个网络的基础上,加上了一些额外的部分,并且在训练数据上进行了改进,使得网络不仅具有上采样的能力,还可以在这个过程中将规则物体表面上缺失的边缘点进行补充,使得在三维重建的时候可以得到更好的边缘效果,以及更好的表面。 Point Consolidation 是一个对于增强3D重建最终输出的质量来说非常重要的一个过程,可以提高点云表面点集包含的信息量,也就是说,通过point conoslidation我们可以得到一个更加rich的表面,这样有助于我们生成一个具有更多sharp features的重建结果。 EC-Net是在PU-Net的基础上进行的改进,在网络设计上类似,但在特征提取方面都是采用和PU-Net相同的方式来进行提取的,不同的地方在于: 训练数据的准备

HOG:从理论到OpenCV实践

孤人 提交于 2019-12-16 02:57:01
OpenCV HOGDescriptor 参数图解 原文链接 一、理论 1、 HOG特征描述子的定义 : locally normalised histogram of gradient orientation in dense overlapping grids,即局部归一化的梯度方向直方图, 是一种对图像局部重叠区域的密集型描述符, 它通过计算局部区域的梯度方向直方图来构成特征。 2、本质: Histogram of Oriented Gradient descriptors provide a dense overlapping description of image regions ,即 统计图像局部区域的梯度方向信息来作为该局部图像区域的表征。 3、OpenCV中的HOG算法来源: Histograms of Oriented Gradients for Human Detection , CVPR 2005。详细的算法可以参考这个文章。这里是 英文 和 中文 的介绍。 4、 检测窗口Win、块Block、单元格Cell的基本信息 (1)大小: A、检测窗口:WinSize=128*64像素,在图像中滑动的步长是8像素(水平和垂直都是) B、块:BlockSize=16*16像素,在检测窗口中滑动的步长是8像素(水平和垂直都是) C、单元格:CellSize=8*8像素

Halcon实现边缘提取

蹲街弑〆低调 提交于 2019-12-07 16:04:07
一、边缘提取 1、设置ROI兴趣区域 2、快速二值化,并连接相邻区域。 这样做的目的是进一步减少目标区域,通过二值化将目标区域大概轮廓提取出来 3、提取最接近目标区域的轮廓 常用函数有boundary,gen_contour_region_xld 4、根据自己的需求提取需要的初步轮廓 5、将初步提取的初步轮廓进行膨胀操作 6、将膨胀后的区域和原图进行减操作(在这步之前有可能需要对原图进行高斯滤波)。这样就能得到只 有边缘的真实图像 7、用canny或其他算子(根据需要)提取亚像素轮廓,一般使用edges_sub_pix函数 8、处理和计算 得到真实的边缘XLD后你可能需要进一步处理得到你想要的线、弧等。 你可能用到的函数segment_contours_xld(分割) union_collinear_contours_xld(联合相邻或相同 角度直线)select_contours_xld(提取想要的轮廓) union_cocircular_contours_xld(联合相同圆) 等等 得到轮廓后如果你不知道怎么处理后得到你想要的东西(线、弧、圆、角、矩形)你都可以将轮廓转化 为点,然后用点集合来拟合任何你想要的东西。 二、BLOB分析检测(前面一篇有详细讲解,本骗只讲思路) (1)应用ROI,可以使Blob分析加速。 (2)匹配ROI区域或图像

SketchyGAN: Towards Diverse and Realistic Sketch to Image Synthesis - 1 - 论文学习

梦想的初衷 提交于 2019-12-06 00:07:20
https://github.com/wchen342/SketchyGAN Abstract 从人体草图中合成逼真的图像是计算机图形学和视觉学中的一个具有挑战性的课题。现有的方法要么需要精确的边缘图,要么依赖于检索现有的照片。在这项工作中,我们提出了一种新颖的生成对抗网络(GAN)方法,它综合了包括摩托车、马和沙发在内的50个类别的可信图像。我们展示了一种完全自动化的草图数据扩充技术,并说明扩充的数据对我们的任务是有帮助的。提出了一种既适用于生成器又适用于判别器的新型网络结构块,通过注入多尺度的输入图像来改善信息流动。与最先进的图像转换方法相比,我们的方法生成更真实的图像,并获得更高的Inception分数 1. Introduction 我们怎样才能快速地想象出一个场景或物体?最简单的方法之一是画一个草图。与摄影相比,草图不需要任何捕捉设备,也不局限于对现实的忠实采样。然而,草图往往是简单和不完美的,因此从新手草图中合成逼真的图像是具有挑战性的。基于草图的图像合成可以使非技术人员在没有显著的艺术技能或图像合成领域的专业知识的情况下创建现实的图像。这通常是困难的,因为草图是稀疏的,而且新手的人类艺术家不能画出精确反映物体边界的草图。由草图合成的真实图像应该尽可能地尊重艺术家的意图,但为了保留在自然的图像流形上,可能需要偏离粗糙的笔画。在过去的30年里