图像像素

图像识别技术——验证码识别

六月ゝ 毕业季﹏ 提交于 2019-12-09 12:51:33
[1] 一、数字图像处理基础 一幅图像可以定义为一个二维数组f(x,y),这里x,y是空间坐标,而在任何一对空间坐标(x,y)上的幅值f称为该点图像的强度或灰度。当x,y和幅值f为有限的、离散的数值时,称该图像为数字图像。 自然界呈现在人眼中的图像是连续的模拟信号,在计算机处理前,必须用图像传感器把光信号转换为表示亮度的电信号,再通过取样和量化得到一副数字图像。取样是对图像在坐标上进行离散化的过程,每一个取样点称为一个像素。量化是对图像灰度上的离散化过程。取样后将得到M*N个像素,每个像素量化得到一个灰度值L,以L表示灰度值的允许取值范围,则数字图像存储需要的比特数b可以表示为: 图像的灰度值取值范围被称为图像的动态范围。把占有灰度级全部有效段的图像称为高动态范围图像,高动态范围图像有较高的对比度。相反,地动态范围的图像看上去是冲淡了的灰暗格调。 二、图像的预处理: 主要是对图像进行灰度化、二值化、抑噪(滤波)等技术。 1、图像的灰度化 RGB系统中一个颜色值由3个分量组成,这样的图像称为彩色图像,RGB系统称为颜色空间模型。常见的颜色空间模型还有HSI、CMYK等。如果一幅图像的颜色空间是一维的(一个颜色值只有一个颜色分量),则这幅图像就是一副灰度图。在位图图像中,一般以R=G=B来显示灰度图像。 图 1 原始图片 常用的灰度化方法有以下三种: (2.1) (2.2) (2.3)

简单的验证码识别

会有一股神秘感。 提交于 2019-12-09 11:00:10
这是我尝试写的第一篇技术博客,借鉴了很多博客和教程,写出了自己的代码,代码较为冗杂而且程序十分耗时。所以本文主要提供验证码识别的一个简单的思路,代码实现的部分还望各位大佬指点。 看了好几篇验证码图片识别的博文,不难归纳出验证码识别的大概思路是 收集训练集——>图像处理——>得到图片特征值——>训练——>识别 ,其中图像处理部分又包括了 灰度化、二值化、去噪、分割 等过程。本文将尽量有详有略地讲述整个过程,以及本菜鸡在开发过程中遇到的问题。 话不多说,现在开始。 一、训练集的收集 要收集足够多的验证码,只需要写一个简单的 爬虫 ,去一些各大网站的登录系统爬取就好。本菜鸡爬的是自己学校教务系统的登录网站,所以不太方便附上代码。本菜鸡总共爬取了500张验证码作为训练集,以及200张验证码用于测试,并已将自己得到的验证码放到了github上,github地址在文末给出。 这一过程需要注意,必须要 手动输入这些验证码的答案 ,并将这些答案保存下来。而且为了提高识别的正确率,需要 检查自己输入的验证码内容是否有误 接下来我们就要对收集到的训练集进行处理。 二、图像处理 以下用到了Python3的PIL(Pillow)库: 1、干扰线的处理 让我们先来看看得到验证码图片: 我们可以看到,每一张验证码图片上,都有很多的干扰线,虽然这些干扰线不会影响到我们自己识别验证码

Python-OpenCV中的filter2D()函数

独自空忆成欢 提交于 2019-12-08 21:28:32
原文转自:https://www.cnblogs.com/lfri/p/10599420.html Python-OpenCV中的filter2D()函数 使用自定义内核对图像进行卷积。该功能将任意线性滤波器应用于图像。支持就地操作。当光圈部分位于图像外部时,该功能会根据指定的边框模式插入异常像素值。 语法 函数原型: dst=cv.filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]]) 参数: 参数 描述 src 原图像 dst 目标图像,与原图像尺寸和通过数相同 ddepth 目标图像的所需深度 kernel 卷积核(或相当于相关核),单通道浮点矩阵;如果要将不同的内核应用于不同的通道,请使用拆分将图像拆分为单独的颜色平面,然后单独处理它们。 anchor 内核的锚点,指示内核中过滤点的相对位置;锚应位于内核中;默认值(-1,-1)表示锚位于内核中心。 detal 在将它们存储在dst中之前,将可选值添加到已过滤的像素中。类似于偏置。 borderType 像素外推法,参见BorderTypes 该函数实际计算的是相关性,而不是卷积 dst ( x , y ) = ∑ 0 ≤ y ′ < kernel.rows 0 ≤ x ′ < kernel.cols , kernel ( x ′ , y ′

OpenCV Mat读取和显示图片

