图像像素

关于移动端开发的一些总结

南楼画角 提交于 2020-03-26 13:25:45
1、 piexl 像素知识 640 * 1136的图片能不能在iphone5上完全展示? iphone5分辨率640*1136 逻辑像素与物理像素的关系 px逻辑像素:浏览器使用的抽象单位 dp,pt物理像素:设备无关像素 dpr:设备像素缩放比 计算公式:1px = (dpr)^2 * dp iphone5的 dpr = 2; DPI:打印机每英寸可以喷的墨汁点(印刷行业) PPI:屏幕每英寸的像素数量,即单位英寸内的像素密度 目前,在计算机显示设备参数描述上,二者意思一致 计算公式:以iphone5为例:ppi = √(1136^2 + 640^2)/4 = 326ppi(视网膜retina屏) 注意:单位为硬件像素(物理像素),非px PPI越高,像素数越高,图像越清晰。但可视度月低(小),系统默认缩放比越大。 retina屏(高清屏):dpr都是>=2。 2、 viewport 手机浏览器默认为我们做了两件事情: ① 页面渲染在一个980px(ios)的viewport ② 缩放 为什么要有viewport? 一个300多像素的屏幕,放一个1000多像素的页面,会混乱,所以要先虚拟一个980像素的页面,然后进行缩放。 度量|视口 visual viewport ==== 窗口缩放scale 布局 layout viewport 设计移动web

GPU图形绘制管线

萝らか妹 提交于 2020-03-26 07:14:59
摘抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人”第二章。 图形绘制管线描述GPU渲染流程,即“给定视点、三维物体、光源、照明模式,和纹理等元素,如何绘制一幅二维图像”。本章内容涉及GPU的基本流程和实时绘制技术的根本原理,在这些知识点之上才能延伸发展出基于GPU的各项技术,所以本章的重要性怎么说都不为过。欲登高而穷目,勿筑台于浮沙! 本章首先讨论整个绘制管线(不仅仅是GPU绘制)所包含的不同阶段,然后对每个阶段进行独立阐述,最后讲解GPU上各类缓冲器的相关知识点。 在《实时计算机图形学》一书中,将图形绘制管线分为三个主要阶段:应用程序阶段、几何阶段、光栅阶段。 应用程序阶段,使用高级编程语言(C、C++、JAVA等)进行开发,主要和CPU、内存打交道,诸如碰撞检测、场景图建立、空间八叉树更新、视锥裁剪等经典算法都在此阶段执行。在该阶段的末端,几何体数据(顶点坐标、法向量、纹理坐标、纹理等)通过数据总线传送到图形硬件(时间瓶颈);数据总线是一个可以共享的通道,用于在多个设备之间传送数据;端口是在两个设备之间传送数据的通道;带宽用来描述端口或者总线上的吞吐量,可以用每秒字节(b/s)来度量,数据总线和端口(如加速图形端口,Accelerated Graphic Port,AGP

WebGL 纹理颜色原理

巧了我就是萌 提交于 2020-03-26 06:03:12
本文由云+社区发表 作者:ivweb qcyhust 导语 WebGL绘制图像时,往着色器中传入颜色信息就可以给图形绘制出相应的颜色,现在已经知道顶点着色器和片段着色器一起决定着向颜色缓冲区写入颜色信息并最终呈现出来,那么这个过程是什么样,如果图形的颜色需要用现有图片来渲染那么又该如何操作? 颜色缓冲区 在绘制开始前,经常见到调用函数清空画布的代码gl.clear(gl.COLOR_BUFFER_BIT),清空画布的绘图区实际上就是用之前定义好的背景颜色将颜色缓冲的的颜色清除。颜色缓冲区中存放着需要显示到画布上的像素的颜色数据,它属于帧缓存的一部分,与深度缓存、模板缓存等一起决定着最终画布上图像的显示信息。 可以将颜色缓存区看成图像颜色存储器,在缓存区中以RGB或RGBA的格式存储着画布上每一个像素的颜色信息,各个像素点组合起来就构成了颜色缓存的矩形阵列。这个定义看起来与图片存储器是很相似的,颜色缓存为RGB或是RGBA每一个通道分配存放位数,其中RGB就是颜色数据,A表示alpha也就是该像素的透明度信息,颜色占用的位数值就是颜色深度,比如颜色深度为24位,表示每一个像素24位,一般24位的分配方案就是红色、蓝色、绿色各占8位,如果需要透明效果的话,可以采用32位颜色深度为alpha通道分配8位。 这里可以总结得出,画布上各个像素点呈现的颜色就是存放在颜色缓冲区的颜色信息所决定的

Android中文API(136) —— Bitmap

烈酒焚心 提交于 2020-03-26 05:14:23
前言   本章内容android.graphics.Bitmap章节,译为"位图",版本为Android 4.0 r1,翻译来自:"StreamH",欢迎访问他的博客:" http://blog.csdn.net/qs_csu ",再次感谢"StreamH" !期待你一起参与翻译Android的相关资料,联系我over140@gmail.com。 声明   欢迎转载,但请保留文章原始出处:)     博客园: http://www.cnblogs.com/     Android中文翻译组: http://androidbox.sinaapp.com/ Bitmap 译者署名: StreamH 译者链接: http://blog.csdn.net/qs_csu 版本: Android 4.0 r1 结构 继承关系 public class Bitmap extends Object implements Parcelable java.lang.Object android.graphics.Bitmap 内部类    enum Bitmap.CompressFormat    详细说明位图的压缩格式    enum Bitmap.Config    位图的结构 常量 Int DENSITY_NONE 标志着该位图是以未知的像素密度创建的 参见 getDensity()

