图像像素

针孔的相机成像模型

不羁的心 提交于 2020-01-13 13:55:57
为了比较清楚得说明这件事,笔者力求以最简洁的方式进行介绍, part1: 4个坐标系 :       1、世界坐标系(Xw、Yw、Zw)       2、相机坐标系(Xc、Yc、Zc)       3、像平面坐标系(X、Y)       4、像素平面坐标系(u、v) 3个坐标变换关系:       1、世界坐标系(Xw、Yw、Zw)->相机坐标系(Xc、Yc、Zc)       2、相机坐标系(Xc、Yc、Zc)->像平面坐标系(X、Y)       3、像平面坐标系(X、Y)->像素平面坐标系(u、v) part2: 以下的内容是对上述的7个概念做详细说明: 4个坐标系 : 世界坐标系 :即自然坐标系 相机坐标系 :以相机的的光心为原点,Z轴指向相机前方,x向右,y向下 像平面坐标系 :物理成像平面,在距相机光心一倍焦距的平面上(凸透镜成像实验的蜡烛成大小相等倒立的平面) 像素平面坐标系 :在距相机光心一个焦距的平面上,原点位于图像的左上角,u轴向右与x轴平行,v轴向下与y轴平行(在凸透镜成像实验的蜡烛成大小相等倒立的距离上放一个屏,相机中的这个位置是一个感光元件) 3个坐标变换关系 : (Xw、Yw、Zw)->(Xc、Yc、Zc) :世界坐标系向相机坐标系转换 这俩个坐标系之间的关系我们可以通过旋转矩阵R和平移矩阵t来得到: (Xc、Yc、Zc)->(X、Y)

针孔相机模型和变形

北战南征 提交于 2020-01-13 05:46:10
http://wiki.opencv.org.cn/index.php/Cv%E7%85%A7%E7%9B%B8%E6%9C%BA%E5%AE%9A%E6%A0%87%E5%92%8C%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA http://oliver.zheng.blog.163.com/blog/static/14241159520133601847831 针孔相机模型和变形 这一节里的函数都使用针孔相机模型,这就是说,一幅视图是通过透视变换将三维空间中的点投影到图像平面。投影公式如下: 或者 这里(X, Y, Z)是一个点的世界坐标,(u, v)是点投影在图像平面的坐标,以像素为单位。A被称作摄像机矩阵,或者内参数矩阵。(cx, cy)是基准点(通常在图像的中心),fx, fy是以像素为单位的焦距。所以如果因为某些因素对来自于摄像机的一幅图像升采样或者降采样,所有这些参数(fx, fy, cx和cy)都将被缩放(乘或者除)同样的尺度。内参数矩阵不依赖场景的视图,一旦计算出,可以被重复使用(只要焦距固定)。旋转-平移矩阵[R|t]被称作外参数矩阵,它用来描述相机相对于一个固定场景的运动,或者相反,物体围绕相机的的刚性运动。也就是[R|t]将点(X, Y, Z)的坐标变换到某个坐标系,这个坐标系相对于摄像机来说是固定不变的

C# 图片自由变换 任意扭曲

别来无恙 提交于 2020-01-13 04:08:46
  之前想过要做个地铁驾驶的游戏,其中想把一些原本是矩形图片弄成一个梯形,但是发现GID+上面没有类似的方法。于是在谷歌谷了一下。没有!只能找到令人垂涎的,并没有源码。按照自己的想法尝试了一两天,有点效果,但实际上不是那样。后来知道那个在数字图像处理中叫“透视变换”。于是上网找了相关资料,原理找了,看了不明白。代码没多少,有ActionScript的,不明;有C的,不明。真笨啊!后来在CodeProject上面看到一份外国人的博文,全英文看不太明白,但看了一幅图,大概知道他意思了。下了份源码看看,C++的。好不容易翻译成C#的(感觉还是保留了不少C++风格的东西),编译通过,运行正常。后来才一步一步的阅读代码。还没全懂,先把懂的部分记录下来。以后继续研究继续补充。   先看看效果   界面是仿照某个人(网上版本太多,找不到原作者)的弄出来的,界面不是重点,重点是算法。下面就直接贴老外的那幅图大致讲讲思想。   首先是从原本图片转化成一幅理想化的目标图片,那幅图片只是理想化的,最终的图片是最右边的那幅。转换的过程就是根据转换后图片的四个角计算出目标图片的size,生成一个矩阵,就是那个Destination Image,然后把理想化的目标图片覆盖过去,把理想化图片的每个“像素格”(已经不是真正的像素格了,因为经过了扭曲变形)跟那个矩阵对比,看看覆盖了哪些格子,覆盖的面积有多少