家住魔仙堡 提交于 2019-12-08 03:13:04
一、从文件读取图像并显示 1. 程序 在 基于VS2013搭建OpenCV开发环境 这篇文章的最后给出了一个简单的Demo,这个例子跟本篇使用的例子是一样的。打开C++ IDE并创建一个新的项目,新建一个源文件,粘贴下面的代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include <opencv2\highgui\highgui.hpp> #include <iostream> using namespace cv; using namespace std; int main( int argc, const char ** argv) { Mat img = imread( "earth.jpg" , CV_LOAD_IMAGE_UNCHANGED); if (img.empty()) { cout << "图像加载失败!" << endl; //system("pause"); return -1; } //创建一个名字为MyWindow的窗口 namedWindow( "MyWindow" , CV_WINDOW_AUTOSIZE); //在MyWindow的窗中中显示存储在img中的图片 imshow( "MyWindow" , img); //等待直到有键按下 waitKey

Python中的图像处理

有些话、适合烂在心里 提交于 2019-12-08 03:00:03
http://www.ituring.com.cn/tupubarticle/2024 第 1 章 基本的图像操作和处理 本章讲解操作和处理图像的基础知识,将通过大量示例介绍处理图像所需的 Python 工具包,并介绍用于读取图像、图像转换和缩放、计算导数、画图和保存结果等的基本工具。这些工具的使用将贯穿本书的剩余章节。 1.1 PIL:Python图像处理类库 PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功能,以及大量有用的基本图像操作,比如图像缩放、裁剪、旋转、颜色转换等。PIL 是免费的,可以从 http://www.pythonware.com/products/pil/ 下载。 利用 PIL 中的函数,我们可以从大多数图像格式的文件中读取数据,然后写入最常见的图像格式文件中。PIL 中最重要的模块为 Image 。要读取一幅图像,可以使用: from PIL import Image pil_im = Image . open ( 'empire.jpg' ) 上述代码的返回值 pil_im 是一个 PIL 图像对象。 图像的颜色转换可以使用 convert() 方法来实现。要读取一幅图像,并将其转换成灰度图像,只需要加上 convert('L') ,如下所示: pil_im = Image . open (

opencv形状识别学习总结

时间秒杀一切 提交于 2019-12-08 02:51:54
OpenCV基元检测 Primitive Detection 目录 基元的概念 基元泛指图像中有特点的单元。常说的基元有:边缘、角点、斑点、直线段、圆、等 基元检测是图像分析的基础 边缘(Edge)检测 边缘是图像中像素灰度值发生剧烈变化而不连续的结果 边缘是赋予单个像素的一种性质,与图像函数在该像素的一个邻域内的梯度特性相关 边缘幅值:梯度的幅值 边缘方向:梯度方向旋转-90度 边缘检测既是常见基元检测的基础,也是基于边界的图像分割的第一步。 边缘检测算法 OpenCV边缘检测:Sobel、拉普拉斯算子 OpenCV边缘检测:坎尼算子算子 斑点(Blob)检测 斑点:与周围灰度有一定差别的区域 面部的雀斑 卫星照片中的一棵数 钢材X光照片中的杂质或气泡 医学图像中的细微肿块 斑点检测算法 OpenCV LoG算子:SIFT算法 OpenCV Blob特征检测算子 角点(Conner)检测 角点:物体的拐角、交叉点、 曲线上曲率最大的点等 角点的邻域是图像中信息比较丰富的区域 角点检测方法 基于边缘的方法:在小邻域内有两个不同的主边缘方向,实际图像中,孤立点、线段端点也会有类似特 性。缺点是:1)需要先提取边缘并编码,计算量大;2)局部变化对稳定性影响大。 基于灰度的方法:计算点的曲率和梯度,目前的主流 角点检测算法: OpenCV 角点检测:Harris算子 哈夫变换

像素纵横比基础知识(正方形像素,非正方形像素)

冷暖自知 提交于 2019-12-08 02:47:27
像素纵横比是指像素的宽 (x) 与高 (y) 之比。正方形像素的比例为 1:1,但非正方形(矩形)像素的高和宽不相同。这一概念类似于帧纵横比,后者是图像的整个宽度与高度之比。通常,电视像素是矩形,计算机像素是正方形。因此,在计算机显示器上看起来合适的图像在电视屏幕上会变形,显示球形图像时尤其明显。在 Microsoft Expression Encoder 中,可以设置一些选项,以便正确显示非正方形像素媒体,以及输出非正方形像素内容。 请注意,图像的帧纵横比不一定限定像素纵横比。帧纵横比为 16:9 的宽屏图像可以包含正方形或非正方形像素。例如,帧纵横比为 720x486 的数字视频通常被视为宽屏视频,且使用矩形像素创建。但是,帧纵横比相同的图像实际上却可能是在图像编辑程序中创建的,因此是在正方形像素环境中创建的。 像素纵横比 如果使用像素看似正方形但却非正方形的像素对视频源编码,则输出将变形,如下图所示。 使用矩形像素创建的圆(左)和在计算机显示器上显示的同一圆(右) 如果您知道图像源的帧纵横比 (Ix:Iy) 和确切的高和宽,则可以使用以下公式确定像素纵横比的 x 值和 y 值: PixelAspectRatioX / PixelAspectRatioY = (Ix * height) / (Iy * width) 例如,如果图像为 720 x 360 像素,帧纵横比为宽屏