自己来实现一个简易的OCR

五迷三道 提交于 2020-03-24 06:36:17
来做个简易的字符识别 ,既然是简易的 那么我们就不能用任何的第三方库 。啥谷歌的 tesseract-ocr, opencv 之类的 那些玩意是叼 至少图像处理 机器视觉这类课题对我这种高中没毕业的人来说是一座高山 对于大多数程序员都应该算难度不小吧。 但是我们这里 这么简陋的功能 还用那些玩意 作为一个程序员的自我修养 你还玩个球。管他代码写得咋个low 效率咋个低 被高手嗤之以鼻也好 其实那些高手也就那样 把你的代码走起来 ,这是一件很好玩的事情。 以前一直觉着这玩意挺神奇 什么OCR optical character Recognition 高大上,这三个单词一直记不住 。好了正题: 二值化和对象分割 拿到图像 首先二值化 就是用一种无脑的方式把浅色的背景去掉变成纯白色,书上都是说二值化 这样说感觉是要叼一些 专业一些 那么我也这样说了。图像上的像素数据都是一堆无意义的离散的数据。那么第一步就是要把这些离散的像素数据组织成有逻辑的 数据 也就是对象分割了,一块整的图片 把他分割成一个个的字符 小图片。 网上看到别人用投影直方图的方式 这样做可以很容易 分割一行排的字符。 但是我原来还想做一个简易的“数细胞”的算法 干脆就一并实现了吧 正好这里也可以用得上 ,数细胞明白否 就是一副白纸上 一坨 一坨的 每一坨的形状都不一样 我们要用程序判断它总共有多少坨 只要是连在一起

使用钢笔绘制线条和形状

痴心易碎 提交于 2020-03-23 17:58:19
一。如何:使用钢笔绘制线条 若要绘制线条,需要 Graphics 对象和 Pen 对象。 Graphics 对象提供 DrawLine 方法,而 Pen 对象则存储线条的特征,如颜色和宽度。 示例 下面的示例绘制一条从 (20, 10) 到 (300, 100) 的直线。第一条语句使用 Pen 类构造函数创建黑色钢笔。传递给 Pen 构造函数的参数之一是用 FromArgb 方法创建的 Color 对象。用于创建 Color 对象的值(255、0、0、0)对应于颜色的 alpha、红色、绿色和蓝色分量。这些值定义不透明的黑色钢笔。 Pen pen = new Pen(Color.FromArgb(255, 0, 0, 0)); e.Graphics.DrawLine(pen, 20, 10, 300, 100); 编译代码前面的示例是为使用 Windows 窗体而设计的,它需要 Paint 事件处理程序的参数 PaintEventArgs e。请参见参考Pen概念GDI+ 中的笔、直线和矩形其他资源使用钢笔绘制线条和形状 二。如何:使用钢笔绘制矩形 若要绘制矩形,需要 Graphics 对象和 Pen 对象。Graphics 对象提供 DrawLine 方法,而 Pen 对象则存储线条的特征,如颜色和宽度。示例 下面的示例绘制一个左上角位于 (10, 10) 的矩形。该矩形的宽度为

[翻译]XNA 3.0 Game Programming Recipes之thirteen

久未见 提交于 2020-03-22 10:44:45
PS:自己翻译的,转载请著明出处 3-3 使用图层渲染透明图片 问题 在大多数情况下,您会希望在彼此之间上部多绘制些图片。现在的主要问题是,所有的图片都是完整的矩形,所以他们将覆盖早些时候提供的图片。您还需要确认您提供的背景的第一副图片。 解决方案 使用 XNA ,你可以指定层,或者图象即将绘制的深度。当你调用 SpriteBatch.Draw 方法, XNA 可以帮你排列图象,所以图象上最深的就是第一个被绘制。 大多树图片的格式都支持透明。意思是说除了红,绿,蓝颜色的信息,他们还带有 alpha 信息。 当透明度已启用, 透明区域的图像将显示下面的图片。 在 XNA ,你可以指定一个颜色,可以作为透明处理。这对图片非常有用,没有任何透明度信息编码。 它是如何工作的 简单透明 SpriteBatch 类具有处理图象的能力和透明的信息。成功运用于很多情况,如当你绘制绿草地的2D图象时,你想绘制一块岩石到它的上面。这样说,岩石的形象是石头在其中心一个简单的白色形象。如果您绘制岩石图在草的上面,你也看到岩石的白色背景图像上有草! 所以,你需要设置图象的背景的透明度。这种方法,当你绘制石头在草地的上面时,岩石图象的透明区域将得到草下面的颜色。请注意,图像的每个像素需要指定是否该像素应该是否透明。这一额外的信息被称为 Alpha 值是存储旁边的红色,绿色和蓝色通道的 alpha 通道。