Android开发笔记:屏幕适配

橙三吉。 提交于 2020-01-12 17:05:33
这几天刚刚接触了新的项目,做一个android客户端。本周的工作是完成客户端的UI界面和功能实现,但是对于Android开发最头疼的部分,即是对于纷杂的屏幕做适配的工作现在来说是最棘手的! 图像显示所需的概念: 像素: 一幅图片的显示就是由许多显示着不同颜色的小方格组成的,这样的小方格就被称为像素,是构成图片的最小单位.但是这个像素的具体大小是多少呢?这需要取决于显示这张图片的具体的物理设备显示一个图片像素点的荧光点的大小.图片文件只是记录着它自身有多少个像素点,每个像素点显示什么颜色,至于它自身物理尺寸有多大,它自身也无法得知,例如一张480*800像素的图片在电脑显示器上显示明显要比在手机屏幕上显示大很多,而这张图片本身并没有改变.只是手机的屏比电脑显示器的屏要精细许多,也就是每一个物理像素点要小许多,密度也就大许多. 分辨率: 分为“图像分辨率”与“物理显示分辨率”。它们都是水平像素点数与垂直像素点数的乘积,也就是像素总和数。图像分辨率是指图片文件记录着自身所有的像素数。物理显示分辨率是指物理显示屏水平与垂直能显示的像素数的乘积.有的人说分辨率越高,显示的图片就越清晰,这点是针对物理尺寸相同的情况而言,因为一样的分辨率有可能尺寸可能不一样大,这样光就分辨率来比较清晰度没有可比性. 密度: 就是物理设备上单位尺寸里的像素数,当然是密度越大图片显示就越清晰了.

COCO数据集合格式

主宰稳场 提交于 2020-01-12 11:31:15
COCO数据集合格式 Y_Wolf(2020.01.12) “captions” : 看图说话 根据图片对对象进行描述 “info” : 基本信息 “year” : 年份(int) “version” : 版本编号(str) “description” : 数据集描述(str) “contributor” : 提供者(str) “url”: 下载地址(str) “date_created”: 创建日期(datetime) “licenses” : 图片许可证 “id” : 许可证ID(int) “name” : 许可证说明(str) “url” : 图片来源(str) “images” : 图片信息 “id” : 图片ID——不重复(int) “width” : 图片像素宽度 (int) “height”: 图片像素高度(int) “file_name” : 图片名称(str) “license” : 许可证ID(int) “flickr_url”: 图片在flickr上的地址(str) Flickr是雅虎的一个图片存储和视频托管网站 “coco_url” : 图片地址(str) “date_captured” : 数据获取日期(datetime) “annotations” : 对象信息 “id” : 对象ID(int) 因为一张图片可以有很多个对象,比如一个服装模特图

人工智能实验四:深度学习算法及应用(DNN&CNN)

走远了吗. 提交于 2020-01-12 08:43:37
人工智能实验四报告:深度学习算法及应用 文章目录 人工智能实验四报告:深度学习算法及应用 实验目的 实验要求 实验硬件 实验软件 实验内容与步骤 MNIST数据集 具体实现 DNN(深度神经网络) 概述 具体设计 代码实现 结果输出 结果分析 为啥我又用了CNN(卷积神经网络)? CNN(卷积神经网络) 概述 具体设计 代码实现 结果输出 结果分析 思考题 实验目的 了解深度学习的基本原理 能够使用深度学习开源工具识别图像中的数字 了解图像识别的基本原理 实验要求 解释深度学习原理 对实验性能进行分析 回答思考题 实验硬件 计算机 实验软件 软件:windows操作系统 应用软件:TensorFlow、PyCharm、Python、Google Colab 实验内容与步骤 安装开源深度学习工具设计并实现一个深度学习模型,它能够学习识别图像中的数字序列。使用数据训练它,可以使用人工合成的数据(推荐),或直接使用现实数据。 MNIST数据集 通过下面的代码我们可以对其中的图片有一个大致的把握: import matplotlib . pyplot as plt # 训练集 train_images = mnist . train . images train_labels = mnist . train . labels # 验证集 validation_images = mnist

移动端适配 - 原理篇