深度学习暑期学校(加拿大、蒙特利尔,2016.8.1-7)

半世苍凉 提交于 2019-12-08 00:21:00
learning to see.pdf @lutingting 2016-11-04 16:15 字数 10899 阅读 4087 SIFT特征提取及匹配 数字图像处理 图像特征提取 SIFT特征提取及匹配 1.SIFT(Scale-invariant feature transform)算子的核心思想 2.什么是尺度空间呢? 2.1 一篇百度文库的文章关于尺度空间的分析 例子1 例子2 现实生活中的例子 2.2 SIFT中的尺度空间的概念 3.SIFT特征提取 3.1 尺度空间极值检测 3.1.1 尺度空间的建立(高斯金字塔的建立) 3.1.2 图像差分高斯金字塔(DoG)的建立 3.1.3 尺度空间中特征点的检测(DoG中极值点的检测) 3.2 关键点位置及尺度确定 3.3 关键点方向确定 3.4 特征向量生成 4.SIFT特征的匹配 5.下面是一些参考程序 5.1 5.2 1.SIFT(Scale-invariant feature transform)算子的核心思想 利用不同尺度的高斯核函数对图像进行平滑,即构造图像的尺度空间 比较不同尺度平滑后的图像差别,在某局部范围内,差别最大或者差别最小的像素点就是特征明显的点 由于SIFT特征的检测方式,使得它具有: 尺度不变性:在尺度空间内进行的特征点检测 2.什么是尺度空间呢? 2.1 一篇百度文库的文章关于尺度空间的分析

前端适配

泪湿孤枕 提交于 2019-12-07 23:48:29
移动端开发中,关于适配问题的一点总结(一) 转自:http://www.jianshu.com/p/3a5063028706?nomobile=yes 我们第一次接触移动web的时候,直观印象样应该是:屏幕比pc小很多,所以对pc端设计的界面,不一定(或者说不完全)能很好的适用到移动端。 下面这段代码,做过移动端项目的同学一定不会陌生。 假设你已经见过上面的代码,并有所应用,对响应式设计如何工作有大概的了解,但不一定清楚一些细节。最近在做一个移动端的项目,要求做到精确还原设计稿,像素级。现在我把自己的一些心得分享出来,给大家参考。下面我就关于 像素,视口,分辨率,meta视口 相关的内容展开叙述。 要实现像素级还原,首先我们要搞清楚什么是像素。 #像素 像素(pixel) 是网页布局的基础,web开发者,包括设计师,凭直觉去使用它。我们好像对它很熟悉,但依然还有很多关于这个基础构建模块的东西需要我们去学习。例如,一个像素到底是什么。 乍一看,这似乎是个非常简单的问题,一个像素就是计算机能够显示一种 特定颜色 的最小区域。屏幕上像素越多,你就看到的越多。或者说,同样尺寸的设备,像素越多,效果就越细腻。 对于开发者来说,给一个元素设置 width : 200px ;会发生什么事情呢? //废话 lol ,就是给它设置宽度200px 呗,stupid question..

前端移动端适配总结

不想你离开。 提交于 2019-12-07 23:45:24
meta标签到底做了什么事情 做过移动端适配的小伙伴一定有遇到过这行代码: <meta name="viewport" content="width=device-width, initial-scale=1.0"> 但是,很多小伙伴只是感性的认识:噢,我加了这行代码,然后页面的宽度就会跟我的设备宽度一致。然而,这种理解是很片面的。那么,这句话的本质到底是什么呢? 不急,我们先往下面看,这里先留个悬念。 几个专有名词和单位 这里,我们先来辨析一下在适配的时候经常会遇到的一些名词、数值单位。 首先,先来看一下 物理像素 。 以iphone6为例,可知道: 分辨率 :1334pt x 750pt 指的是屏幕上垂直有1334个物理像素,水平有750个物理像素。 屏幕尺寸 :4.7in 注意英寸是长度单位,不是面积单位。4.7英寸指的是屏幕对角线的长度,1英寸等于2.54cm。 屏幕像素密度 :326ppi 指的是每英寸屏幕所拥有的像素数,在显示器中,dpi=ppi。dpi强调的是每英寸多少点。同时, 屏幕像素密度 = 分辨率 / 屏幕尺寸 接着,我们来看一下其他的单位。 设备独立像素 :设备独立像素,不同于设备像素(物理像素),它是虚拟化的。比如说css像素,我们常说的10px其实指的就是它。需要注意的是, 物理像素 开发者是无法获取的,它是自然存在的一种东西,该是多少就是多少。