opengl常用函数

倾然丶 夕夏残阳落幕 提交于 2020-03-19 04:54:20
glAccum 操作累加缓冲区 glAddSwapHintRectWIN 定义一组被 SwapBuffers拷贝的三角形 glAlphaFunc允许设置alpha检测功能 glAreTexturesResident 决定特定的纹理对象是否常驻在纹理内存中 glArrayElement 定义一个被用于顶点渲染的数组成分 glBegin,glEnd 定义一个或一组原始的顶点 glBindTexture 允许建立一个绑定到目标纹理的有名称的纹理 glBitmap 绘制一个位图 glBlendFunc 特殊的像素算法 glCallList 执行一个显示列表 glCallLists 执行一列显示列表 glClear 用当前值清除缓冲区 GlClearAccum 为累加缓冲区指定用于清除的值 glClearColor 为色彩缓冲区指定用于清除的值 glClearDepth 为深度缓冲区指定用于清除的值 glClearStencil 为模板缓冲区指定用于清除的值 glClipPlane 定义被裁剪的一个平面几何体 glColor 设置当前色彩 glColorMask 允许或不允许写色彩组件帧缓冲区 glColorMaterial 使一个材质色彩指向当前的色彩 glColorPointer 定义一列色彩 glColorTableEXT 定义目的一个调色板纹理的调色板的格式和尺寸

工业相机的术语相关

谁都会走 提交于 2020-03-17 11:51:42
一.工业相机术语 像素 (pixel):图像上的最小组成单元。图像由小方格即像素组成的,这些小方块都有一个明确的位置和被分配的色彩数值,小方格颜色和位置就决定该图像所呈现出来的样子。像素视为整个图像中不可分割的单位。 分辨率 (resolution):用与衡量相机对物像中明暗细节的分辨能力。相机分辨率是指相机每次采集的像素点数,对于数字相机一般是直接与CCD或CMOS传感器的像元数对应的,如1280*1024(130W),1600*1200(200W),2048*1536(300W)等,对于模拟相机则取决于视频格式,PAL制为768*576,NTSC值为640*480. 像元尺寸 :传感器芯片上的最小组成单元,单位是um,常见的是1.67,2.2,3.45,4.8,5.5,7.4um等。像元尺寸直接影响感光面积大小,影响图像质量,在分辨率足够的情况下,像元越大越好。 芯片尺寸 :相机的靶面尺寸,以芯片对角线16mm定义为1英寸,常见的有1/4,1/3,1/2.3,1/2.5,1/2,1/1.8等。通常芯片尺寸与分辨率是对应的,如30W一般小于1/3,像元尺寸直接影响传感器尺寸,如500W相机,2.2um像元为1/2.5,3.45um为2/3. 精度 :单个像素所代表的实际视野(mm/pixel),数值约小精度越高。精度=视野/分辨率。如,视野50mm,对应的分辨率2448

图像矫正-基于opencv实现

只谈情不闲聊 提交于 2020-03-16 02:26:33
一、引言 上篇文章中四种方法对图像进行倾角矫正都非常有效。Hough变换和Radon相似,其抗干扰能力比较强,但是运算量大,程序执行慢,其改进方法为:我们可以不对整幅图像进行操作,可以在图像中选取一块(必须含有一条与倾角有关的直线)进行操作,从而减小运算量。这里Hough变换法和Radon变换法进行倾角检测的最大精度为1度。它们的优点是可以计算有断点的直线的倾角。最小二乘法的优点就是运算量小,但是其抗干扰能力比较差,容易受到噪声的影响。两点法虽然理论简单,但由于采样点比较多而且这些点服从随机分布,计算均值后能有效抑制干扰,实验表明其矫正效果很好,最大精度可以明显小于1度,而且计算量也很小。最小二乘法和两点法不能计算有断点的直线倾角,这是这两种方法的缺点。 二、基于opencv的图像矫正实现 对图像进行旋转矫正,关键是获取旋转角度是多少,在获取旋转角度后,可以用仿射变换对图像进行矫正。本文是基于opencv的houghline变换实现的图像旋转角度获取,具体代码为: _grayimage = cv2.cvtColor(self._srcimage,cv2.COLOR_RGB2GRAY) _cannyimage = cv2.Canny(_grayimage,CANNY_LOW_THRESHOLD, CANNY_HIGH_THRESHOLD, apertureSize=3) lines