半城伤御伤魂 提交于 2020-01-12 08:22:40
移动端适配,是我们在开发中经常会遇到的,这里面可能会遇到非常多的问题: 1px问题 UI图完美适配方案 iPhoneX适配方案 横屏适配 高清屏图片模糊问题 ... 上面这些问题可能我们在开发中已经知道如何解决,但是问题产生的原理,以及解决方案的原理可能会模糊不清。在解决这些问题的过程中,我们往往会遇到非常多的概念:像素、分辨率、PPI、DPI、DP、DIP、DPR、视口等等。 本文将从移动端适配的基础概念出发,探究移动端适配各种问题的解决方案和实现原理。 一、英寸 一般用英寸描述屏幕的物理大小,如电脑显示器的17、22,手机显示器的4.8、5.7等使用的单位都是英寸。 英寸和厘米的换算:1英寸 = 2.54 厘米 二、物理像素 2.1 像素 像素即一个小方块,它具有特定的位置和颜色。 图片、电子屏幕(手机、电脑)就是由无数个具有特定颜色和特定位置的小方块拼接而成。 像素可以作为图片或电子屏幕的最小组成单位。 2.2 物理像素 到电商网站购买手机,都会看一看手机的参数,以apple的官网上对手机分辨率的描述为例: iPhone XS Max 和 iPhone SE的分辨率分别为2688 x 1242和1136 x 640。表示手机分别在垂直和水平上所具有的像素点数。 这里描述的就是屏幕实际的物理像素,即一个屏幕具体由多少个像素点组成。 屏幕从工厂出来那天起

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

PAT乙级真题 1068 万绿丛中一点红 C++实现

偶尔善良 提交于 2020-01-11 17:43:50
题目 对于计算机而言,颜色不过是像素点对应的一个 24 位的数值。现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围 8 个相邻像素的颜色差充分大。 输入格式: 输入第一行给出三个正整数,分别是 M 和 N(≤ 1000),即图像的分辨率;以及 TOL,是所求像素点与相邻点的颜色差阈值,色差超过 TOL 的点才被考虑。随后 N 行,每行给出 M 个像素的颜色值,范围在 [0,224) 内。所有同行数字间用空格或 TAB 分开。 输出格式: 在一行中按照 (x, y): color 的格式输出所求像素点的位置以及颜色值,其中位置 x 和 y 分别是该像素在图像矩阵中的列、行编号(从 1 开始编号)。如果这样的点不唯一,则输出 Not Unique;如果这样的点不存在,则输出 Not Exist。 输入样例 1: 8 6 200 0 0 0 0 0 0 0 0 65280 65280 65280 16711479 65280 65280 65280 65280 16711479 65280 65280 65280 16711680 65280 65280 65280 65280 65280 65280 65280 65280 65280 165280 165280 65280 65280 16777015 65280

PS要点

僤鯓⒐⒋嵵緔 提交于 2020-01-11 08:19:19
1.通道 意味着我们同过不同的角度来看图像,可以得到不同的图像信息,PS是以灰度图像来表现这种信息的强弱。 我们能看到什么取决于我们的视角。任何灰度图像都可以按照不同的规则来构成彩色图像。 通道除了能存放颜色信息,还能存放选择信息。 2.路径 可以转换为选区,也可以转换为矢量蒙板。与矢量蒙版对应的是点阵蒙版,二者可以搭配使用。 3.透明背景的时候可以用橡皮擦工具 4.注意如果图层是背景图层,要先解锁,然后才能进行选择删除操作 5.按住ctrl+鼠标左键可以快速选定图层,ctrl+j复制图层,按住alt然后再用鼠标拖动也可以复制图层。 6.双击放大镜工具可以将图层恢复到初始的尺寸,双击抓手工具可以将图层按当前工作区的大小铺开,ctrl+shift+I反选选区,图层和蒙版的链接符号表示图层移动时,蒙板也跟着移动,反之没有链接符号,蒙板不随图层移动,按住Alt +滑动鼠标滚轮可以对画布进行缩放, ctrl+r显示/隐藏标尺工具,左键单击标尺拖入图层,可以显示参考线,按住参考线拖入标尺,可以删除参考线,或者从视图菜单中选择清除所有参考线,已将全部参考线清除。 7. 我把画笔渐变图章这一类的工具称为像素工具组,这是最大的一个工具组,而路径钢笔工具等贝塞尔曲线之类的称为路径工具组或者矢量工具组,移动剪切选区这一些算是选择工具组。 8.按alt +图层上的小眼睛,可以只显示当前选中图层。 9